|
1、概述
通常,從一個(gè)發(fā)布版本升級(jí)到另一個(gè)版本時(shí),我們建議按照順序來升級(jí)版本。例如,想要升級(jí) MySQL 3.23 時(shí),先升級(jí)到 MySQL 4.0,而不是直接升級(jí)到 MySQL 4.1 或 MySQL 5.0。
以下是在升級(jí) MySQL 時(shí)需要注意的事項(xiàng):
- 仔細(xì)閱讀一下升級(jí)的目標(biāo)版本的新特性和改變的特性,以及2個(gè)版本之間的不同特性
- 升級(jí)前一定要備份所有的數(shù)據(jù)
- 如果是在Windows平臺(tái)上升級(jí)MySQL,請(qǐng)閱讀附錄"
- 如果之前運(yùn)行著MySQL-Max發(fā)布版本,想要升級(jí)到非MySQL-Max發(fā)布版本時(shí),就需要從 mysqld_safe 去掉啟動(dòng) mysqld-max服務(wù)器
的參數(shù)
在同一個(gè)發(fā)布系列版本的MySQL間,可以隨意拷貝格式文件和數(shù)據(jù)文件。如果在MySQL運(yùn)行過程中改變了字符集,就需要對(duì)每個(gè)MyISAM表執(zhí)行"myisamchk -r -q --set-character-set=charset
"命令修復(fù)一下。否則的話,索引的排序可能不正確,因?yàn)樾薷牧俗址涂赡軙?huì)改變索引的順序。
通常情況下,升級(jí)到新版本不需要修改任何數(shù)據(jù)表。請(qǐng)檢查MySQL發(fā)布事項(xiàng)中提到的升級(jí)需要注意的地方,如果發(fā)現(xiàn)不能直接升級(jí)的話,就先用 mysqldump 將數(shù)據(jù)導(dǎo)出來,然后再導(dǎo)回去。
如果擔(dān)心升級(jí)失敗,就先把舊版本的MySQL改個(gè)名字備份起來,以備所需。
同時(shí),升級(jí)完之后可能還需要重新編譯跟MySQL相關(guān)的程序,因?yàn)樾掳姹镜念^文件和庫文件可能有改變了。
如果升級(jí)后發(fā)生問題了,請(qǐng)先檢查是否使用了舊的my.cnf配置文件,可以通過執(zhí)行命令"mysqld --print-defaults"來打印出各種配置信息來確認(rèn)。
升級(jí)的時(shí)候最好也升級(jí)類似Perl的 DBD::mysql 模塊,同樣,對(duì)php和Python而言也是一樣。
2、從 MySQL 5.0 升級(jí)到 MySQL 5.1
從 5.0 升級(jí)到 5.1 的時(shí)候,必須要升級(jí)授權(quán)表。否則,可能某些存儲(chǔ)過程無法運(yùn)行。詳情請(qǐng)看附錄" 以下是從 5.0 升級(jí)到 5.1 需要注意的事項(xiàng): 以下是升級(jí)到MySQL 5.1之后會(huì)發(fā)生的一些變化:
不兼容的變化:MySQL 5.1 實(shí)現(xiàn)了支持無需重啟服務(wù)器就能在運(yùn)行時(shí)加載或卸載API插件。這個(gè)特性需要用到mysql.plugin表,可以運(yùn)行"mysql_upgrade"命令來創(chuàng)建該表
插件安裝在系統(tǒng)變量
plugin_dir
所指的目錄下。這個(gè)變量也控制著用戶自定義函數(shù)(UDFs)所在目錄,這相對(duì)以前的版本有所改變。在MySQL 5.1中,所有的UDFs庫必須都安裝到plugin_dir
目錄下,從舊版本升級(jí)的時(shí)候,必須把那些庫文件都移動(dòng)到這個(gè)目錄下- 不兼容的變化:系統(tǒng)變量
table_cache
改名為table_open_cache
- 不兼容的變化:在MySQL 5.1.6 中 FULLTEXT 的索引結(jié)構(gòu)發(fā)生變化了。當(dāng)升級(jí)到 5.1.6 甚至更高之后,需要對(duì)每個(gè)包含 FULLTEXT 字段的數(shù)據(jù)表執(zhí)行"REPAIR TABLE"語句
- 在 MySQL 5.1.6 以前,MySQL把普通的查詢?nèi)罩竞吐樵兌紝懙轿募小?.1.6以后,這些日志可以靈活地選擇是是寫到日志文件中(跟以前一樣)或者寫到
mysql
數(shù)據(jù)庫的general_log
和slow_log
表中。如果啟用日志記錄,這2種方式都可以使用。選項(xiàng)--log-output
用來控制這2種日志的記錄方式 - 從5.1.6開始,特殊字符集的數(shù)據(jù)庫和表的標(biāo)識(shí)符在創(chuàng)建相應(yīng)目錄和文件時(shí)都會(huì)用對(duì)應(yīng)的字符集編碼了
SQL分:
- 不兼容的變化:在MySQL 5.1.8開始,
TYPE =
還仍然是engine_name
ENGINE =
的同義語法,但有警告。從5.2開始,將完全刪除這種語法,并報(bào)告錯(cuò)誤。engine_name
- 不兼容的變化:在MySQL 5.0.10中,觸發(fā)器的命名空間已經(jīng)改變了。在以前,觸發(fā)器的名字必須和每個(gè)數(shù)據(jù)表都不一樣。現(xiàn)在,只需要在數(shù)據(jù)庫內(nèi)唯一就行了。隱含的變化就是,
DROP TRIGGER
語法使用模式名而非數(shù)據(jù)表名(模式名是可選參數(shù),如果忽略了,就使用當(dāng)前的模式)當(dāng)從5.0升級(jí)到5.0.10及更高時(shí),則必須刪除觸發(fā)器后重新創(chuàng)建它們,否則升級(jí)后就無法刪除觸發(fā)器了。建議如下:
- 導(dǎo)出觸發(fā)器:
SELECT CONCAT('CREATE TRIGGER ', t.TRIGGER_SCHEMA, '.', t.TRIGGER_NAME,
' ', t.ACTION_TIMING, ' ', t.EVENT_MANIPULATION, ' ON ',
t.EVENT_OBJECT_SCHEMA, '.', t.EVENT_OBJECT_TABLE,
' FOR EACH ROW ', t.ACTION_STATEMENT, '//' )
INTO OUTFILE '/tmp/triggers.sql'
FROM INFORMATION_SCHEMA.TRIGGERS AS t;it知識(shí)庫:升級(jí) MySQL,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
- 導(dǎo)出觸發(fā)器: