MySQL 高可用集群
一、核心概念
- 高可用(HA) :保障数据库服务持续在线、数据不丢失,核心指标 RTO(恢复时间) 、RPO(数据丢失量)。
- 主流方案 :主从复制(基础) 、MGR(官方原生强一致) 、MHA(主从自动切换) 、PXC/Galera(多主同步)。
二、方案对比(生产选型)
1. 主从复制(Master-Slave)
- 原理:主库写 binlog,从库异步 / 半同步重放,一主多从、读写分离。
- 优点:简单、兼容好、性能高、成本低。
- 缺点 :自动切换需外部工具、异步有数据丢失风险。
- 适用:中小业务、非核心、读写分离。
2. MGR(MySQL Group Replication)
- 原理 :基于 Paxos 共识,多数派确认提交,单主 / 多主模式。
- 优点 :强一致(RPO=0)、自动选主、故障自愈、原生支持。
- 缺点:仅 InnoDB、必须主键、对大事务敏感、网络要求高。
- 适用 :核心交易、金融、高可靠场景。
3. MHA(Master High Availability)
- 原理 :主从 + Manager 节点,自动探测、选最优从库升主。
- 优点:切换快(秒~分钟)、支持多引擎、兼容旧版。
- 缺点:Manager 单点、需 SSH 互信、版本停更(2018)。
- 适用:已有主从、需低成本自动切换。
4. PXC(Percona XtraDB Cluster)
- 原理 :Galera 同步复制、多主全可写、强一致。
- 优点:去中心化、无单点、多活、延迟低。
- 缺点:仅 InnoDB、性能受最慢节点影响、DDL 受限。
- 适用:多机房、高并发写入、强一致。
方案速览
表格
| 方案 | 一致性 | 切换 | 复杂度 | 场景 |
|---|---|---|---|---|
| 主从 | 弱 / 半同步 | 手动 / MHA | 低 | 通用、读写分离 |
| MGR | 强一致 | 自动(秒级) | 中 | 核心、金融 |
| MHA | 半同步 | 自动(秒级) | 中 | 主从升级 |
| PXC | 强一致 | 自动(秒级) | 高 | 多活、高并发 |
三、MGR 集群(重点)
1. 核心特性
- 模式 :单主(推荐)(一主多从只读)、多主(全节点可写)。
- 节点数 :3/5/7 奇数节点(防脑裂),最大 9 个。
- 要求 :MySQL 5.7+、GTID=ON、binlog=ROW、InnoDB、主键。
- 通信端口:3306(业务)+33061(组通信)。
2. 关键配置(my.cnf)
ini
[mysqld]
server-id=1
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format=ROW
log_slave_updates=ON
binlog_checksum=NONE
transaction_write_set_extraction=XXHASH64
# MGR
plugin_load_add=group_replication.so
group_replication_group_name="UUID"
group_replication_local_address="IP:33061"
group_replication_group_seeds="IP1:33061,IP2:33061,IP3:33061"
group_replication_single_primary_mode=ON # 单主
group_replication_bootstrap_group=OFF
3. 部署步骤
- 安装 MySQL 8.0、配置 hosts、关闭防火墙 / SELinux。
- 所有节点配置 my.cnf、启动 MySQL。
- 安装 MGR 插件、创建复制用户。
- 首节点引导集群(bootstrap=ON),其他节点加入。
- 查看集群状态:
SELECT * FROM performance_schema.replication_group_members;
4. 故障切换
- 主库宕机:自动选举新主(秒级),业务短暂中断。
- 原主恢复:自动加入为从节点(SECONDARY)。
- 脑裂防护:多数派机制(>N/2 节点存活)。
5. 生产最佳实践
- 单主模式优先、节点 3 个、网络延迟 < 5ms。
- 禁止大事务(<5MB)、拆分批量 DML、避开高峰 DDL。
- 监控:成员状态、复制延迟、流控、事务异常。
四、主从 + MHA(经典方案)
1. 架构
- 1 主 2 从、MHA Manager(独立节点)、VIP+Keepalived。
- 主故障:自动选最新从库升主、切换 VIP、其他从库指向新主。
2. 核心配置
- 主从开启半同步 、GTID。
- MHA 配置文件定义主从、用户、VIP、切换脚本。
- 节点间SSH 免密。
3. 优缺点
- 优:成熟、切换快、兼容好、成本低。
- 缺:Manager 单点、维护复杂、无官方更新。
五、高可用关键组件
1. 读写分离
- ProxySQL/MaxScale/MySQL Router:读写路由、负载均衡、故障屏蔽。
- 应用层:写主库、读从库。
2. 负载均衡与 VIP
- LVS/HAProxy/Keepalived:提供统一入口、故障漂移。
3. 监控告警
- Prometheus+Grafana+Alertmanager:监控连接数、延迟、状态、磁盘、CPU。
六、生产选型建议
- 中小业务 / 非核心:主从 + 读写分离 + 手动切换。
- 核心 / 金融 / 高可靠 :MGR 单主(3 节点)+MySQL Router + 监控。
- 已有主从、低成本升级:MHA+Keepalived。
- 多机房 / 多活写入:PXC/Galera。
七、常见问题与避坑
- MGR 大事务 :提交超时、节点卡住 → 拆分事务。
- 脑裂 :网络分区双主 → 奇数节点 + 多数派。
- 数据不一致 :主从异步丢失 → MGR 强一致 / 半同步。
- 性能损耗:MGR 共识、PXC 同步 → 合理分片、优化事务。
八、总结
- MGR 是 MySQL 官方高可用标准方案,强一致、自动切换,适合核心业务。
- 主从 + MHA成熟稳定、成本低,适合存量架构。
- 高可用 =架构冗余 + 自动切换 + 数据一致 + 完善监控