MySQL 高可用方案
理论篇 — 架构方案对比
一、高可用核心目标
- 无单点故障
- 故障自动切换(秒级)
- 数据不丢失 / 少丢失
- 对应用透明
二、主流高可用方案
1. 主从 + MHA(经典方案)
适用:MySQL 5.7 / 8.0
原理:一主多从 + 自动故障切换工具
| 项目 | 说明 |
|---|---|
| 一致性 | 最终一致 |
| 切换方式 | 自动 |
| 复杂度 | 中 |
| 生产推荐 | 中小公司 |
优点:成熟稳定、简单、切换快(秒级)、不侵入 MySQL
缺点:需要虚拟 IP(VIP)、不能保证零数据丢失(依赖半同步)
2. 主从 + MGR(MySQL 官方推荐,8.0 首选)
原理:MySQL Group Replication(组复制),多节点集群,Paxos 协议,强一致、自动选主、故障自动切换
| 项目 | 说明 |
|---|---|
| 一致性 | 强一致 |
| 切换方式 | 自动 |
| 复杂度 | 中低 |
| 生产推荐 | 官方首选 |
优点:官方原生、强一致(无数据丢失)、自动切换与选主、支持多写/单主模式
缺点:对网络质量要求高、必须 InnoDB、必须主键
3. PXC(Percona XtraDB Cluster)
原理:多主架构,强一致,无主从概念
| 项目 | 说明 |
|---|---|
| 一致性 | 强一致 |
| 切换方式 | 自动 |
| 复杂度 | 高 |
| 生产推荐 | 金融/高可用 |
优点:任何节点都可写、强一致同步复制、故障自动剔除
缺点:性能不如主从、不支持超大事务、网络不能抖动
4. 主从 + 中间件(Keepalived + VIP)
适用:简单、低成本场景
| 项目 | 说明 |
|---|---|
| 一致性 | 弱一致 |
| 切换方式 | 半自动 |
| 复杂度 | 低 |
| 生产推荐 | 简单业务 |
三、方案对比总结
| 方案 | 一致性 | 切换 | 复杂度 | 生产推荐 |
|---|---|---|---|---|
| 主从 + MHA | 最终一致 | 自动 | 中 | 中小公司 |
| MGR | 强一致 | 自动 | 中低 | 官方首选 |
| PXC | 强一致 | 自动 | 高 | 金融/高可用 |
| Keepalived + VIP | 弱一致 | 半自动 | 低 | 简单业务 |
四、企业最主流方案(2025+ 标准)
MySQL 8.0 + MGR(单主)+ MySQL Router
- 强一致
- 自动故障转移
- 对应用透明
- 官方支持、无坑
五、高可用必须开启的关键配置
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
plugin_load_add = "group_replication.so" # MGR
半同步复制(主从必开)
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
六、面试一句话总结
MySQL 高可用主流方案有 MHA、MGR、PXC、Keepalived。中小型公司用 MHA,中大型企业推荐官方 MGR,金融等高一致场景用 PXC。核心是消除单点、自动切换、数据强一致。
关联文档
- MySQL binlog 保留时间与清理 — binlog 配置实操
- MySQL 主从复制备份方式对比 — 备份方式原理对比
- ../../kubernetes/core/K8s 核心概念#StatefulSet — MySQL 有状态部署