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

MySQL 跨大版本升級實戰:3.23 → 4.1 → 5.x 完整遷移指南

     編輯:MySQL 綜合教學

升級鐵律

  1. 不可跨大版本直接升級:必須 3.23 → 4.0/4.1 → 5.0 → 5.1 → 5.5 → 5.6 → 5.7 → 8.0
  2. 只能升級,不能降級:數據目錄升級後不可逆
  3. 備份優先:mysqldump --all-databases --routines --triggers --events --single-transaction --master-data=2 > backup.sql
  4. 測試先行:克隆生產數據在測試環境完整演練

3.23 → 4.1 關鍵變更

領域變更應對
權限表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,預設嚴格度提高測試應用兼容性,必要時放寬

標準升級流程(以 Linux 通用包為例)

1. 停止舊服務、備份數據


/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

2. 部署新版本二進制包


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

3. 複製/調整配置文件


cp /www/mysql/my.cnf /usr/local/mysql/my.cnf
# 檢查 basedir、datadir、socket、port、innodb_* 參數
# 4.1 新增參數:old_passwords、sql_mode 等

4. 啟動新版本、執行 mysql_upgrade


/usr/local/mysql/bin/mysqld_safe --user=mysql &
# 等待啟動完成
/usr/local/mysql/bin/mysql_upgrade -u root -p
# 此步驟:檢查/修復所有表、更新系統表權限結構、重建索引統計

5. 驗證與應用測試


# 連線測試
mysql -u root -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'sql_mode';"
# 應用功能測試:核心業務流程、字符集、排序、日期處理、存儲過程
# 效能基準:關鍵 SQL EXPLAIN、慢查詢對比

6. 切換生產流量

  • 修改啟動腳本 /etc/init.d/mysql 或 systemd unit 指向新 basedir
  • 更新應用連線配置(如有變更)
  • 觀察錯誤日誌、慢查詢日誌 30 分鐘無異常

4.1 → 5.0/5.1 關鍵點

  • 存儲引擎:InnoDB 成為內建標準,innodb_file_per_table 建議開啟
  • 觸發器/視圖/存儲過程增強,mysql_upgrade 必跑
  • 嚴格模式預設更嚴,sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'

5.x → 8.0 現代升級要點

  • 數據字典重構:.frm 檔案消失,系統表移至 InnoDB,mysql_upgrade 耗時大增
  • 認證插件:預設 caching_sha2_password,舊驅動需改 mysql_native_password 或升級驅動
  • 保留字變更:RANK、GROUPS 等成保留字,表/列名需反引號
  • utf8mb4 預設:字符集遷移檢查

零停機升級策略(主從架構)

  1. 升級從庫 → 驗證同步正常 → 升級下一從庫
  2. 所有從庫升級完成 → 主從切換(提升新版從庫為主)
  3. 升級原主庫(現從庫) → 切回或保持新主

總結

跨大版本升級是系統工程,核心:**備份 → 逐級升級 → mysql_upgrade → 全量測試 → 灰度切換**。MySQL 3.23/4.1 早已 EOL,現代系統應直接目標 **8.0 LTS / 8.4 LTS**,制定淘汰計劃。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved