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成熟稳定、成本低,适合存量架构。
  • 高可用 =架构冗余 + 自动切换 + 数据一致 + 完善监控
相关推荐
沐怡旸2 小时前
深入解析 Android Performance Analyzer (APA) 底层架构与技术原理
android
李斯维10 小时前
从历史的角度看 Android 软件架构
android·架构·android jetpack
plainGeekDev12 小时前
Activity 间传值 → Navigation 参数
android·java·kotlin
用户416596736935512 小时前
Android WebView 加载 file:// 离线页面调试教程
android·前端
plainGeekDev13 小时前
onActivityResult → ActivityResult API
android·java·kotlin
吃糖的小孩16 小时前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
随遇丿而安17 小时前
第10周:Activity 基础功能与生命周期优化
android
alexhilton1 天前
Android车载OS中的Remote Compose
android·kotlin·android jetpack
笃行3501 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3501 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库