MySQL系列 - MySQL升級最佳實踐


三、MySQL系列 - MySQL各版本升級最佳實踐


一、升級前注意事項

在開始之前,你要意識到這是一個很慎重的操作,將一步跨過一個重要的MySQL版本。也就是說,這是有風險的。用二進制文件升級是不建議的,而且這樣直接跨越一個重要版本也是不安全的,所以你絕不能這樣5.0->5.5,5.1->5.6,或者5.0->5.6做。有一個問題是,MySQL版本不是所有改變都前向兼容的。新版本中介紹的一些改變可能不僅會影響數據如何處理,還會影響服務器行為包括SQL語句和MySQL服務器和內部存儲引擎(此處不知標准否)。另一個問題是MySQL5.0與5.6版本之間的變化,一些默認的設置變量被改變了,這可能會導致結果完全不一樣或者行為完全不同。例如:MySQL5.5的默認存儲引擎是InnoDB,MySQL5.6的存儲引擎InnoDB將可以為每個數據庫表創建單獨表空間(separate tablespace),還有GTID復制(GTID replication)也被引入。有太多細節這里就不一一列舉了,所有這些改變都被描述在MySQL的“升級文檔”中,詳情可以查看升級文檔

二、兩種升級方式

  • 通常情況下,有兩中升級方式:
    • 直接升級:安裝好新版本數據庫后,利用已經存在的數據文件夾,同時運行mysql_upgrade腳本來升級。
    • SQL 導出: 從一個較老版本的mysql把數據導出,然后恢復到新版本的數據庫中。(利用mysqldump工具)。
      相比之下,第二種方式更安全些,但是這也會使得升級的過程要慢一些。
      理論上講,最安全的方式是:
      • 導出所有用戶的權限
      • 導出所有數據並恢復到新版本數據庫中
      • 恢復用戶權限到新數據庫中

三、具體步驟

  • 獲取用戶和權限信息. 該操作會備份所有用戶的權限.
 
 
 
         
  1. $ wget percona.com/get/pt-show-grants;
  2. $ perl pt-show-grants --user=root --password=root --flush > /root/grants.sql
  • dump 數據庫實例的所有信息(除去mysql, information_schema 和performance_schema數據庫).
 
 
 
         
  1. $ mysql -uroot -proot -BNe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'performance_schema', 'information_schema')" | tr 'n' ' ' > /root/dbs-to-dump.sql
  2. $ mysqldump --routines --events --single-transaction --databases $(cat /root/dbs-to-dump.sql) > /root/full-data-dump.sql
  • 停止數據庫
 
 
 
         
  1. $ service mysql stop
  2. or
  3. $ /etc/init.d/mysql stop
  • 移動舊數據庫(5.5版本)的數據目錄(假設是/var/lib/mysql,此處應該改為你自己的數據目錄)
 
 
 
         
  1. $ mv /var/lib/mysql/ /var/lib/mysql-55
  • 安裝5.6版本(按照正常安裝流程). 如果你不是用的yum/apt-get方式安裝的,你需要執行 mysql_install_db 和mysql_upgrade兩個命令.
  • 將在1)操作中導出的用戶信息導入到新數據庫中.
 
 
 
         
  1. mysql -uroot < /root/grants.sql
  • 將2)導出的數據導入到新數據庫.
 
 
 
         
  1. $ mysql -e "SET GLOBAL max_allowed_packet=1024*1024*1024";
  2. $ mysql -uroot -p --max-allowed-packet=1G < /root/full-data-dump.sql;

四、MySQL官方文檔步驟







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM