首页/数据/备份与容灾速查/MySQL Group Replication

MySQL Group Replication

MySQL 原生组复制:组内多数派确认事务,单主模式可自动选主并切换;相比传统主从+外部编排,把共识与切换能力内置到数据库。

备份与容灾速查数据更新于 2026-10-13

MySQL 组复制是什么

MySQL Group Replication(MGR)是 5.7.17 起内置的组复制插件:基于多数派共识协议,事务在组内多数成员确认后才提交,单主模式下主库故障能自动选主并切换。相比传统「主从复制 + 外部中间件编排」,它把共识与故障切换能力内置到了数据库自身。

基本信息

适用版本MySQL 5.7.17 及以后、8.0(以插件 group_replication 提供)
模式单主(自动选主,推荐)与多主(需应用自己处理写冲突)
确认机制事务需多数派成员确认,少数派分区无法提交
前置条件InnoDB 引擎、GTID 开启、binlog 为 ROW 格式、表需有主键或等效唯一键
监控方式performance_schema.replication_group_members 查看成员与角色
组通信各成员需配置本机组通信地址(默认 33061,可改)

典型使用场景

  • 需要自动故障切换的写入集群:不再依赖外部选主中间件
  • 三节点高可用:容忍单个节点故障且不丢失多数派
  • 简化架构:替换「主从复制 + 中间件 + 脚本切主」的组合
  • 成员变更自动化:按流程加入或摘除节点,组内自动收敛
  • 跨机房部署:按容错要求分布节点,但要接受网络延迟对吞吐的影响

初始化与加入组

初始化与加入组
# 前置检查:GTID、binlog 行格式、主键要求
SHOW VARIABLES LIKE 'gtid_mode';              # 需为 ON
SHOW VARIABLES LIKE 'binlog_format';          # 需为 ROW
SHOW VARIABLES LIKE 'enforce_gtid_consistency';  # 需为 ON
# 第一个节点引导启动组(整个组只做一次)
SET GLOBAL group_replication_bootstrap_group = ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group = OFF;
# 后续节点先指向已运行成员,再启动组复制
SET GLOBAL group_replication_group_seeds = 'host1:33061,host2:33061';
START GROUP_REPLICATION;
# 查看成员状态与角色
SELECT member_host, member_port, member_state, member_role FROM performance_schema.replication_group_members;

成员状态读法

列含义正常/异常
member_stateONLINE、RECOVERING、ERROR、OFFLINE 等出现 ERROR 要立刻查错误日志,OFFLINE 说明没进组
member_rolePRIMARY 或 SECONDARY单主模式下应只有一个 PRIMARY
member_host / port成员地址与端口与真实拓扑不符说明配置写错
member_id成员唯一标识重建或克隆过的实例 id 会变化,需在监控里同步
member_version成员数据库版本组内版本差异过大时要按官方版本策略处理
MGR 的前置条件比较硬:InnoDB、GTID、binlog ROW 缺一不可,表没有主键会导致写入被拒。部署前按官方文档逐项核对,别在生产上边试边改。
恢复行为要预先设计:成员掉线后是否能自动重新加入、多久算超时被踢出,这些参数决定故障时的收敛速度,也决定运维要不要人工介入。

易错点

  • 节点数与分布不按容错计算:成员不足多数派时整个组拒写,两个节点挂一个就停摆
  • 多主模式下应用未处理冲突:写入冲突以事务回滚或延迟的形式暴露出来
  • 表缺主键:相关写入被直接拒绝,业务报错但根因在索引设计
  • 忽略网络延迟影响:跨机房部署时共识往返开销直接压低写入吞吐

数据来源与参考

  • MySQL 8.0 Reference Manual(Group Replication)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌