首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.5 升級 5.6 實戰步驟:in-place 升級與 mysql_upgrade 字典更新全流程

     編輯:MySQL 綜合教學

MySQL 5.5 升級 5.6 實戰步驟:in-place 升級與 mysql_upgrade 字典更新全流程

生產環境 MySQL 5.5.x 就地升級至 5.6.x 的標準化操作手冊。採用「替換二進制、保留資料目錄、skip-grant-tables 免密啟動、mysql_upgrade 修正系統表、權限刷新」流程,適合獨立表空間架構,零資料遷移、停機時間僅需重啟耗時。

前置條件

  • 已備份資料目錄(/data/mysql3306)
  • 確認使用 獨立表空間(innodb_file_per_table=1),共享表空間建議邏輯導出導入
  • 下載 MySQL 5.6.28 Linux Generic 二進制包

升級操作步驟

1. 停止舊實例並備份目錄

service mysqld stop
mv /usr/local/mysql /usr/local/mysql.bak
cp -ar /data/mysql3306 /data/mysql3306.bak

2. 部署新版二進制並建立軟連結

tar zxf mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -s mysql-5.6.28-linux-glibc2.5-x86_64 mysql
cp -ar /usr/local/mysql.bak/my.cnf /usr/local/mysql/

3. 啟用 skip-grant-tables 免密啟動

編輯 /usr/local/mysql/my.cnf,在 [mysqld] 區段新增:

skip-grant-tables

啟動服務:

service mysqld start

4. 執行 mysql_upgrade 修正系統表

mysql_upgrade -P3306 -u root -p'old_password'
# 輸出需確認所有表檢查為 OK,僅允許 warning

作用:

  • 檢查/修復所有表相容性(CHECK TABLE ... FOR UPGRADE)
  • 更新 mysql 系統庫授權表結構(新增 password_expired、account_locked 等 5.6 新欄位)
  • 刷新權限快取

5. 登入驗證版本並刷新權限

mysql -u root -p
# 提示符應顯示 5.6.28
mysql> FLUSH PRIVILEGES;

6. 移除 skip-grant-tables 並重啟

註解或刪除 my.cnf 中的 skip-grant-tables,重啟服務:

service mysqld restart

7. 事後驗證

  • 錯誤日誌無 ERROR 等級異常
  • 核心業務查詢、寫入、複制狀態正常
  • SHOW VARIABLES LIKE 'version' 確認 5.6.x

關鍵注意事項

回滾方案

若升級後出現嚴重相容性問題:

service mysqld stop
rm -rf /usr/local/mysql
mv /usr/local/mysql.bak /usr/local/mysql
cp -ar /data/mysql3306.bak /data/mysql3306
service mysqld start

總結

MySQL 5.5 → 5.6 in-place 升級核心在於 二進制熱插拔 + mysql_upgrade 字典修正 + 權限刷新。獨立表空間架構下,整個過程可控制在 10 分鐘內(視資料量與 mysql_upgrade 耗時),風險可控、回滾迅速,是生產環境首選升級路徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
項目說明
跨版本限制不可跳級:5.1 → 5.5 → 5.6 → 5.7 → 8.0 必須逐版升級
共享表空間建議 mysqldump 導出 → 新版導入,避免 ibdata1 結構不相容
參數相容5.6 新增/廢棄參數需對照 my.cnf 清理,如 innodb_file_io_threads → read/write_io_threads
SQL_MODE5.6 預設 STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,應用需測試相容
字元集建議統一 utf8mb4,升級前後保持一致