环境:
操作系统:Debian 9
MySQL:5.7.23(在组复制集群中运行)
问题:
集群运行良好,组复制中有 3 个 mysql 节点,并且一切正常。在组复制集群中添加第 4 个节点时,第 4 个节点能够连接到主节点并开始复制,但是,第 4 个节点始终显示为“RECOVERING”。我检查了日志,但日志中没有错误。
由于第 4 个 mysql 节点能够连接到其他成员并能够复制数据,我确信 mysql 配置中没有问题。
怀疑之一是它与二进制日志事件有关。如果我检查“SHOW BINGLOG EVENTS”的计数,它显示几乎 141957 行,但是,其他节点几乎没有 3-4 行。
mysql> 显示 BINLOG 事件; 141957 行(10.74 秒)
请让我知道如何在 mysql 组复制集群中添加第 4 个节点。
最后,我发现了问题并修复了它。详情如下:
1) 由于在当前组复制节点集和 binlog 配置中执行的 GTID,问题发生了。默认情况下,当前 MySQL 配置中的 binlog 过期天数设置为 0,这意味着它可以存储大量 binlog 文件,这些文件基本上用于行事务和组复制。我清除了旧的 binlog 文件并将 binlog 过期天数设置为“3”。用于该目的的命令。
2) 在 MASTER 服务器上运行上述命令后,我删除了所有旧的 binlog 文件,现在复制需要很长时间。但是,在清除旧的 binlog 文件后,MASTER 无法设置其他节点,因为正在清除旧 binlog 文件中与 MASTER 事件的节点连接。因此,我们需要做一些手动任务。
3) 从当前 MASTER 中取出所有数据库的 mysqldump 并在要添加的第 4 个 mysql 节点上恢复。
4)一旦恢复完成,确保复制配置已经在所有节点的mysql配置中完成,然后重新启动节点。
5) 在第 4 个节点上重新启动复制,然后复制应该在几分钟或几小时内完成(取决于数据库大小)
6) 一旦第 4 个节点显示 ONLINE,该节点即为组复制集群的一部分,可用于其他用途。