一、背景
需求:客戶要實現Mysql8.0+高可用,出現故障時,需要實現自動切換。
分析:實現切換有兩種方式,一種數據庫自動切換,一種代碼實現。
本著麻煩別人,別麻煩自己的原則,得給客戶的DBA派活兒了。
實現MySQL數據庫集群自動切換,核心目標是高可用性(High Availability, HA),即在主節點故障時,系統能自動、快速、安全地將服務切換到備用節點,最大限度減少停機時間。
二、方案收集
2.1. 方案一:主從復制
2.2. 方案二:MGR
MySQL Group Replication (MGR) - MySQL官??案
架構:??少3個節點(推薦單主模式)
基于Paxos分布式?致性協議實現數據同步(多數派確認)。

2.3. 方案三:PXC/Galera Cluster
- ?少3個節點。
- 基于Galera庫實現的同步多主集群。
- 所有節點均可讀寫,數據寫?在提交前必須在集群內同步到其
- 他節點(通過Certification-Based Replication)。
- 使?基于組通信的 gcomm 協議進?節點間通信。
三、決策
3.1方案比較
3.1.1 原生異步復制 (Async Replication)
- 數據可能丟失:Master 提交后即返回,Binlog 未同步到 Slave
- 延遲無上限:Slave 可能落后 Master 數小時

3.1.2 半同步復制 (Semi-Sync)
特點:
防丟數據:確保事務 Binlog 到達至少一個 Slave
不防延遲:Slave 可能未應用日志(僅保證收到)
主宕機仍丟數據:若 ACK 后 Slave 未應用日志
3.1.3 MGR
特點:
強一致性:事務提交需多數節點認證
零數據丟失:返回成功 = 數據在多數節點持久化
自動沖突解決:行級沖突檢測 (certification)
3.1.4?決策

四、安裝?
最終采用組復制+Router,請參考下面官方文檔:
Mysql Group?Replication 官網安裝步驟Mysql Router 插件 官網安裝步驟
五、Mysql官方方案比較
- 主從半同步復制、
- InnoDB ReplicaSet、
- 組復制(MGR)、
- InnoDB Cluster、
- InnoDB ClusterSet
解決方案 | 底層技術 | 數據一致性 | 故障切換時間 | 容災級別 | 適用規模 | 運維復雜度 |
---|---|---|---|---|---|---|
主從半同步復制 | 半同步復制 | 最終一致 | 30~60秒 | 節點級 | <1TB | ?? |
InnoDB ReplicaSet | 異步復制+管理框架 | 最終一致 | 手動切換 | 節點級 | <5TB | ? |
組復制(MGR) | Paxos協議多節點同步 | 強一致(RPO=0) | <10秒 | 節點級 | <10TB | ??? |
InnoDB Cluster | MGR+Router+Shell | 強一致(RPO=0) | <10秒 | 節點級 | 任意規模 | ?? |
InnoDB ClusterSet | 多Cluster+異步復制 | 最終一致 | 分鐘級 | 地域級 | 超大規模 | ???? |
5.1. 主從半同步復制
(Semi-Synchronous Replication)
-
原理:主庫提交事務前需至少一個從庫確認接收Binlog,超時自動降級為異步復制
-
優勢:
? 數據丟失風險低于異步復制(如支付流水日志)
? 成本低(2節點即可部署) -
局限:
? 切換時可能丟失超時窗口內的數據(默認10秒)
? 需配合Keepalived等工具實現VIP漂移 -
典型場景:
-
電商訂單查詢系統(讀多寫少)
-
制造業MES實時數據采集2
-
5.2. InnoDB ReplicaSet
-
原理:基于異步復制的自動化管理套件(MySQL Shell + Router),簡化主從配置9
-
優勢:
??分鐘級部署(自動配置復制賬號、GTID)
? 支持Router自動讀寫分離 -
局限:
??無自動故障切換(需手動提升主節點)
? 數據一致性弱(依賴異步復制) -
典型場景:
-
中小型企業內部管理系統(OA、CRM)
-
開發測試環境高可用模擬
-
5.3. 組復制
(MGR, MySQL Group Replication)
-
原理:基于Paxos協議的多節點共識,事務需多數節點(N/2+1)認證后提交410
-
優勢:
??強一致性(金融級數據安全,如賬戶余額)
? 自動選主與節點自愈(無需外部工具) -
局限:
? 僅支持InnoDB表且必須含主鍵58
? 網絡延遲>50ms時性能驟降 -
典型場景:
-
支付核心交易系統(RPO=0要求)
-
政務數據共享平臺(多部門數據強同步)
-
5.4. InnoDB Cluster
-
原理:整合MGR + MySQL Router(流量代理) + MySQL Shell(管理)
-
優勢:
??圖形化運維(一鍵擴縮容、故障修復)
? 讀寫分離自動路由(Router隱藏后端拓撲) -
局限:
? 綁定MySQL官方生態(版本需嚴格兼容)
? Router需單獨部署高可用 -
典型場景:
-
云數據庫服務(如AWS RDS高可用版)
-
大型ERP系統(多模塊數據強一致)
-
5.5. InnoDB ClusterSet
-
原理:多個InnoDB Cluster通過異步復制組成跨地域集群,主Cluster故障時備用Cluster接管9
-
優勢:
??地域級容災(如機房級故障切換)
? 備用Cluster可提供只讀服務 -
局限:
? 跨集群切換需手動觸發
? 備用集群數據延遲(依賴異步復制) -
典型場景:
-
跨國電商全球業務(多活地域部署)
-
金融行業兩地三中心容災架構
-
?如果對你有幫助,點個收藏?,點個贊??再去官方盤文檔唄……
--------------------------------------------結束--------------------------------------------