久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

DBA中如何升級InnoDB Plugin

149次閱讀
沒有評論

共計 2796 個字符,預計需要花費 7 分鐘才能閱讀完成。

DBA 中如何升級 InnoDB Plugin,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

我們將向讀者詳細介紹如何升級動態 InnoDB Plugin 和升級靜態編譯的 InnoDB Plugin,以及如何轉換由 1.0.2 以前版本創建的壓縮表。

一、概述
得益于 MySQL 的插件式存儲引擎體系結構,InnoDB Plugin 的升級變得非常簡單,只需關閉 MySQL,替換與平臺有關的可執行文件,然后重啟服務器即可。如果您希望升級并使用現有的數據庫,那么必須關 閉 MySQL,否則的話,新的插件在合并緩存的插入數據或者清空已刪記錄的時候就會出錯。如果您的數據庫中沒有任何壓縮表,在慢關機后,使用最新的 InnoDB Plugin 處理起數據庫來就不會遇到問題了。
然而,如果您的數據庫中含有壓縮表的話,則不適合使用 InnoDB Plugin 1.0.8。因為 1.0.2 版本的 InnoDB Plugin 引入了一個不兼容的特性,所以一些壓縮表可能需要重建,具體轉換步驟見后文。
當然,我們可以使用 mysqldump 或其他的方法來重建我們的數據庫。如果我們的數據庫較小,或者各個表之間存在許多引用約束的話,那么這是一種較好的方法。
需要注意的是,如果使用 InnoDB Plugin 1.0.8 訪問您的數據庫的話,就不要再試圖用 1.0.2 之前的插件來訪問它們了。
二、升級動態 InnoDB Plugin
在關閉包含 InnoDB Plugin 的 MySQL 服務器之前,我們必須啟用慢關閉功能,設置如下所示:

雙擊代碼全選
1SET GLOBAL innodb_fast_shutdown=0;

在 MySQL 服務器在其中尋找插件的目錄內,將舊 InnoDB Plugin (ha_innodb_plugin.so 或 ha_innodb_plugin.dll)的可執行文件重新命名,以便在需要的時候可以恢復它們。過后,我 們也可以刪除這些文件。插件所在的目錄是由系統變量 plugin_dir 指定的。默認的位置通常是在 basedir 指定的目錄的 lib/plugin 子目 錄中。
首先,我們需要根據自己的服務器平臺、操作系統和 MySQL 版本來下載合適的程序包。然后利用相應的工具進行解壓縮,在 Linux 和 Unix 系統下通常使用 tar,在 Windows 系統中通常使用 WinZip 等工具軟件。將文件 ha_innodb_plugin.so 或 ha_innodb_plugin.dll 復制至 MySQL 服務器在其中尋找插件的目錄下。
啟動 MySQL 服務器。如果需要的話,可以按照后文介紹的方法來轉換壓縮表。
三、升級靜態編譯的 InnoDB Plugin
就像動態安裝 InnoDB Plugin 一樣,我們需要慢關閉 MySQL 服務器。如果您的 MySQL 是從源代碼編譯過來并用源代碼樹中的 InnoDB Plugin 替換了 MySQL 內建的 InnoDB 的話,那么實際上您就會得到一個特殊版本的包含 InnoDB Plugin 的 mysqld 可執行文件。
如果您想升級到一個動態鏈接的 InnoDB Plugin,則需要先卸載靜態編譯的 InnoDB Plugin,然后再安裝作為共享庫發行的預編譯 InnoDB Plugin。
如果您想從一個靜態編譯的 InnoDB Plugin 版本升級到另一個靜態編譯的 InnoDB Plugin 版本的話,則必須先重新構建一個 mysqld 可執行文件,關閉服務器,然后替換 mysqld 可執行文件,再啟動服務器。
不管怎樣,如果數據庫含有壓縮表的話,務必按照后文介紹的方法轉換壓縮表。
四、轉換由 1.0.2 以前版本創建的壓縮表
InnoDB Plugin 的 1.0.2 版本引入了一個不兼容的壓縮表格式。這意味著,InnoDB Plugin 早期版本創建的一些壓縮表,必須使用更大的 KEY_BLOCK_SIZE 重新構建之后才能夠繼續使用。
升級到 InnoDB Plugin 1.0.2 或更高版本的時候,如果必須保持現有的數據庫的話,則需要慢關閉正在運行早先版本 InnoDB Plugin 的 MySQL。之后,確定出哪些壓縮表需要轉換,繼而使用新版本的 InnoDB Plugin 升級這些表。具體操作如下所示。
下面介紹如何處理由 1.0.0 版本或 1.0.1 版本的 InnoDB Plugin 所創建的壓縮表。由于新版本中引入了一個不兼容的特性,所以新 InnoDB Plugin 從壓縮表清除已刪記錄或者合并緩沖的插入記錄時,會遇到問題。然而,也不是所有的壓縮表都需要重新構建。這里我們將為讀者介紹如何識別和處理 這些需要重建的壓縮表。
如果現有的數據庫包含有之前版本 InnoDB Plugin 所創建的表的話,必須使用慢關閉使用舊的 InnoDB Plugin 的 MySQL 服務器。即,在關閉 InnoDB Plugin 舊實例之前,需要設置 SET GLOBAL innodb_fast_shutdown=0。
在啟動升級了 InnoDB Plugin 的 MySQL 服務器之后,必須檢查壓縮表是否已經轉換。首先,啟用 InnoDB 的 strict 模式進行更為細致的錯誤檢查:SET SESSION innodb_strict_mode = 1。然后,為每一個壓縮表生成一個對應的新表。我們可以通過以下步驟完成:
1. 列出壓縮表:

雙擊代碼全選

5

SELECT table_schema, 

table_name
 

FROM information_schema.tables
 

WHERE engine= rsquo;innodb rsquo; A

ND row_format= rsquo;COMPRESSED rsquo;

2. 對于每個表,顯示其表的定義:SHOW CREATE TABLE table_schema.table_nameG
3. 使用不同的表名執行 CREATE TABLE 語句。
4. 如果表創建成功,刪除新建的表,繼續處理下一個壓縮表。
5. 如果表創建失敗,則嘗試用更大的 KEY_BLOCK_SIZE,直到成功為止。然后刪除新創的表,使用剛才成功執行 CREATE TABLE 的 KEY_BLOCK_SIZE 對原始表執行 ALTER TABLE。
如果某些特殊的表不允許增加 KEY_BLOCK_SIZE,則可以用較短的列索引長度來重建表。這是因為用于索引的列前綴會占用 B 樹結點中的大量空間。較短的前綴減少了索引的精選,但是索引記錄會更短,以便它們適于頁面大小。較短的前綴還意味著更多的索引項適于 B 樹結點,從而提高了效率。
如果各個表之間存在引用約束的話,上述過程將會更加復雜,所以更好的選擇是聯合使用舊的 InnoDB Plugin 和 mysqldump,然后用 InnoDB Plugin 1.0.2 把數據載入新的數據庫中。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-17發表,共計2796字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宝丰县| 米林县| 光泽县| 宾阳县| 双鸭山市| 宜宾市| 安泽县| 庐江县| 杭锦后旗| 梨树县| 佛教| 驻马店市| 龙南县| 石嘴山市| 南雄市| 页游| 绥化市| 孟村| 土默特右旗| 自治县| 莱州市| 会理县| 宜兰县| 宽城| 石林| 深泽县| 九江市| 都昌县| 建宁县| 瑞金市| 新泰市| 福安市| 泊头市| 拜泉县| 河曲县| 津南区| 大渡口区| 靖江市| 门源| 天台县| 兴和县|