採用停機升級方案(非主從切換),在現有環境下協調應用停機窗口,通過 RPM 包卸載舊版、安裝新版、執行 mysql_upgrade 完成系統表結構遷移。適用於單實例、非極高可用性要求場景。
# 檢查 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 滿足。
mysql -uroot -h127.0.0.1 -P3306 -e 'SHOW PROCESSLIST;' # 確認無活躍業務連接
mysqldump -uroot -h127.0.0.1 -P3306 \ --databases mysql performance_schema information_schema \ > /home/mysql/backup_$(date +%F).sql
下載對應平台 RPM:
上傳至目標服務器 /tmp/mysql56_rpms/
# 錯誤日誌 tail -f /home/mysql/logs/err-log/mysql-err.log # 操作審計 # SecureCRT/Termius 開啟會話日誌記錄
mysqladmin --defaults-file=/home/mysql/my_cnf/my_3306.cnf -uroot shutdown
rpm -e MySQL-server-advanced-5.5.23-1.rhel5 rpm -e MySQL-client-advanced-5.5.23-1.rhel5
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
nohup mysqld_safe --defaults-file=/home/mysql/my_cnf/my_3306.cnf &
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
此步驟會檢查並修復所有系統表結構,兼容新版權限體系、性能表結構變更。
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
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\G | Running |
| 應用煙霧測試 | 核心 CRUD 接口調用 | 成功 |
my.cnf 備份/var/lib/mysql 未變(升級不遷移數據文件)mysql_upgrade(降級也需執行)strings /lib64/libc.so.6 | grep GLIBC_mysqld --help --verbose 調整 my.cnfNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,可能導致應用報錯,需測試兼容performance_schema 表結構大幅調整,mysql_upgrade 必須執行mysql_native_password/sha256_password,舊密碼哈希需遷移