首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.0 升級到 5.1 實戰操作手冊:覆蓋安裝法與數據遷移

     編輯:MySQL 資料庫相關知識

前言

MySQL 5.0 → 5.1 升級屬大版本跨越,涉及系統表結構變更、優化器行為差異、備份恢復驗證。本文記錄「二進制覆蓋安裝 + 邏輯備份還原」實戰流程,含常見坑點 (mysqldump 鎖表錯誤、mysql_upgrade 缺失、權限表不匹配) 解決方案。

升級前核心準則

  1. 完整備份:邏輯備份 (mysqldump) + 物理備份 (資料目錄打包) + 配置檔備份。
  2. 版本兼容性檢查:mysqlcheck --all-databases --check-upgrade (5.1 提供)。
  3. 停寫窗口:業務停寫或唯讀模式,確保數據一致性。
  4. 回滾預案:物理備份可快速恢復,驗證恢復演練。

一、邏輯備份 (推薦含 Flush Logs)

mysqldump -uroot -p --all-databases --flush-logs --single-transaction --master-data=2 --routines --triggers --events > /backup/mysql_5.0_full_$(date +%F).sql
  • --flush-logs (-F):切換 Binlog,便於時間點恢復。
  • --single-transaction:InnoDB 一致性備份無鎖表。
  • --master-data=2:輸出 CHANGE MASTER TO 註釋,含 Binlog 位置。

常見錯誤:mysqldump: Got error: 1556: You can't use locks with log tables

原因:系統 mysqldump (如 /usr/bin/mysqldump) 版本舊,不支援新版 log tables 鎖定語法。

解決:確保使用新版 MySQL 安裝目錄下的 mysqldump:

# 檢查當前路徑
which mysqldump
# 調整 PATH 讓新版優先
export PATH=/usr/local/mysql/bin:$PATH
# 驗證
mysqldump --version

二、物理備份 (資料目錄 + 安裝目錄 + 配置)


# 停止服務
mysqladmin -uroot -p shutdown

# 打包資料目錄
tar -czf /backup/mysql_5.0_data_$(date +%F).tar.gz /data/mysql_data/mysql

# 打包安裝目錄
tar -czf /backup/mysql_5.0_bin_$(date +%F).tar.gz /usr/local/mysql

# 備份配置
cp /etc/my.cnf /backup/my.cnf_$(date +%F)

三、二進制覆蓋安裝 (就地升級)

  1. 下載 5.1 二進制包 (對應 OS/架構):
    wget https://downloads.mysql.com/archives/get/file/mysql-5.1.73-linux-x86_64-glibc23.tar.gz
    
  2. 解壓並覆蓋:
    
    tar xzf mysql-5.1.73-linux-x86_64-glibc23.tar.gz
    rm -rf /usr/local/mysql/*
    mv mysql-5.1.73-linux-x86_64-glibc23/* /usr/local/mysql/
    
  3. 保留原資料目錄與配置:不要動 /data/mysql_data/mysql 和 /etc/my.cnf。

四、啟動並執行系統表升級 (關鍵步驟)


# 啟動 (跳過授權表可選,但正常啟動即可)
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

# 等待啟動完成,執行升級腳本
/usr/local/mysql/bin/mysql_upgrade -uroot -p --force

mysql_upgrade 會:

  • 檢查所有表相容性 (CHECK TABLE ... FOR UPGRADE)。
  • 修復不相容表 (REPAIR TABLE)。
  • 更新 mysql 系統表結構 (權限、事件、插件等)。
  • 刷新權限 (FLUSH PRIVILEGES)。

五、驗證與後續

  1. 功能驗證:跑測試套件、應用煙霧測試、關鍵 SQL EXPLAIN 對比。
  2. 效能基準:sysbench / tpcc-mysql 對比升級前後 QPS、延遲。
  3. 錯誤日誌審視:tail -f /var/log/mysqld.log 關注 [ERROR]、[Warning]。
  4. 統計信息更新:ANALYZE TABLE 核心表,或啟用 innodb_stats_auto_recalc。
  5. 監控指標:Buffer Pool 命中率、慢查詢增長、鎖等待、複寫延遲 (如有從庫)。

六、替代方案:邏輯遷移 (更安全、跨版本通用)

  1. 新建 5.1 實例 (獨立端口/目錄)。
  2. mysqldump 從 5.0 導出。
  3. 導入 5.1 新實例。
  4. 驗證無誤後切換應用連線配置。
  5. 舊實例下線備份保留。

優勢:原生重建表結構、索引統計、避免系統表殘留問題、可異構遷移 (32→64位、不同 OS)。

七、常見升級後問題速查表

現象原因解決
啟動報 Table 'mysql.proc' doesn't exist系統表結構未升級執行 mysql_upgrade --force
存儲過程/函數報錯定義者權限/字符集不匹配重新建立或 mysql_upgrade 修復
複寫中斷Binlog 格式/系統表差異從庫重做、確認 binlog_format 一致
查詢計劃變差優化器新特性/統計信息舊ANALYZE TABLE、檢查 optimizer_switch
字符集亂碼預設字符集變更 (5.1 預設 latin1)配置 character-set-server=utf8mb4

八、總結

MySQL 5.0 → 5.1 升級,邏輯備份 + mysql_upgrade 是核心保障。二進制覆蓋安裝雖快但風險較高 (系統表不匹配、殘留舊結構),生產環境強烈建議 邏輯遷移到新實例。無論哪種方式,mysql_upgrade --force 必須執行並驗證無錯誤,才算升級完成。

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