GreatSQL社区

搜索

[待回复] Docker搭建MGR集群失败

30 4 3 天前
本帖最后由 Mark 于 2025-5-14 15:21 编辑

1、配置文件my.cnf如下:
  1. [mysqld]
  2. user = mysql
  3. port=3306
  4. server_id=1
  5. log-error=/var/log/mysql/mysql-error.log

  6. #启用mgr要求
  7. #每个节点都要启用binlog
  8. log-bin=mgr-binlog
  9. #binlog format务必是row模式
  10. binlog_format=ROW
  11. #要求启用 GTID
  12. #gtid事务一致性的强制检查
  13. gtid_mode=ON
  14. enforce_gtid_consistency=ON
  15. #每个节点都要转存binlog
  16. log_slave_updates=1
  17. #在8.0.20之前,要求 binlog_checksum=NONE,但是从8.0.20后,可以设置 binlog_checksum=CRC32。
  18. binlog_checksum=NONE
  19. #要求 master_info_repository=TABLE 及 relay_log_info_repository=TABLE,不过从MySQL 8.0.23开始,这两个选项已经默认设置TABLE,因此无需再单独设置。
  20. master_info_repository = TABLE
  21. relay_log_info_repository = TABLE
复制代码
2、首先通过上述配置文件,修改了其中的server_id,分别启动了3个容器:mgr4、mgr5、mgr6
docker启动脚本如下:
  1. 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地址,让其作为引导节点:
  1. #my.cnf
  2. [mysqld]
  3. user = mysql
  4. port=3306
  5. server_id=1
  6. log-error=/var/log/mysql/mysql-error.log

  7. #启用mgr要求
  8. #每个节点都要启用binlog
  9. log-bin=mgr-binlog
  10. #binlog format务必是row模式
  11. binlog_format=ROW
  12. #要求启用 GTID
  13. #gtid事务一致性的强制检查
  14. gtid_mode=ON
  15. enforce_gtid_consistency=ON
  16. #每个节点都要转存binlog
  17. log_slave_updates=1
  18. #在8.0.20之前,要求 binlog_checksum=NONE,但是从8.0.20后,可以设置 binlog_checksum=CRC32。
  19. binlog_checksum=NONE
  20. #要求 master_info_repository=TABLE 及 relay_log_info_repository=TABLE,不过从MySQL 8.0.23开始,这两个选项已经默认设置TABLE,因此无需再单独设置。
  21. master_info_repository = TABLE
  22. relay_log_info_repository = TABLE

  23. #启用mgr,后续知道ip再配置上去,再重启MySQL
  24. plugin_load_add='group_replication.so'
  25. group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa2"
  26. group_replication_local_address= "172.19.0.5:33061"
  27. group_replication_group_seeds= "172.19.0.5:33061,172.19.0.6:33061,172.19.0.7:33061"
  28. #设置白名单
  29. loose-group-replication-ip-whitelist="172.19.0.5,172.19.0.6,172.19.0.7,192.168.0.180"
  30. #建议只用单主模式
  31. loose-group_replication_single_primary_mode=ON
  32. #当使用 Group Replication时,强制要求指定 MySQL 用于提取和计算事务写集(WriteSet)的哈希算法,XXHASH64:是一种快速、高效的64位哈希算法
  33. transaction_write_set_extraction=XXHASH64
  34. #建议启用writeset模式,保持事务顺序。事务由多线程并行应用(执行),但按主库的原始顺序提交。何时可以禁用?只读报表从库或允许最终一致性的场景。
  35. slave_preserve_commit_order=1
复制代码
5、重启mgr4:
doker restart mgr4
查看mgr4的错误日志内容,报错信息如下:
  1. 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.'
  2. 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.'
  3. 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.'
  4. 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.'
  5. 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.'
  6. 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.'
  7. 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.'
  8. 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.'
  9. 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.'
  10. 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.'
  11. 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.'
  12. 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.'
  13. 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.'
  14. 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.'
  15. 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.'
  16. 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.'
  17. 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.'
  18. 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.'
  19. 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.'
  20. 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.'
  21. 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'
  22. 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'
  23. 2025-05-14T06:09:43.471453Z 2 [ERROR] [MY-011640] [Repl] Plugin group_replication reported: 'Timeout on wait for view after joining group'
  24. 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.'
  25. 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:
  1. #my.cnf
  2. [mysqld]
  3. user = mysql
  4. port=3306
  5. server_id=2
  6. log-error=/var/log/mysql/mysql-error.log

  7. #启用mgr要求
  8. #每个节点都要启用binlog
  9. log-bin=mgr-binlog
  10. #binlog format务必是row模式
  11. binlog_format=ROW
  12. #要求启用 GTID
  13. #gtid事务一致性的强制检查
  14. gtid_mode=ON
  15. enforce_gtid_consistency=ON
  16. #每个节点都要转存binlog
  17. log_slave_updates=1
  18. #在8.0.20之前,要求 binlog_checksum=NONE,但是从8.0.20后,可以设置 binlog_checksum=CRC32。
  19. binlog_checksum=NONE
  20. #要求 master_info_repository=TABLE 及 relay_log_info_repository=TABLE,不过从MySQL 8.0.23开始,这两个选项已经默认设置TABLE,因此无需再单独设置。
  21. master_info_repository = TABLE
  22. relay_log_info_repository = TABLE

  23. #启用mgr,后续知道ip再配置上去,再重启MySQL
  24. plugin_load_add='group_replication.so'
  25. group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa2"
  26. group_replication_local_address= "172.19.0.6:33061"
  27. group_replication_group_seeds= "172.19.0.5:33061,172.19.0.6:33061,172.19.0.7:33061"
  28. #设置白名单
  29. loose-group-replication-ip-whitelist="172.19.0.5,172.19.0.6,172.19.0.7,192.168.0.180"
  30. #建议只用单主模式
  31. loose-group_replication_single_primary_mode=ON
  32. #当使用 Group Replication时,强制要求指定 MySQL 用于提取和计算事务写集(WriteSet)的哈希算法,XXHASH64:是一种快速、高效的64位哈希算法
  33. transaction_write_set_extraction=XXHASH64
  34. #建议启用writeset模式,保持事务顺序。事务由多线程并行应用(执行),但按主库的原始顺序提交。何时可以禁用?只读报表从库或允许最终一致性的场景。
  35. slave_preserve_commit_order=1
复制代码
8、重启mgr5
docker restart mgr5
9、创建MGR服务专用账号及配置MGR服务通道
  1. #创建repl账号
  2. set session sql_log_bin=0;
  3. create user repl@'%' identified by 'xxx';
  4. GRANT BACKUP_ADMIN, REPLICATION SLAVE ON *.* TO `repl`@`%`;
  5. set session sql_log_bin=1;

  6. #配置MGR服务通道
  7. CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='xxx' FOR CHANNEL 'group_replication_recovery';

  8. #启动MGR服务
  9. start group_replication;
复制代码
执行:start group_replication,报错如下内容:
  1. 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'
  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.'
  3. 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.'
  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.'
  5. 2025-05-14T07:11:11.066708Z 17 [System] [MY-011566] [Repl] Plugin group_replication reported: 'Setting super_read_only=OFF.'
复制代码



全部回复(4)
yejr 3 天前
用Docker-compose构建MGR集群可以参考这个方法 https://gitee.com/GreatSQL/GreatSQL-Docker/tree/master/GreatSQL#如何通过docker-compose构建mgr集群单主模式
yejr 3 天前
你上面的操作过程有些问题,导致Secondary节点上的事务和Primary节点上的事务发生冲突了,日志中已有提示

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'
Mark 昨天 09:24
yejr 发表于 2025-5-14 17:50
你上面的操作过程有些问题,导致Secondary节点上的事务和Primary节点上的事务发生冲突了,日志中已有提示

...

其实你看这个错误日志,我是没有任务额外事务在Secondary节点的,他们都是1-5这5个事务,只不过前面的uuid不一样。但是uuid本来就要求每个节点的server-uuid要不一样。所以这里看起来是事务不一样,其实我是没有执行过任务事务的,这个就是docker容器起起来后的默认事务。
yejr 昨天 10:13
Mark 发表于 2025-5-16 09:24
其实你看这个错误日志,我是没有任务额外事务在Secondary节点的,他们都是1-5这5个事务,只不过前面的uui ...

初期有些操作是可以不要记录binlog的,否则会引发冲突。
想要用Docker跑MGR可以参考我们提供的docker-compose模板。
Mark

1

主题

0

博客

3

贡献

新手上路

Rank: 1

积分
5

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-5-17 15:15 , Processed in 0.027186 second(s), 17 queries , Redis On.
快速回复 返回顶部 返回列表