MySQL高可用

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. 部署步骤

  1. 安装 MySQL 8.0、配置 hosts、关闭防火墙 / SELinux。
  2. 所有节点配置 my.cnf、启动 MySQL。
  3. 安装 MGR 插件、创建复制用户。
  4. 首节点引导集群(bootstrap=ON),其他节点加入。
  5. 查看集群状态: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。

六、生产选型建议

  1. 中小业务 / 非核心:主从 + 读写分离 + 手动切换。
  2. 核心 / 金融 / 高可靠MGR 单主(3 节点)+MySQL Router + 监控
  3. 已有主从、低成本升级:MHA+Keepalived。
  4. 多机房 / 多活写入:PXC/Galera。

七、常见问题与避坑

  • MGR 大事务 :提交超时、节点卡住 → 拆分事务
  • 脑裂 :网络分区双主 → 奇数节点 + 多数派
  • 数据不一致 :主从异步丢失 → MGR 强一致 / 半同步
  • 性能损耗:MGR 共识、PXC 同步 → 合理分片、优化事务。

八、总结

  • MGR 是 MySQL 官方高可用标准方案,强一致、自动切换,适合核心业务。
  • 主从 + MHA成熟稳定、成本低,适合存量架构。
  • 高可用 =架构冗余 + 自动切换 + 数据一致 + 完善监控
相关推荐
紫金修道4 小时前
【DeepAgent】概述
开发语言·数据库·python
孟章豪5 小时前
《SQL拼接 vs 参数化,为什么公司禁止拼接SQL?(附真实案例)》
服务器·数据库·sql
荒川之神5 小时前
ORACLE LEVEL函数练习
数据库·oracle
hsjcjh5 小时前
Nodemailer使用教程:在Node.js中发送电子邮件
linux·运维·node.js
·云扬·5 小时前
【MySQL】实战:用pt-table-sync修复主从数据一致性问题
数据库·mysql·ffmpeg
swIn KWAL6 小时前
【MySQL】环境变量配置
数据库·mysql·adb
shark22222226 小时前
【JOIN】关键字在MySql中的详细使用
数据库·mysql
RATi GORI6 小时前
MySQL中的CASE WHEN语句:用法、示例与解析
android·数据库·mysql
坊钰6 小时前
Java 死锁问题及其解决方案
java·开发语言·数据库