1、组架构图

这里使用系统centos7,然后使用宝塔快速安装mysql8.4。
2、配置网络环境
对三台服务器进行操作,打开hosts文件,配置hosts。
vim /etc/hosts
添加以下内容。注意:IP和域名完全可以自定义
10.110.80.50 s1 10.110.80.51 s2 10.110.80.52 s3
使用防火墙,打开端口3306、33061、33060。其中33060是在33061无法使用的时候自动切换的备用端口。
3、配置主节点mysql配置文件
使用宝塔安装的mysql8.4,配置文件位置:/etc/my.cnf。其他安装方式请自查。注意:以下配置需要放在[mysqld] 标签之下。
# 禁用存储引擎,注意启用MGR必须使用InnoDb存储引擎。 disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" # 复制框架配置 # 将服务器设置为唯一ID 1 server_id=1 gtid_mode=ON enforce_gtid_consistency=ON # 组复制设置 plugin_load_add='group_replication.so' group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" group_replication_start_on_boot=off group_replication_local_address= "s1:33061" group_replication_group_seeds= "s1:33061,s2:33061,s3:33061" group_replication_bootstrap_group=off
注意查看该配置binlog_format。如果他的值不是binlog_format=ROW。请将其修改为binlog_format=ROW。不然会引发报错。
4、配置主节点MGR用户
主节点S1,进入mysql的命令行执行以下语句创建用户。
SET SQL_LOG_BIN=0; CREATE USER 自定义的用户名@'%' IDENTIFIED BY '自定义的密码'; GRANT REPLICATION SLAVE ON *.* TO 自定义用户名@'%'; GRANT CONNECTION_ADMIN ON *.* TO 自定义用户名@'%'; GRANT BACKUP_ADMIN ON *.* TO 自定义用户名@'%'; GRANT GROUP_REPLICATION_STREAM ON *.* TO 自定义用户名@'%'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1; CHANGE REPLICATION SOURCE TO SOURCE_USER='自定义的用户名', SOURCE_PASSWORD='自定义的密码' FOR CHANNEL 'group_replication_recovery';
注意:记得这里的用户名和密码,后面可能还会用到。
5、主节点启动MGR
在mysql命令行中运行指令:
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
然后检查是否启动成功,运行指令:SHOW PLUGINS;如果成功会显示类似如下结果:

6、主节点引导MGR
在mysql命令行中执行如下语句:
SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=OFF;
然后运行SELECT * FROM performance_schema.replication_group_members;来查看结果,如果正常则会返回如下结果:

7、子节点配置文件,只提供S2示例,S3可以类比。
要添加第二个实例,服务器 s2,首先创建 它的配置文件。配置类似于 一个用于服务器 S1,但 server_id 之类的东西除外。
[mysqld] # # Disable other storage engines # disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" # # Replication configuration parameters # server_id=2 gtid_mode=ON enforce_gtid_consistency=ON # # Group Replication configuration # plugin_load_add='group_replication.so' group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" group_replication_start_on_boot=off group_replication_local_address= "s2:33061" group_replication_group_seeds= "s1:33061,s2:33061,s3:33061" group_replication_bootstrap_group= off
然后创建用户:
SET SQL_LOG_BIN=0; CREATE USER 自定义用户名@'%' IDENTIFIED BY '自定义密码'; GRANT REPLICATION SLAVE ON *.* TO 自定义用户名@'%'; GRANT CONNECTION_ADMIN ON *.* TO 自定义用户名@'%'; GRANT BACKUP_ADMIN ON *.* TO 自定义用户名@'%'; GRANT GROUP_REPLICATION_STREAM ON *.* TO 自定义用户名@'%'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1; CHANGE REPLICATION SOURCE TO SOURCE_USER='自定义用户名', SOURCE_PASSWORD='自定义密码' FOR CHANNEL 'group_replication_recovery';
然后启动MGR,执行sql指令:
START GROUP_REPLICATION;
或:
START GROUP_REPLICATION USER='自定义用户名', PASSWORD='自定义密码';
然后运行sql指令:SELECT * FROM performance_schema.replication_group_members;来查看结果,如果成功返回结果如下图:

至此第二个节点S2添加完毕,可以参考S2的步骤添加上S3节点。
