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

CentOS 6 升級 MySQL 5.1 → 5.7 完整遷移實戰與避坑指南

     編輯:MySQL 綜合教學

CentOS 6 升級 MySQL 5.1 → 5.7 完整遷移實戰與避坑指南

升級策略:原地升級 vs 全新安裝遷移

強烈建議:全新安裝 5.7 + 數據遷移,避免 RPM 升級帶來的依賴地獄與配置不兼容。

準備工作

# 1. 下載 5.7 RPM 包
MySQL-server-5.7.x-el6.x86_64.rpm
MySQL-client-5.7.x-el6.x86_64.rpm
MySQL-shared-5.7.x-el6.x86_64.rpm
MySQL-devel-5.7.x-el6.x86_64.rpm  # 如需編譯擴展

# 2. 完全備份數據
mysqldump -u root -p --all-databases --routines --triggers --single-transaction > all_db_$(date +%F).sql

# 3. 停止舊服務
service mysqld stop

徹底清理舊版本

rpm -ivh MySQL-{server,client,shared,devel}-5.7.x-el6.x86_64.rpm

# 初始化數據目錄(5.7.6+)
mysqld --initialize --user=mysql
# 或 5.7.6 前
mysql_install_db --user=mysql

# 獲取臨時 root 密碼
grep 'temporary password' /var/log/mysqld.log

配置優化 my.cnf 關鍵參數

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-bin=mysql-bin
server-id=1

# 內存相關(假設 4G 內存)
key_buffer_size = 256M
table_open_cache = 256
sort_buffer_size = 256K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
net_buffer_length = 8K
thread_cache_size = 20
query_cache_size = 8M  # 5.7 建議關閉 QC,改用 ProxySQL

# InnoDB 核心
innodb_buffer_pool_size = 2G  # 物理內存 50-70%
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 2  # 性能優先,允許 1 秒丟失
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

# 安全
# skip-grant-tables  # 僅緊急救援時臨時開啟

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

常見啟動失敗排查

數據遷移與驗證


升級後必做項

  1. 運行 mysql_upgrade 修復系統表結構
  2. 重建統計信息:ANALYZE TABLE 核心表
  3. 檢查應用兼容性:sql_mode、保留字、日期類型行為變化
  4. 調整 innodb_buffer_pool_size 至生產規格
  5. 配置監控:Prometheus mysqld_exporter / Percona Monitoring and Management
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤原因解決
ERROR 1524 / 1045權限表結構變更、密碼插件不匹配臨時 skip-grant-tables 登入,執行 mysql_upgrade 升級系統表
ERROR 1820 (HY000): You must SET PASSWORD臨時密碼未修改SET PASSWORD = PASSWORD('newpass');
InnoDB: Invalid flags舊 ib_logfile 殘留刪除 /var/lib/mysql/ib_logfile* 重啟
服務啟動即停止配置語法錯誤、權限、SELinuxmysqld --validate-config、檢查 chown -R mysql:mysql /var/lib/mysql