Mysql实现高可用(主从、集群)
一、背景
需求:客户要实现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可提供只读服务 -
局限:
❌ 跨集群切换需手动触发
❌ 备用集群数据延迟(依赖异步复制) -
典型场景:
-
跨国电商全球业务(多活地域部署)
-
金融行业两地三中心容灾架构
-
如果对你有帮助,点个收藏⭐,点个赞再去官方盘文档呗……
--------------------------------------------结束--------------------------------------------