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

MySQL 遷移實戰:六大場景完整方案與避坑指南

     編輯:MySQL 綜合教學

MySQL 遷移實戰:六大場景完整方案與避坑指南

遷移是 DBA 為保障業務平穩運行而進行的「備份恢復」工程。核心在於如何快速、安全地完成備份與恢復,並延續主從同步關係。

常見遷移觸發場景

  1. 磁碟空間不足
  2. 業務瓶頸(單機讀寫壓力過大)
  3. 硬體瓶頸(I/O、記憶體、CPU)
  4. 專案改造(跨機房、業務拆分、共用伺服器拆分)

備份工具選型

工具適用場景特點
mysqldump< 10 GB邏輯備份,產生 SQL,會加鎖,耗時長
xtrabackupGB~TB 級物理熱備,**不鎖 InnoDB**,最佳折中
mydumper大容量多執行緒並行備份/恢復,效能極佳
直接拷貝資料目錄允許停服務最快,配合 rsync 跨機傳輸

六大實戰場景詳解

場景一:主從架構遷移從庫(大容量、需實時)

架構圖

  1. 研發將從庫讀流量切回主庫
  2. 確認從庫無延遲、流量歸零 → 停止從庫服務
  3. 新機建立實例 → 停服務 → 備份原資料目錄
  4. rsync 整個資料目錄到新機
  5. 同步期間在主庫授權新從庫 REPLICATION SLAVE/CLIENT
  6. 修改新機 server_id(勿衝突) → 啟動 → SHOW SLAVE STATUS 觀察 Seconds_Behind_Master 歸零
  7. pt-table-checksum 或業務驗證資料一致性 + 權限驗證
  8. 研發切回部分讀流量觀察 → 確認無誤遷移完成

場景二:主從架構遷移指定庫(中小容量、非實時)

架構圖

  1. 新主從機建實例搭主從(空載)
  2. 舊從庫低峰期 mysqldump 導出指定庫 + 收集帳號權限
  3. rsync 壓縮傳輸至新主庫 → 導入(自動同步至新從庫)
  4. 新主庫授權 → 研發驗證資料與權限 → 切換業務

場景三:雙邊遷移指定庫(一主一從拆分為兩組主從)

架構圖

本質是執行兩次場景二流程,分別遷移不同庫至 103/104 與 105/106 兩組主從。

場景四:主從完整遷移(大容量、需實時、先換從再換主)

架構圖

  1. 同場景一建立新從庫 104 同步舊主 101
  2. 利用舊從 102 資料建立新主 103 做 101 的從庫
  3. 關鍵:將 104 從 101 掛到 103 下
    • 104 STOP SLAVE
    • 103 STOP SLAVE IO_THREAD; STOP SLAVE SQL_THREAD 記錄 Master_Log_File/Pos
    • 104 START SLAVE UNTIL MASTER_LOG_FILE=..., MASTER_LOG_POS=...; STOP SLAVE; RESET SLAVE ALL
    • 103 SHOW MASTER STATUS 記錄新 Binlog 座標 → 授權 104 → CHANGE MASTER TO 103
    • 104 重啟 → 檢查 IO/SQL Thread → 103 START SLAVE
  4. 業務低峰 FLUSH TABLES WITH READ LOCK 鎖定 101 → 切寫入至 103、讀至 104 → 解鎖觀察

場景五:雙主跨機房遷移(A 地換機、B 地不變)

架構圖

結合場景四:先在 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_id
  • CHANGE MASTER TO ... 參考 xtrabackup_slave_info 中座標 → 啟動同步 → 驗證切換

十四條鐵律級注意事項

  1. 涉及 Event 記得開啟主庫 event_scheduler
  2. 全程監控磁碟空間、網路抖動、業務指標
  3. CHANGE MASTER TO 的 Log File/Pos **絕不可錯**,錯即資料不一致
  4. 腳本放資料目錄而非 $HOME
  5. 自動化腳本必須經測試,寧慢勿錯
  6. 每條指令三思而後行,參數含義必須搞懂
  7. 多實例環境用 mysqladmin 關閉指定實例
  8. 從庫**強制 read_only=1** 避免誤寫入
  9. 所有機器 server_id 全局唯一
  10. 正確配置 replicate-ignore-db/replicate-wild-do-table
  11. 新實例**必設 innodb_file_per_table=1**,避免 ibdata1 膨脹拖慢備份傳輸
  12. gzip 壓縮會刪源檔,注意保留
  13. 所有操作**只在從/備庫執行**,主庫操作極易宕機
  14. xtrabackup 不鎖 InnoDB 但**鎖 MyISAM**,先檢查並轉 Engine 或單獨處理

八大實戰技巧

  1. 遷移座標以 Relay_Master_Log_File / Exec_Master_Log_Pos 為準
  2. rsync + expect + nohup = 神級組合(免密、斷點續傳、後台運行)
  3. innobackupex | gzip 邊備份邊壓縮
  4. --slave-info 自動記錄從庫座標
  5. --throttle 限流減輕業務衝擊,--parallel 加速(不可與 tar 流壓縮共用)
  6. 備份恢復清單化、流程圖化、指令預備化
  7. 本地快速拷貝:rsync -avhW --no-compress --progress
  8. 跨機房大數據:備份到硬碟 → 快遞硬碟(物理傳輸帶寬無上限)
總結三要素: 1) 目的:業務平穩持續;2) 核心:延續主從同步鏈路;3) 切換考量:權限、讀寫分離順序、跨機房延遲。一切操作,**三思而後行,掌控全局**。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved