|
1、概述
通常,從一個發布版本升級到另一個版本時,我們建議按照順序來升級版本。例如,想要升級 MySQL 3.23 時,先升級到 MySQL 4.0,而不是直接升級到 MySQL 4.1 或 MySQL 5.0。
以下是在升級 MySQL 時需要注意的事項:
- 仔細閱讀一下升級的目標版本的新特性和改變的特性,以及2個版本之間的不同特性
- 升級前一定要備份所有的數據
- 如果是在Windows平臺上升級MySQL,請閱讀附錄"
- 如果之前運行著MySQL-Max發布版本,想要升級到非MySQL-Max發布版本時,就需要從 mysqld_safe 去掉啟動 mysqld-max服務器
的參數
在同一個發布系列版本的MySQL間,可以隨意拷貝格式文件和數據文件。如果在MySQL運行過程中改變了字符集,就需要對每個MyISAM表執行"myisamchk -r -q --set-character-set=charset
"命令修復一下。否則的話,索引的排序可能不正確,因為修改了字符集,就可能會改變索引的順序。
通常情況下,升級到新版本不需要修改任何數據表。請檢查MySQL發布事項中提到的升級需要注意的地方,如果發現不能直接升級的話,就先用 mysqldump 將數據導出來,然后再導回去。
如果擔心升級失敗,就先把舊版本的MySQL改個名字備份起來,以備所需。
同時,升級完之后可能還需要重新編譯跟MySQL相關的程序,因為新版本的頭文件和庫文件可能有改變了。
如果升級后發生問題了,請先檢查是否使用了舊的my.cnf配置文件,可以通過執行命令"mysqld --print-defaults"來打印出各種配置信息來確認。
升級的時候最好也升級類似Perl的 DBD::mysql 模塊,同樣,對php和Python而言也是一樣。
2、從 MySQL 5.0 升級到 MySQL 5.1
從 5.0 升級到 5.1 的時候,必須要升級授權表。否則,可能某些存儲過程無法運行。詳情請看附錄" 以下是從 5.0 升級到 5.1 需要注意的事項: 以下是升級到MySQL 5.1之后會發生的一些變化:
不兼容的變化:MySQL 5.1 實現了支持無需重啟服務器就能在運行時加載或卸載API插件。這個特性需要用到mysql.plugin表,可以運行"mysql_upgrade"命令來創建該表
插件安裝在系統變量
plugin_dir
所指的目錄下。這個變量也控制著用戶自定義函數(UDFs)所在目錄,這相對以前的版本有所改變。在MySQL 5.1中,所有的UDFs庫必須都安裝到plugin_dir
目錄下,從舊版本升級的時候,必須把那些庫文件都移動到這個目錄下- 不兼容的變化:系統變量
table_cache
改名為table_open_cache
- 不兼容的變化:在MySQL 5.1.6 中 FULLTEXT 的索引結構發生變化了。當升級到 5.1.6 甚至更高之后,需要對每個包含 FULLTEXT 字段的數據表執行"REPAIR TABLE"語句
- 在 MySQL 5.1.6 以前,MySQL把普通的查詢日志和慢查詢都寫到文件中。從5.1.6以后,這些日志可以靈活地選擇是是寫到日志文件中(跟以前一樣)或者寫到
mysql
數據庫的general_log
和slow_log
表中。如果啟用日志記錄,這2種方式都可以使用。選項--log-output
用來控制這2種日志的記錄方式 - 從5.1.6開始,特殊字符集的數據庫和表的標識符在創建相應目錄和文件時都會用對應的字符集編碼了
SQL分:
- 不兼容的變化:在MySQL 5.1.8開始,
TYPE =
還仍然是engine_name
ENGINE =
的同義語法,但有警告。從5.2開始,將完全刪除這種語法,并報告錯誤。engine_name
- 不兼容的變化:在MySQL 5.0.10中,觸發器的命名空間已經改變了。在以前,觸發器的名字必須和每個數據表都不一樣。現在,只需要在數據庫內唯一就行了。隱含的變化就是,
DROP TRIGGER
語法使用模式名而非數據表名(模式名是可選參數,如果忽略了,就使用當前的模式)當從5.0升級到5.0.10及更高時,則必須刪除觸發器后重新創建它們,否則升級后就無法刪除觸發器了。建議如下:
- 導出觸發器:
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;鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
- 導出觸發器: