日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
DBA應(yīng)用技巧:如何升級(jí)InnoDBPlugin

本文中,我們將向讀者詳細(xì)介紹如何升級(jí)動(dòng)態(tài)InnoDB Plugin和升級(jí)靜態(tài)編譯的InnoDB Plugin,以及如何轉(zhuǎn)換由1.0.2以前版本創(chuàng)建的壓縮表。

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)原平,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

一、概述

得益于MySQL的插件式存儲(chǔ)引擎體系結(jié)構(gòu),InnoDB Plugin的升級(jí)變得非常簡(jiǎn)單,只需關(guān)閉MySQL,替換與平臺(tái)有關(guān)的可執(zhí)行文件,然后重啟服務(wù)器即可。如果您希望升級(jí)并使用現(xiàn)有的數(shù)據(jù)庫(kù),那么必須關(guān)閉MySQL,否則的話,新的插件在合并緩存的插入數(shù)據(jù)或者清空已刪記錄的時(shí)候就會(huì)出錯(cuò)。如果您的數(shù)據(jù)庫(kù)中沒有任何壓縮表,在慢關(guān)機(jī)后,使用最新的InnoDB Plugin處理起數(shù)據(jù)庫(kù)來就不會(huì)遇到問題了。

然而,如果您的數(shù)據(jù)庫(kù)中含有壓縮表的話,則不適合使用InnoDB Plugin 1.0.8。因?yàn)?.0.2版本的InnoDB Plugin引入了一個(gè)不兼容的特性,所以一些壓縮表可能需要重建,具體轉(zhuǎn)換步驟見后文。

當(dāng)然,我們可以使用mysqldump或其他的方法來重建我們的數(shù)據(jù)庫(kù)。如果我們的數(shù)據(jù)庫(kù)較小,或者各個(gè)表之間存在許多引用約束的話,那么這是一種較好的方法。

需要注意的是,如果使用InnoDB Plugin 1.0.8訪問您的數(shù)據(jù)庫(kù)的話,就不要再試圖用1.0.2之前的插件來訪問它們了。

二、升級(jí)動(dòng)態(tài)InnoDB Plugin

在關(guān)閉包含InnoDB Plugin的MySQL服務(wù)器之前,我們必須啟用慢關(guān)閉功能,設(shè)置如下所示:

 
 
 
  1. SET GLOBAL innodb_fast_shutdown=0;

在MySQL服務(wù)器在其中尋找插件的目錄內(nèi),將舊InnoDB Plugin (ha_innodb_plugin.so或ha_innodb_plugin.dll)的可執(zhí)行文件重新命名,以便在需要的時(shí)候可以恢復(fù)它們。過后,我們也可以刪除這些文件。插件所在的目錄是由系統(tǒng)變量plugin_dir指定的。默認(rèn)的位置通常是在basedir指定的目錄的lib/plugin子目錄中。

首先,我們需要根據(jù)自己的服務(wù)器平臺(tái)、操作系統(tǒng)和MySQL版本來下載合適的程序包。然后利用相應(yīng)的工具進(jìn)行解壓縮,在Linux和Unix系統(tǒng)下通常使用tar,在Windows系統(tǒng)中通常使用WinZip等工具軟件。將文件ha_innodb_plugin.so或ha_innodb_plugin.dll復(fù)制至MySQL服務(wù)器在其中尋找插件的目錄下。

啟動(dòng)MySQL服務(wù)器。如果需要的話,可以按照后文介紹的方法來轉(zhuǎn)換壓縮表。

三、升級(jí)靜態(tài)編譯的InnoDB Plugin

就像動(dòng)態(tài)安裝InnoDB Plugin一樣,我們需要慢關(guān)閉MySQL服務(wù)器。如果您的MySQL是從源代碼編譯過來并用源代碼樹中的InnoDB Plugin替換了MySQL內(nèi)建的InnoDB的話,那么實(shí)際上您就會(huì)得到一個(gè)特殊版本的包含InnoDB Plugin的mysqld可執(zhí)行文件。

如果您想升級(jí)到一個(gè)動(dòng)態(tài)鏈接的InnoDB Plugin,則需要先卸載靜態(tài)編譯的InnoDB Plugin,然后再安裝作為共享庫(kù)發(fā)行的預(yù)編譯InnoDB Plugin。

如果您想從一個(gè)靜態(tài)編譯的InnoDB Plugin版本升級(jí)到另一個(gè)靜態(tài)編譯的InnoDB Plugin版本的話,則必須先重新構(gòu)建一個(gè)mysqld可執(zhí)行文件,關(guān)閉服務(wù)器,然后替換mysqld可執(zhí)行文件,再啟動(dòng)服務(wù)器。

不管怎樣,如果數(shù)據(jù)庫(kù)含有壓縮表的話,務(wù)必按照后文介紹的方法轉(zhuǎn)換壓縮表。

四、轉(zhuǎn)換由1.0.2以前版本創(chuàng)建的壓縮表

InnoDB Plugin的1.0.2版本引入了一個(gè)不兼容的壓縮表格式。這意味著,InnoDB Plugin早期版本創(chuàng)建的一些壓縮表,必須使用更大的KEY_BLOCK_SIZE重新構(gòu)建之后才能夠繼續(xù)使用。

升級(jí)到InnoDB Plugin 1.0.2或更高版本的時(shí)候,如果必須保持現(xiàn)有的數(shù)據(jù)庫(kù)的話,則需要慢關(guān)閉正在運(yùn)行早先版本InnoDB Plugin的MySQL。之后,確定出哪些壓縮表需要轉(zhuǎn)換,繼而使用新版本的InnoDB Plugin升級(jí)這些表。具體操作如下所示。

下面介紹如何處理由1.0.0版本或1.0.1版本的InnoDB Plugin所創(chuàng)建的壓縮表。由于新版本中引入了一個(gè)不兼容的特性,所以新InnoDB Plugin從壓縮表清除已刪記錄或者合并緩沖的插入記錄時(shí),會(huì)遇到問題。然而,也不是所有的壓縮表都需要重新構(gòu)建。這里我們將為讀者介紹如何識(shí)別和處理這些需要重建的壓縮表。

如果現(xiàn)有的數(shù)據(jù)庫(kù)包含有之前版本InnoDB Plugin所創(chuàng)建的表的話,必須使用慢關(guān)閉使用舊的InnoDB Plugin的MySQL服務(wù)器。即,在關(guān)閉InnoDB Plugin舊實(shí)例之前,需要設(shè)置SET GLOBAL innodb_fast_shutdown=0。

在啟動(dòng)升級(jí)了InnoDB Plugin的MySQL服務(wù)器之后,必須檢查壓縮表是否已經(jīng)轉(zhuǎn)換。首先,啟用InnoDB的strict模式進(jìn)行更為細(xì)致的錯(cuò)誤檢查:SET SESSION innodb_strict_mode = 1。然后,為每一個(gè)壓縮表生成一個(gè)對(duì)應(yīng)的新表。我們可以通過以下步驟完成:

1. 列出壓縮表:

 
 
 
  1. SELECT table_schema, table_name
  2. FROM information_schema.tables
  3. WHERE engine=’innodb’ AND row_format=’COMPRESSED’;

2. 對(duì)于每個(gè)表,顯示其表的定義:SHOW CREATE TABLE table_schema.table_name\G

3. 使用不同的表名執(zhí)行CREATE TABLE語句。

4. 如果表創(chuàng)建成功,刪除新建的表,繼續(xù)處理下一個(gè)壓縮表。

5. 如果表創(chuàng)建失敗,則嘗試用更大的KEY_BLOCK_SIZE,直到成功為止。然后刪除新創(chuàng)的表,使用剛才成功執(zhí)行CREATE TABLE的KEY_BLOCK_SIZE對(duì)原始表執(zhí)行ALTER TABLE。

如果某些特殊的表不允許增加KEY_BLOCK_SIZE,則可以用較短的列索引長(zhǎng)度來重建表。這是因?yàn)橛糜谒饕牧星熬Y會(huì)占用B樹結(jié)點(diǎn)中的大量空間。較短的前綴減少了索引的精選,但是索引記錄會(huì)更短,以便它們適于頁(yè)面大小。較短的前綴還意味著更多的索引項(xiàng)適于B樹結(jié)點(diǎn),從而提高了效率。

如果各個(gè)表之間存在引用約束的話,上述過程將會(huì)更加復(fù)雜,所以更好的選擇是聯(lián)合使用舊的InnoDB Plugin和mysqldump,然后用InnoDB Plugin 1.0.2把數(shù)據(jù)載入新的數(shù)據(jù)庫(kù)中。

五、小結(jié)

本文中,我們向讀者詳細(xì)介紹了如何升級(jí)動(dòng)態(tài)InnoDB Plugin和升級(jí)靜態(tài)編譯的InnoDB Plugin,以及如何轉(zhuǎn)換由1.0.2以前版本創(chuàng)建的壓縮表。


文章名稱:DBA應(yīng)用技巧:如何升級(jí)InnoDBPlugin
當(dāng)前URL:http://www.5511xx.com/article/cdesshh.html