mysqldump --all-databases --routines --triggers --events --single-transaction --master-data=2 > backup.sql| 領域 | 變更 | 應對 |
|---|---|---|
| 權限表 | user 表新增 max_questions、max_updates、max_connections、ssl_* 等列 | 升級後必須執行 mysql_upgrade 修正系統表 |
| 密碼加密 | 4.1 引入 41 位雜湊(old_passwords=0),3.23 為 16 位 | 客戶端驅動需支援新認證插件,或暫時 old_passwords=1 兼容 |
| 字符集 | 4.1 完善字符集支援,utf8 為 3 字節 | 檢查應用連線字符集設定 |
| SQL 模式 | 引入 sql_mode,預設嚴格度提高 | 測試應用兼容性,必要時放寬 |
/www/mysql/bin/mysqladmin -u root -p shutdown
cp -R /www/mysql /www/mysql_backup_$(date +%F)
mysqldump -u root -p --all-databases --routines --triggers --events --single-transaction > /www/backup/full_$(date +%F).sql
tar -zxvf mysql-4.1.22-linux-x86_64.tar.gz
mv mysql-4.1.22 /usr/local/mysql-4.1.22
ln -sfn /usr/local/mysql-4.1.22 /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql-4.1.22
cp /www/mysql/my.cnf /usr/local/mysql/my.cnf
# 檢查 basedir、datadir、socket、port、innodb_* 參數
# 4.1 新增參數:old_passwords、sql_mode 等
/usr/local/mysql/bin/mysqld_safe --user=mysql &
# 等待啟動完成
/usr/local/mysql/bin/mysql_upgrade -u root -p
# 此步驟:檢查/修復所有表、更新系統表權限結構、重建索引統計
# 連線測試
mysql -u root -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'sql_mode';"
# 應用功能測試:核心業務流程、字符集、排序、日期處理、存儲過程
# 效能基準:關鍵 SQL EXPLAIN、慢查詢對比
/etc/init.d/mysql 或 systemd unit 指向新 basedirinnodb_file_per_table 建議開啟mysql_upgrade 必跑sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'mysql_upgrade 耗時大增caching_sha2_password,舊驅動需改 mysql_native_password 或升級驅動RANK、GROUPS 等成保留字,表/列名需反引號跨大版本升級是系統工程,核心:**備份 → 逐級升級 → mysql_upgrade → 全量測試 → 灰度切換**。MySQL 3.23/4.1 早已 EOL,現代系統應直接目標 **8.0 LTS / 8.4 LTS**,制定淘汰計劃。