同步備份架構演進路線
從傳統主從 → GTID 複制 → 半同步複制 → 多源複制 → 群組複制 (MGR) → 分布式共識,每階段解決數據一致性、故障切換、擴展性痛點。
1. GTID 複制:精確定位與自動容錯
- 啟用:
gtid_mode=ON、enforce_gtid_consistency=ON、log_slave_updates=ON。
- 優勢:全局事務 ID 唯一標識,從庫自動尋找正確位點,支援多線程複制
slave_parallel_workers、slave_parallel_type=LOGICAL_CLOCK。
- 拓撲變更:
CHANGE MASTER TO MASTER_AUTO_POSITION=1 無需手動指定 File/Position。
2. 半同步複制:強化數據不丟失
- 原理:主庫 Commit 前等待至少一個從庫收到 Relay Log 並寫入磁碟(ACK)。
- 關鍵參數:
rpl_semi_sync_master_wait_for_slave_count=1、rpl_semi_sync_master_timeout=1000(ms,超時回退異步)。
- 插件載入:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'。
- 監控:
SHOW STATUS LIKE 'Rpl_semi_sync%' 確認 Rpl_semi_sync_master_status=ON。
3. 群組複制 (MGR):多主高可用
- 基於 Paxos 變體,單主/多主模式,自動故障檢測與切換(秒級)。
- 需求:
binlog_format=ROW、gtid_mode=ON、transaction_write_set_extraction=XXHASH64、主鍵必須、IPv4 互通。
- 啟動:
SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION;。
- ProxySQL/Router 實現讀寫分離與流量路由。
4. 備份工具與策略
| 工具 | 特點 | 適用場景 |
| xtrabackup (Percona) | 物理熱備、增量、流式傳輸、壓縮、加密 | 大數據集、生產主庫零影響備份 |
| mysqldump | 邏輯備份、跨版本、單表、易遷移 | 小數據集、結構遷移、異構同步 |
| mydumper/myloader | 多線程並行邏輯備份/恢復 | 中等數據集、加速邏輯備份 |
| Clone Plugin (8.0.17+) | 原生實例克隆、遠程佈署從庫 | 快速佈署新從庫、MGR 節點加入 |
5. 異地災備關鍵指標
- RPO (Recovery Point Objective):半同步/MGR 可達 RPO=0(無數據丟失);異步複制視網絡延遲而定。
- RTO (Recovery Time Objective):MGR 自動切換 <30s;手動切換 5-15min;備份恢復視數據量而定(TB 級需物理備份 + 增量)。
- 複制延遲監控:
Seconds_Behind_Master、Replication_Lag(MGR),告警閾值建議 > 10s 介入。
自動化運維閉環
- 佈署自動化:Ansible/Helm Chart 標準化部署 MySQL + MGR + ProxySQL + 監控。
- 備份調度:每日全量 + 每小時增量,驗證校驗和、定期演練恢復。
- 故障自癒:Orchestrator/MHA 檢測主庫故障 → 自動提升最優從庫 → 更新 ProxySQL 路由 → 發送告警。
- 容量規劃:磁碟增長趨勢、Binlog 保留策略(
expire_logs_days/binlog_expire_logs_seconds)。
採用 GTID + 半同步/MGR + xtrabackup + 自動化故障切換,可構建企業級異地多活、RPO=0、RTO<分鐘的 MySQL 同步備份體系。
- 上一篇文章: 異地 MySQL 主從同步備份實戰 (二):GTID 複製架構、半同步模式、故障自動切換、監控體系
- 下一篇文章: Linux 平台 MySQL 安裝配置與常用運維操作全攻略
Copyright ©
程式碼之家 All Rights Reserved