遷移是 DBA 為保障業務平穩運行而進行的「備份恢復」工程。核心在於如何快速、安全地完成備份與恢復,並延續主從同步關係。
| 工具 | 適用場景 | 特點 |
|---|---|---|
mysqldump | < 10 GB | 邏輯備份,產生 SQL,會加鎖,耗時長 |
xtrabackup | GB~TB 級 | 物理熱備,**不鎖 InnoDB**,最佳折中 |
mydumper | 大容量 | 多執行緒並行備份/恢復,效能極佳 |
| 直接拷貝資料目錄 | 允許停服務 | 最快,配合 rsync 跨機傳輸 |

rsync 整個資料目錄到新機REPLICATION SLAVE/CLIENTserver_id(勿衝突) → 啟動 → SHOW SLAVE STATUS 觀察 Seconds_Behind_Master 歸零pt-table-checksum 或業務驗證資料一致性 + 權限驗證
mysqldump 導出指定庫 + 收集帳號權限rsync 壓縮傳輸至新主庫 → 導入(自動同步至新從庫)
本質是執行兩次場景二流程,分別遷移不同庫至 103/104 與 105/106 兩組主從。

STOP SLAVESTOP SLAVE IO_THREAD; STOP SLAVE SQL_THREAD 記錄 Master_Log_File/PosSTART SLAVE UNTIL MASTER_LOG_FILE=..., MASTER_LOG_POS=...; STOP SLAVE; RESET SLAVE ALLSHOW MASTER STATUS 記錄新 Binlog 座標 → 授權 104 → CHANGE MASTER TO 103START SLAVEFLUSH TABLES WITH READ LOCK 鎖定 101 → 切寫入至 103、讀至 104 → 解鎖觀察
結合場景四:先在 A 地建新主從 1.103/1.104 同步舊主 1.101 → 再將 1.103 掛到 B 地 2.101 下(雙主關係)→ 切換 A 地業務。注意 auto_increment_offset/increment 雙主配置需一致。

innobackupex --slave-info 備份指定實例 → 壓縮傳輸innobackupex --apply-log --copy-back 恢復replicate-ignore-db/replicate-wild-do-table、read_only=1、server_idCHANGE MASTER TO ... 參考 xtrabackup_slave_info 中座標 → 啟動同步 → 驗證切換event_schedulerCHANGE MASTER TO 的 Log File/Pos **絕不可錯**,錯即資料不一致$HOMEmysqladmin 關閉指定實例read_only=1** 避免誤寫入server_id 全局唯一replicate-ignore-db/replicate-wild-do-tableinnodb_file_per_table=1**,避免 ibdata1 膨脹拖慢備份傳輸gzip 壓縮會刪源檔,注意保留xtrabackup 不鎖 InnoDB 但**鎖 MyISAM**,先檢查並轉 Engine 或單獨處理Relay_Master_Log_File / Exec_Master_Log_Pos 為準rsync + expect + nohup = 神級組合(免密、斷點續傳、後台運行)innobackupex | gzip 邊備份邊壓縮--slave-info 自動記錄從庫座標--throttle 限流減輕業務衝擊,--parallel 加速(不可與 tar 流壓縮共用)rsync -avhW --no-compress --progress總結三要素: 1) 目的:業務平穩持續;2) 核心:延續主從同步鏈路;3) 切換考量:權限、讀寫分離順序、跨機房延遲。一切操作,**三思而後行,掌控全局**。