mysql的Group Replication也就是组复制功能,是官方提供的原生高可用解决方案,支持单主和多主两种模式,能够让多个mysql实例组成一个复制组,组内数据自动同步,当主节点故障时可以自动选举新的主节点,保障业务连续性。本文以单主模式为例,介绍完整的配置流程。

环境准备
本次配置使用3台mysql 8.0版本的实例,实例信息如下:
| 实例标识 | IP地址 | 端口 | 角色 |
|---|---|---|---|
| 节点1 | 192.168.0.101 | 3306 | 初始主节点 |
| 节点2 | 192.168.0.102 | 3306 | 从节点 |
| 节点3 | 192.168.0.103 | 3306 | 从节点 |
所有节点的mysql版本需要保持一致,且网络互通,防火墙开放对应端口。
基础参数配置
所有节点都需要修改mysql的配置文件my.cnf,添加以下组复制相关参数,修改完成后重启mysql实例。
[mysqld] # 基础配置 server_id=1 # 每个节点的server_id必须唯一,节点2设为2,节点3设为3 gtid_mode=ON enforce_gtid_consistency=ON binlog_checksum=NONE log_bin=binlog log_slave_updates=ON binlog_format=ROW # 组复制核心配置 plugin_load_add='group_replication.so' group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" # 组名,所有节点保持一致,格式为UUID group_replication_start_on_boot=OFF # 关闭启动时自动加入组,手动控制 group_replication_single_primary_mode=ON # 开启单主模式 group_replication_enforce_update_everywhere_checks=OFF # 单主模式下关闭多主检查 group_replication_local_address="192.168.0.101:33061" # 节点本地通信地址,端口和mysql端口区分,节点2改为192.168.0.102:33061,节点3改为192.168.0.103:33061 group_replication_group_seeds="192.168.0.101:33061,192.168.0.102:33061,192.168.0.103:33061" # 所有节点的通信地址列表
创建复制用户
所有节点都需要创建用于组复制的用户,该用户需要有REPLICATION SLAVE权限,并且使用mysql native密码插件。
-- 创建复制用户,所有节点执行相同操作 CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@123456'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; ALTER USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Repl@123456'; FLUSH PRIVILEGES;
安装并启动组复制
初始主节点操作
在节点1上执行以下操作,初始化组复制。
-- 安装组复制插件 INSTALL PLUGIN group_replication SONAME 'group_replication.so'; -- 配置复制通道 CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='Repl@123456', SOURCE_HOST='192.168.0.101', SOURCE_PORT=3306, GET_SOURCE_PUBLIC_KEY=1 FOR CHANNEL 'group_replication_recovery'; -- 启动组复制,作为第一个节点初始化组 SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=OFF;
其他节点操作
节点2和节点3执行以下操作,加入已有的复制组。
-- 安装组复制插件 INSTALL PLUGIN group_replication SONAME 'group_replication.so'; -- 配置复制通道,注意SOURCE_HOST填写当前节点的IP CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='Repl@123456', SOURCE_HOST='192.168.0.102', -- 节点3改为192.168.0.103 SOURCE_PORT=3306, GET_SOURCE_PUBLIC_KEY=1 FOR CHANNEL 'group_replication_recovery'; -- 启动组复制,加入已有组 START GROUP_REPLICATION;
验证配置结果
在任意节点执行以下SQL,查看组复制成员状态:
SELECT * FROM performance_schema.replication_group_members;
如果所有节点的MEMBER_STATE字段都为ONLINE,说明组复制配置成功。在单主模式下,MEMBER_ROLE字段会显示一个PRIMARY和多个SECONDARY。
注意事项
- 所有节点的
server_id必须唯一,group_replication_group_name必须完全一致 - 组复制要求表必须有主键,否则写入数据时会报错
- 新增节点时,需要先同步已有组的基础数据,再执行加入组的操作
- 如果需要切换多主模式,需要关闭所有节点的组复制,修改
group_replication_single_primary_mode为OFF,再重新启动组复制
mysqlGroup_Replication组复制配置数据库高可用修改时间:2026-07-21 17:27:30