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

CentOS 環境下 MySQL 5.1 升級至 5.5 完整操作手冊

     編輯:MySQL 綜合教學

CentOS 環境下 MySQL 5.1 升級至 5.5 完整操作手冊

MySQL 5.5 在多核擴展性、InnoDB 性能、半同步復制等方面有顯著提升。本文記錄生產環境從 5.1 就地升級至 5.5 的標準化流程,核心原則:備份優先、數據目錄不變、二進制兼容升級。

一、 環境基線信息確認

項目路徑/版本
安裝目錄/usr/local/mysql
配置文件/etc/my.cnf
數據目錄/data/mysql
啟動腳本/etc/init.d/mysql
當前版本MySQL 5.1.60

二、 完整備份(核心步驟)

# 1. 邏輯全量備份(含所有庫、觸發器、存儲過程)
mysqldump -u root -p --all-databases --routines --triggers --single-transaction --master-data=2 > /root/backup/mysql_5.1_full_$(date +%F).sql

# 2. 物理備份安裝目錄
tar czvf /root/backup/mysql_5.1_bin_$(date +%F).tar.gz /usr/local/mysql

# 3. 物理備份數據目錄(關鍵:保留 ibdata、ib_logfile、.frm、.ibd 等)
tar czvf /root/backup/mysql_5.1_data_$(date +%F).tar.gz /data/mysql

# 4. 備份配置文件
cp /etc/my.cnf /root/backup/my.cnf_5.1_$(date +%F)

三、 停止服務並移除舊二進制

/etc/init.d/mysql stop
# 確認進程已退出
ps aux | grep mysql
# 移除舊安裝目錄(數據目錄 /data/mysql 不動)
rm -rf /usr/local/mysql

四、 編譯安裝 MySQL 5.5

參考《Linux 下編譯安裝 MySQL 5.5 簡單步驟》,關鍵 cmake 參數保持目錄一致:

cmake \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/data/mysql \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DENABLED_LOCAL_INFILE=1 \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system
make && make install

五、 更新配置文件

# 複製 5.5 附帶的大內存模板
cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf
# 修改 datadir 指向舊數據目錄
sed -i '/^\[mysqld\]/a datadir = /data/mysql' /etc/my.cnf
# 其他參數按業務調整(innodb_buffer_pool_size 等)

六、 啟動並執行升級腳本

# 1. 啟動 5.5 實例(數據目錄仍為 5.1 的文件)
/etc/init.d/mysql start

# 2. 執行 mysql_upgrade(關鍵:升級系統表、檢查表兼容性、重建索引統計)
/usr/local/mysql/bin/mysql_upgrade -u root -p
# 輸出示例:
# Running 'mysqlcheck' with connection arguments...
# mysql.user OK
# ...
# Running 'mysql_fix_privilege_tables'... OK

mysql_upgrade 做了什麼?

  • 檢查並修復所有表(相當於 mysqlcheck --auto-repair --all-databases)。
  • 升級 mysql 系統庫表結構(權限表、事件、存儲過程元數據等)。
  • 刷新權限表。

七、 重啟驗證

/etc/init.d/mysql restart
# 登錄檢查版本、數據完整性
mysql -u root -p -e "SELECT VERSION(); SHOW DATABASES; CHECK TABLE critical_table;"

八、 回滾方案(升級失敗時)

  1. 停止 5.5 實例。
  2. 恢復二進制:tar xzf /root/backup/mysql_5.1_bin_*.tar.gz -C /
  3. 恢復數據目錄(如已寫入新數據需謹慎):tar xzf /root/backup/mysql_5.1_data_*.tar.gz -C /
  4. 恢復配置:cp /root/backup/my.cnf_5.1_* /etc/my.cnf
  5. 啟動舊實例驗證。

九、 關鍵風險提示

風險點應對
系統表結構不兼容務必執行 mysql_upgrade,不可跳過
InnoDB 日誌文件大小不匹配升級前備份 ib_logfile*,升級後若報錯刪除重建
字符集亂碼確認 my.cnf 字符集配置與 5.1 一致(utf8/gbk)
存儲過程/觸發器 DEFINER 權限缺失備份腳本加 --routines --triggers,升級後檢查 DEFINER 用戶是否存在

十、 總結

就地升級核心在於保持數據目錄不變,僅替換二進制文件並執行 mysql_upgrade。生產環境建議先在預發環境演練,驗證應用兼容性後再實施,並預留足夠回滾時間窗口。

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