天天看點

mysql 5.1更新到5.5_MySQL5.1更新到5.5注意事項-阿裡雲開發者社群

更新MySQL一條規則: 不能跳過中間的幾個版本。從5.1到5.5更新前的準備:1、備份全部的資料2、通過手冊熟知 其中哪些是不相容的或者說是哪些功能在新版本中已經實作。3、執行mysql_upgrade 更新系統表。 該程式不會更新 help table4、對于rpm包安裝的DB,用戶端和server端都要更新。5、對于UDF,可能 出現的問題就是自己編寫的和系統自帶的沖突,這個時候隻要删除即可。6、對于穩定版的MYSQL,可以嘗試直接移動format 檔案和資料檔案。7、可以先對原先的MYSQL重名名目錄名。新的MYSQL有問題的話,再重新命名回來。8、對于my.cnf的修改, mysqld –print-defaults 可以使用這個進行檢查。9、對于 commands out sync 或者 unexpected core dumps  這個是由于舊的頭檔案和連結庫。mysql.h file and libmysqlclient.a 檢查這兩個檔案是否是 新版本的MYSQL10、進行測試的時候,隻需要就資料庫的mysql 資料庫的全部資料,和其他資料庫的表結構。 然後在測試的DB 上進行更新。對于新版本的資料庫,相關程式接口,連接配接驅動程式 也應該進行相應的更新,有可能出現 java 存儲過程的問題。對于複制過程的更新步驟;更新過程是 先對所有的slave進行更新,最後更新master降級過程:對于 sbr rbr有要求,要求 必須先應用完畢。具體實施注意事項1、備份的時候 用mysqldump 是最安全的。(因為是直接的SQL語句)2、前期版本的bug或者其他問題在更新前是需要注意的。配置檔案的變化;innodb_file_io_threads 變為:innodb_read_io_threads and innodb_write_io_threads3、對于存儲過程中含有repaire table 并且帶有use_frm的選項的時候,應将其先删除,因為該選項會重建索引,由于frm版本不一緻會失敗。4、對于5.5中,flush tables 的一個變種:flush  tables  ta1_name [, tb1_name] ... with read lock對指令行中指出的表進行flush 和鎖表操作。該語句執行的時候,會申請一個互斥鎖,這個時候它會等待事務結束。然後會從table cache中flush tables,再重新打開表,再次申請鎖并将鎖的粒度有互斥降級為共享鎖。這個時候其他線程就可以讀取該表中資料。對于--skip-grant-tables 這個參數的了解:伺服器在啟動的時候,根本不會使用權限系統,這個時候任何人可以連接配接,不受限制的通路所有資料庫。當然 使用 flush-priveliges 或者reload  我們又可以進行權限的檢查。5、對于5.5中,truncate table 對于 含有foreign key 的情況會報錯。6、在更新過程中,保留錯誤日志是很重要的,如果有錯誤資訊正在寫入error log ,這個時候執行flush logs  操作,這個時候 error-log  會變為 error-log.old 可能造成部分資訊的丢失,最好是在啟動mysql之前,将error log 移動到一個新的地方。7、SQL語句的變化,delete 語句中的使用别名:Incorrect:DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;DELETE t1 AS a2 FROM t1 AS a1 INNER JOIN t2 AS a2;Correct:DELETE FROM t1 USING t1 AS a1 INNER JOIN t2 AS a2;DELETE t1 FROM t1 AS a1 INNER JOIN t2 AS a2;

本文轉自 位鵬飛 51CTO部落格,原文連結:http://blog.51cto.com/weipengfei/1109962,如需轉載請自行聯系原作者