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

MySQL 5.5 就地升級至 5.6 完整操作手冊:RPM 包離線升級實戰

     編輯:MySQL 綜合教學

MySQL 5.5 就地升級至 5.6 完整操作手冊:RPM 包離線升級實戰

採用停機升級方案(非主從切換),在現有環境下協調應用停機窗口,通過 RPM 包卸載舊版、安裝新版、執行 mysql_upgrade 完成系統表結構遷移。適用於單實例、非極高可用性要求場景。

升級前環境檢查

1. 系統依賴兼容性(關鍵)

# 檢查 glibc 版本
rpm -qa | grep glibc
# glibc-2.5-65 ...

# 檢查內核支持的最大 glibc
strings /lib64/libc.so.6 | grep GLIBC_
# GLIBC_2.2.5 ... GLIBC_2.5

# 檢查當前 MySQL 版本
rpm -qa | grep -i mysql
# MySQL-server-advanced-5.5.23-1.rhel5
# MySQL-client-advanced-5.5.23-1.rhel5

⚠️ 新版 RPM 要求的 glibc 必須 ≤ 系統支持的最大版本,否則安裝後無法運行。MySQL 5.6 通常要求 glibc ≥ 2.5,CentOS 6/RHEL 6 滿足。

2. 業務停機確認

mysql -uroot -h127.0.0.1 -P3306 -e 'SHOW PROCESSLIST;'
# 確認無活躍業務連接

3. 備份系統庫(核心)

mysqldump -uroot -h127.0.0.1 -P3306 \
  --databases mysql performance_schema information_schema \
  > /home/mysql/backup_$(date +%F).sql

4. 準備安裝包

下載對應平台 RPM:

  • MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
  • MySQL-devel-5.6.26-1.linux_glibc2.5.x86_64.rpm
  • MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
  • MySQL-shared-5.6.26-1.linux_glibc2.5.x86_64.rpm
  • MySQL-shared-compat-5.6.26-1.linux_glibc2.5.x86_64.rpm

上傳至目標服務器 /tmp/mysql56_rpms/

5. 日誌監控準備

# 錯誤日誌
tail -f /home/mysql/logs/err-log/mysql-err.log

# 操作審計
# SecureCRT/Termius 開啟會話日誌記錄

升級執行步驟

  1. 停止應用服務(協調應用方下線流量)
  2. 停止 MySQL:
    mysqladmin --defaults-file=/home/mysql/my_cnf/my_3306.cnf -uroot shutdown
  3. 卸載舊版 RPM:
    rpm -e MySQL-server-advanced-5.5.23-1.rhel5
    rpm -e MySQL-client-advanced-5.5.23-1.rhel5
  4. 安裝新版 RPM:
    cd /tmp/mysql56_rpms/
    rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
    rpm -ivh MySQL-devel-5.6.26-1.linux_glibc2.5.x86_64.rpm
    rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
    rpm -ivh MySQL-shared-5.6.26-1.linux_glibc2.5.x86_64.rpm
    rpm -ivh MySQL-shared-compat-5.6.26-1.linux_glibc2.5.x86_64.rpm
  5. 啟動新版 MySQL:
    nohup mysqld_safe --defaults-file=/home/mysql/my_cnf/my_3306.cnf &
  6. 執行系統表升級(關鍵步驟):
    mysql_upgrade --protocol=tcp -P3306 -uroot -p
    # 輸出示例:
    # Phase 1/7: Checking and upgrading mysql database
    # Processing databases...
    # mysql.columns_priv                                 OK
    # ...
    # Phase 7/7: Running 'FLUSH PRIVILEGES'
    # OK

    此步驟會檢查並修復所有系統表結構,兼容新版權限體系、性能表結構變更。

  7. 重啟驗證:
    mysqladmin --defaults-file=/home/mysql/my_cnf/my_3306.cnf -uroot -p shutdown
    nohup mysqld_safe --defaults-file=/home/mysql/my_cnf/my_3306.cnf &
    # 觀察錯誤日誌無 ERROR
  8. 遠程連接測試:
    mysql -h "hostname" -P 3306 -u "username" -p'password' -e 'SHOW PROCESSLIST;'

升級後驗證清單

檢查項命令預期結果
版本確認SELECT VERSION();5.6.26
系統表完整性CHECK TABLE mysql.user;OK
權限體系SHOW GRANTS FOR 'root'@'localhost';正常
InnoDB 狀態SHOW ENGINE INNODB STATUS;無錯誤
複製狀態(如有)SHOW SLAVE STATUS\GRunning
應用煙霧測試核心 CRUD 接口調用成功

回滾預案

  1. 保留舊版 RPM 包與 my.cnf 備份
  2. 數據目錄 /var/lib/mysql 未變(升級不遷移數據文件)
  3. 回滾步驟:停新版 → 卸新版 RPM → 裝舊版 RPM → 啟動 → mysql_upgrade(降級也需執行)

避坑指南

  • ⚠️ glibc 不兼容是頭號風險:升級前必須驗證 strings /lib64/libc.so.6 | grep GLIBC_
  • ⚠️ 配置文件參數變更:5.6 新增/廢棄參數,對照 mysqld --help --verbose 調整 my.cnf
  • ⚠️ SQL_MODE 默認變更:5.6 默認開啟 NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,可能導致應用報錯,需測試兼容
  • ⚠️ 性能表結構變更:performance_schema 表結構大幅調整,mysql_upgrade 必須執行
  • ⚠️ 密碼插件變更:5.6 引入 mysql_native_password/sha256_password,舊密碼哈希需遷移
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved