本帖最后由 Mark 于 2025-5-14 15:21 编辑
1、配置文件my.cnf如下:
- [mysqld]
- user = mysql
- port=3306
- server_id=1
- log-error=/var/log/mysql/mysql-error.log
- #启用mgr要求
- #每个节点都要启用binlog
- log-bin=mgr-binlog
- #binlog format务必是row模式
- binlog_format=ROW
- #要求启用 GTID
- #gtid事务一致性的强制检查
- gtid_mode=ON
- enforce_gtid_consistency=ON
- #每个节点都要转存binlog
- log_slave_updates=1
- #在8.0.20之前,要求 binlog_checksum=NONE,但是从8.0.20后,可以设置 binlog_checksum=CRC32。
- binlog_checksum=NONE
- #要求 master_info_repository=TABLE 及 relay_log_info_repository=TABLE,不过从MySQL 8.0.23开始,这两个选项已经默认设置TABLE,因此无需再单独设置。
- master_info_repository = TABLE
- relay_log_info_repository = TABLE
复制代码 2、首先通过上述配置文件,修改了其中的server_id,分别启动了3个容器:mgr4、mgr5、mgr6
docker启动脚本如下:
- docker run --name mgr4 --hostname=mgr4 --net=mgr-net --restart unless-stopped -v /home/mgr/mgr4/conf/my.cnf:/etc/mysql/conf.d/mysql.cnf -v /home/mgr/mgr4/logs:/var/log/mysql -v /home/mgr/mgr4/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxx -d -i -p 4306:3306 -p 43060:33060 -p 43061:33061 greatsql:8.0.25
复制代码 docker容器信息如下:

3、docker inspect mgr4 | grep IPAddress,查看容器ip如下

4、找到容器ip后,修改mgr4的my.cnf,指定每个节点正确的内网ip地址,让其作为引导节点:
- #my.cnf
- [mysqld]
- user = mysql
- port=3306
- server_id=1
- log-error=/var/log/mysql/mysql-error.log
- #启用mgr要求
- #每个节点都要启用binlog
- log-bin=mgr-binlog
- #binlog format务必是row模式
- binlog_format=ROW
- #要求启用 GTID
- #gtid事务一致性的强制检查
- gtid_mode=ON
- enforce_gtid_consistency=ON
- #每个节点都要转存binlog
- log_slave_updates=1
- #在8.0.20之前,要求 binlog_checksum=NONE,但是从8.0.20后,可以设置 binlog_checksum=CRC32。
- binlog_checksum=NONE
- #要求 master_info_repository=TABLE 及 relay_log_info_repository=TABLE,不过从MySQL 8.0.23开始,这两个选项已经默认设置TABLE,因此无需再单独设置。
- master_info_repository = TABLE
- relay_log_info_repository = TABLE
- #启用mgr,后续知道ip再配置上去,再重启MySQL
- plugin_load_add='group_replication.so'
- group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa2"
- group_replication_local_address= "172.19.0.5:33061"
- group_replication_group_seeds= "172.19.0.5:33061,172.19.0.6:33061,172.19.0.7:33061"
- #设置白名单
- loose-group-replication-ip-whitelist="172.19.0.5,172.19.0.6,172.19.0.7,192.168.0.180"
- #建议只用单主模式
- loose-group_replication_single_primary_mode=ON
- #当使用 Group Replication时,强制要求指定 MySQL 用于提取和计算事务写集(WriteSet)的哈希算法,XXHASH64:是一种快速、高效的64位哈希算法
- transaction_write_set_extraction=XXHASH64
- #建议启用writeset模式,保持事务顺序。事务由多线程并行应用(执行),但按主库的原始顺序提交。何时可以禁用?只读报表从库或允许最终一致性的场景。
- slave_preserve_commit_order=1
复制代码 5、重启mgr4:
doker restart mgr4
查看mgr4的错误日志内容,报错信息如下:
- 2025-05-14T06:09:39.060261Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.060549Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.060766Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.060971Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.061194Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.061400Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.061601Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.061797Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.061996Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.062202Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.062410Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.062609Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.062809Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.063023Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.063253Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.063459Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.063656Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.063863Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.064062Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.6:33061 on local port: 33061.'
- 2025-05-14T06:09:39.064285Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error on opening a connection to 172.19.0.7:33061 on local port: 33061.'
- 2025-05-14T06:09:39.064333Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error connecting to all peers. Member join failed. Local port: 33061'
- 2025-05-14T06:09:40.126276Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] The member was unable to join the group. Local port: 33061'
- 2025-05-14T06:09:43.471453Z 2 [ERROR] [MY-011640] [Repl] Plugin group_replication reported: 'Timeout on wait for view after joining group'
- 2025-05-14T06:09:43.471607Z 2 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] The member is leaving a group without being on one.'
- 2025-05-14T06:09:43.474533Z 2 [System] [MY-011566] [Repl] Plugin group_replication reported: 'Setting super_read_only=OFF.'
复制代码 6、虽然上面出现报错,但是继续按照第3章:https://greatsql.cn/blog-10-13.html 安装部署MGR集群步骤是可以往下走了,现在搭建主节点成功了,主节点输出如下内容

7、现在按照第3章继续设置另外2个节点,修改mgr5节点的my.cnf:
- #my.cnf
- [mysqld]
- user = mysql
- port=3306
- server_id=2
- log-error=/var/log/mysql/mysql-error.log
- #启用mgr要求
- #每个节点都要启用binlog
- log-bin=mgr-binlog
- #binlog format务必是row模式
- binlog_format=ROW
- #要求启用 GTID
- #gtid事务一致性的强制检查
- gtid_mode=ON
- enforce_gtid_consistency=ON
- #每个节点都要转存binlog
- log_slave_updates=1
- #在8.0.20之前,要求 binlog_checksum=NONE,但是从8.0.20后,可以设置 binlog_checksum=CRC32。
- binlog_checksum=NONE
- #要求 master_info_repository=TABLE 及 relay_log_info_repository=TABLE,不过从MySQL 8.0.23开始,这两个选项已经默认设置TABLE,因此无需再单独设置。
- master_info_repository = TABLE
- relay_log_info_repository = TABLE
- #启用mgr,后续知道ip再配置上去,再重启MySQL
- plugin_load_add='group_replication.so'
- group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa2"
- group_replication_local_address= "172.19.0.6:33061"
- group_replication_group_seeds= "172.19.0.5:33061,172.19.0.6:33061,172.19.0.7:33061"
- #设置白名单
- loose-group-replication-ip-whitelist="172.19.0.5,172.19.0.6,172.19.0.7,192.168.0.180"
- #建议只用单主模式
- loose-group_replication_single_primary_mode=ON
- #当使用 Group Replication时,强制要求指定 MySQL 用于提取和计算事务写集(WriteSet)的哈希算法,XXHASH64:是一种快速、高效的64位哈希算法
- transaction_write_set_extraction=XXHASH64
- #建议启用writeset模式,保持事务顺序。事务由多线程并行应用(执行),但按主库的原始顺序提交。何时可以禁用?只读报表从库或允许最终一致性的场景。
- slave_preserve_commit_order=1
复制代码 8、重启mgr5
docker restart mgr5
9、创建MGR服务专用账号及配置MGR服务通道
- #创建repl账号
- set session sql_log_bin=0;
- create user repl@'%' identified by 'xxx';
- GRANT BACKUP_ADMIN, REPLICATION SLAVE ON *.* TO `repl`@`%`;
- set session sql_log_bin=1;
- #配置MGR服务通道
- CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='xxx' FOR CHANNEL 'group_replication_recovery';
- #启动MGR服务
- start group_replication;
复制代码 执行:start group_replication,报错如下内容:
- 2025-05-14T07:11:07.485288Z 0 [ERROR] [MY-011526] [Repl] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: 95decc1e-3089-11f0-8dd7-0242ac130006:1-5 > Group transactions: 84afb7aa-3089-11f0-aea1-0242ac130005:1-5, aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa2:1-2'
- 2025-05-14T07:11:07.485425Z 0 [ERROR] [MY-011522] [Repl] Plugin group_replication reported: 'The member contains transactions not present in the group. The member will now exit the group.'
- 2025-05-14T07:11:07.485504Z 0 [System] [MY-011503] [Repl] Plugin group_replication reported: 'Group membership changed to mgr4:3306, mgr5:3306 on view 17472059024170723:4.'
- 2025-05-14T07:11:11.063845Z 0 [System] [MY-011504] [Repl] Plugin group_replication reported: 'Group membership changed: This member has left the group.'
- 2025-05-14T07:11:11.066708Z 17 [System] [MY-011566] [Repl] Plugin group_replication reported: 'Setting super_read_only=OFF.'
复制代码
|