優於就地升級:避免系統表結構變更風險、獲得乾淨實例、支援跨大版本、可同時遷移至 Oracle MySQL。
yum install -y perl-IO-Socket-SSL perl-TermReadKey
rpm -ivh percona-toolkit-2.2.10-1.noarch.rpm
# 1. 導出所有權限
pt-show-grants --user=root --ask-pass --flush > /home/mysql/grants.sql
# 2. 導出用戶庫 (排除系統庫)
mysql -uroot -p -BNe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME NOT IN ('mysql','performance_schema','information_schema')" \
| tr '\n' ' ' > /home/mysql/dbs-to-dump.sql
# 3. 邏輯全量備份
mysqldump -uroot -p --routines --events --single-transaction \
--databases $(cat /home/mysql/dbs-to-dump.sql) > /home/mysql/full-data-dump.sql
service mysql stop
mv /var/lib/mysql /var/lib/mysql55
mkdir /var/lib/mysql && chown -R mysql:mysql /var/lib/mysql
# 因共享庫衝突,需強制/節點安裝
rpm -ivh Percona-Server-shared-56-*.rpm --force
rpm -ivh Percona-Server-client-56-*.rpm --force --nodeps
rpm -ivh Percona-Server-devel-56-*.rpm --force --nodeps
rpm -ivh Percona-Server-test-56-*.rpm --force --nodeps
# 移除 5.5 server
rpm -e Percona-Server-server-55-5.5.46-rel37.5.el6.x86_64 --nodeps
# 安裝 5.6 server
rpm -ivh Percona-Server-server-56-*.rpm --force --nodeps
安裝過程會自動初始化系統表空間、redo log、產生新的 ibdata1、ib_logfile*。
service mysql start
mysqladmin -u root password 'oracle' # 設定臨時密碼
mysql -uroot -p < /home/mysql/grants.sql
mysql -uroot -p -e "SET GLOBAL max_allowed_packet=1G"
mysql -uroot -p --max-allowed-packet=1G < /home/mysql/full-data-dump.sql
mysql -uroot -p -e "USE prod; SELECT * FROM emp;"
-- 正確輸出 3 筆測試資料,升級成功
mysqladmin 設密再導入。mysql、performance_schema、information_schema 由新版本自動建立,舊權限通過 grants.sql 重建。latin1,生產環境建議統一 utf8mb4。此流程**完全適用於 Oracle MySQL 5.5 → 5.6/5.7**,甚至 Oracle MySQL → Percona Server 互遷,只需替換 RPM 包來源。
完成上述步驟,獲得乾淨、穩定的 5.6 實例,所有表在新版本重建載入,二進位日誌完整可用,可放心恢復業務流量。