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

MySQL 就地升級實戰:5.6.19 升級至 5.6.21 完整操作手冊

     編輯:MySQL 綜合教學

MySQL 就地升級 (In-Place Upgrade) 完整步驟

MySQL 次版本升級 (如 5.6.19 → 5.6.21) 採用就地升級方式:保留原資料目錄,安裝新版本二進制,執行 mysql_upgrade 完成系統表更新。本文記錄生產環境實操全過程。

1. 升級前準備

  • 完整備份:mysqldump --all-databases --single-transaction --master-data=2 > backup_$(date +%F).sql
  • 確認資料目錄:SHOW VARIABLES LIKE 'datadir'; (例:/usr/local/mysql01/data/)
  • 安裝編譯依賴:yum -y install gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* make cmake bison bison-devel libaio

2. 建立 MySQL 用戶與資源限制

groupadd mysql
useradd -g mysql mysql

# /etc/security/limits.conf
mysql soft nproc 2047
mysql hard nproc 16384
mysql soft nofile 1024
mysql hard nofile 65536

3. 編譯安裝新版本至獨立目錄

tar xvf mysql-5.6.21.tar.gz
cd mysql-5.6.21
cmake \
 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql02 \
 -DMYSQL_DATADIR=/usr/local/mysql02/data \
 -DSYSCONFDIR=/etc \
 -DWITH_MYISAM_STORAGE_ENGINE=1 \
 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_MEMORY_STORAGE_ENGINE=1 \
 -DWITH_READLINE=1 \
 -DMYSQL_UNIX_ADDR=/usr/local/mysql02/mysql.sock \
 -DMYSQL_TCP_PORT=3306 \
 -DENABLED_LOCAL_INFILE=1 \
 -DWITH_PARTITION_STORAGE_ENGINE=1 \
 -DEXTRA_CHARSETS=all \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci
make && make install

4. 停舊版、調整權限與目錄結構

service mysqld stop

mkdir -p /usr/local/mysql02/{innodb_data,data,tmp}
mkdir -p /usr/local/mysql02/mysql_logs/{binary_log,innodb_log,query_log,slow_query_log,error_log}
cd /usr/local/mysql02
chown -R mysql:mysql .

5. 修改配置檔指向新版本 (關鍵步驟)

# /etc/my.cnf 關鍵修改
basedir = /usr/local/mysql02        # 指向新版本安裝目錄
datadir = /usr/local/mysql01/data   # 保持原資料目錄不變
skip-grant-tables                   # 升級期間跳過權限驗證
sql_mode = NO_ENGINE_SUBSTITUTION   # 移除 STRICT_TRANS_TABLES 避免嚴格模式報錯

6. 覆蓋啟動腳本、執行升級、驗證

cp /usr/local/mysql02/support-files/mysql.server /etc/init.d/mysqld
service mysqld start                # 以新版本啟動
/usr/local/mysql02/bin/mysql_upgrade # 升級系統表、修復權限表
/usr/local/mysql02/bin/mysqlcheck --all-databases -uroot -p123456 # 檢查所有表

# 升級完成後移除 skip-grant-tables 並重啟
vi /etc/my.cnf  # 註釋掉 skip-grant-tables
service mysqld restart

7. 升級後驗證清單

  • SELECT VERSION(); 確認版本號
  • SHOW ENGINES; 確認 InnoDB 等引擎正常
  • 執行核心業務 SQL 驗證功能
  • 監控錯誤日誌 tail -f /var/log/mysqld.log
  • 備份新版本配置與二進制

注意事項

  1. 跨大版本升級 (如 5.6 → 5.7) 需依序逐版本升級,不可跳版。
  2. 升級前必須關閉應用寫入,或採用主從切換方式實現零停機。
  3. mysql_upgrade 會重建系統表索引,大量資料庫時耗時較久,請預留維護窗口。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved