業務場景
某業務系統採用 MyCat 中間件實現 10 個分片,需將其中 2 個分片遷移至第二台 MySQL 伺服器。核心需求:遷移速度最快、業務中斷時間最短。
方案一:mysqldump + Binlog 增量同步(適用於單實例多庫)
操作流程
- 預先準備 MyCat 新配置檔,便於快速切換
- 業務低峰期(如凌晨)執行全量備份:
mysqldump --flush-logs --single-transaction --master-data=2
- 將備份檔傳輸至目標伺服器並完成全量恢復
- 停止 MyCat 服務,停止源端 MyCat 實例
- 複製源端 Binlog 至目標端,使用
mysqlbinlog 回放增量資料
- 驗證遷移分片資料完整性(重點比對行數)
- 替換 MyCat 配置並重啟服務
中斷時間分析
業務中斷窗口主要集中在 Binlog 增量回放階段,視增量量級而定,通常可控制在分鐘級。
方案二:MySQL 主從級聯複寫(適用於高可用架構)
架構設計
在源分片(db11、db21)各建立級聯從庫(db16、db26),形成雙層複寫鏈:db11 → db16、db21 → db26。資料近乎即時同步。
切換步驟
- 準備新版 MyCat 配置檔
- 低峰期停止 MyCat,執行主從切換(提升 db16、db26 為新主)
- 停止源端 MyCat 實例
- 檢查切換期間 Binlog 殘留 DML/DDL,補充回放至新主
- 使用
mk-table-checksum 驗證新主從一致性
- 切換 MyCat 配置並啟動
優勢對比
| 指標 | 方案一 | 方案二 |
| 中斷時間 | 分鐘級(視增量量) | 秒級(僅切換瞬間) |
| 架構複雜度 | 低 | 高(需預建從庫) |
| 資料一致性風險 | 低(全量+增量) | 極低(準同步複寫) |
總結建議
- 中小型業務、單實例部署:推薦 方案一,實施簡單、風險可控
- 大型高併發、要求極短停機:投入資源建立 方案二 級聯架構
- 無論何種方案,演練、驗證、回滾預案 同樣重要