我有一个部署在 kubernetes(k8s) 上的 3 节点 mysql InnoDB 集群。每个 mysql 节点都是一个 k8s POD。为了测试可用性,我手动删除了对应的docker容器mysql主节点(使用命令'docker rm xxxx -f)。正如预期的那样,k8s 成功地重新创建了容器。但是,新创建的一个未能加入集群(更具体地说,未能加入组复制)。它抱怨该成员在当前组中没有交易。但是,额外的事务是将 SESSION.GTID_NEXT 设置为 AUTOMATIC 的操作。我不知道为什么它在 binlog 中并使重新加入失败。有人能给我一些提示或建议吗?非常感谢!
MySQL 版本是 mysql-community-server-minimal-5.7.20-1。它是从 rpm 安装的。
InnodDB 集群是通过采用现有的复制组创建的。这说我首先创建了复制组,然后创建了集群。
MySQL日志是这样的:
2018-03-12T08:17:21.208124Z 0 [注意] 插件 group_replication 报告:'新状态 x_run' 2018-03-12T08:17:21.218361Z 0 [错误] 插件 group_replication 报告:'此成员执行的事务比那些出现在群里。本地事务:925deea1-75db-4e92-86a9-00259c8d8078:1-50 > 组事务:925deea1-75db-4e92-86a9-00259c8d8078:1-2' 2018-03-12T08:17:21.218433Z 0 [错误] 插件 group_replication报告:'该成员包含组中不存在的事务。该成员现在将退出该组。2018-03-12T08:17:21.218444Z 0 [Note] 插件 group_replication 报告:'要强制此成员进入组,您可以使用 group_replication_allow_local_disjoint_gtids_join 选项' 2018-03-12T08:17:21.218493Z 3 [Note] 插件 group_replication 报告:' 正在等待视图修改' 2018-03-12T08:17:21.218546Z 0 [注意] 插件 group_replication 报告:'选择了地址为 t-baj3bsrg4cp000a1sp3g-mysql-0.mysql:3306 的新主节点,启用冲突检测直到新主应用所有中继日志。2018-03-12T08:17:21.218597Z 15 [注意] 插件 group_replication 报告:“此服务器正在作为主要成员工作。” 2018-03-12T08:17:21.218634Z 0 [注意] 插件 group_replication 报告:'组成员更改为 t-baj3bsrg4cp000a1sp3g-mysql-0.mysql:3306,t-baj3bsrg4cp000a1sp3g-mysql-1.mysql:3306,在视图 1520842242792 :3。2018-03-12T08:17:21.218655Z 0 [注意] 插件 group_replication 报告:'地址为 t-baj3bsrg4cp000a1sp3g-mysql-2.mysql:3306 的成员在复制组中被声明为在线' 2018-03-12T08:17: 21. 218825Z 4 [错误] 插件 group_replication 报告:'无法更新服务器端的认证结果,thread_id:136' 2018-03-12T08:17:21.218838Z 4 [错误] 插件 group_replication 报告:'事件处理错误!出现错误:1' 2018-03-12T08:17:21.218849Z 4 [错误] 插件 group_replication 报告:'在组复制的应用程序进程上执行期间出现致命错误。服务器现在将离开该组。2018-03-12T08:17:21.218864Z 4 [警告] 插件 group_replication 报告:“跳过离开操作:正在进行的离开组的并发尝试。” 2018-03-12T08:17:21.218996Z 7 [注意] 读取通道“group_replication_applier”的中继日志事件时出错:从属 SQL 线程被杀死 无法在服务器端更新认证结果,thread_id: 136' 2018-03-12T08:17:21.218838Z 4 [错误] 插件 group_replication 报告:'事件处理错误!出现错误:1' 2018-03-12T08:17:21.218849Z 4 [错误] 插件 group_replication 报告:'在组复制的应用程序进程上执行期间出现致命错误。服务器现在将离开该组。2018-03-12T08:17:21.218864Z 4 [警告] 插件 group_replication 报告:“跳过离开操作:正在进行的离开组的并发尝试。” 2018-03-12T08:17:21.218996Z 7 [注意] 读取通道“group_replication_applier”的中继日志事件时出错:从属 SQL 线程被杀死 无法在服务器端更新认证结果,thread_id: 136' 2018-03-12T08:17:21.218838Z 4 [错误] 插件 group_replication 报告:'事件处理错误!出现错误:1' 2018-03-12T08:17:21.218849Z 4 [错误] 插件 group_replication 报告:'在组复制的应用程序进程上执行期间出现致命错误。服务器现在将离开该组。2018-03-12T08:17:21.218864Z 4 [警告] 插件 group_replication 报告:“跳过离开操作:正在进行的离开组的并发尝试。” 2018-03-12T08:17:21.218996Z 7 [注意] 读取通道“group_replication_applier”的中继日志事件时出错:从属 SQL 线程被杀死 2018-03-12T08:17:21.218849Z 4 [错误] 插件 group_replication 报告:'在组复制的应用程序进程上执行期间出现致命错误。服务器现在将离开该组。2018-03-12T08:17:21.218864Z 4 [警告] 插件 group_replication 报告:“跳过离开操作:正在进行的离开组的并发尝试。” 2018-03-12T08:17:21.218996Z 7 [注意] 读取通道“group_replication_applier”的中继日志事件时出错:从属 SQL 线程被杀死 2018-03-12T08:17:21.218849Z 4 [错误] 插件 group_replication 报告:'在组复制的应用程序进程上执行期间出现致命错误。服务器现在将离开该组。2018-03-12T08:17:21.218864Z 4 [警告] 插件 group_replication 报告:“跳过离开操作:正在进行的离开组的并发尝试。” 2018-03-12T08:17:21.218996Z 7 [注意] 读取通道“group_replication_applier”的中继日志事件时出错:从属 SQL 线程被杀死
故障节点上显示的 Bin 日志事件是:
+--------------------------------------------+----- +----------------+------------+-------------+------ -------------------------------------+ | 日志名称 | 位置 | 事件类型 | 服务器_id | 结束日志位置 | 信息 | +--------------------------------------------+----- +----------------+------------+-------------+------ -------------------------------------+ | t-baj3bsrg4cp000a1sp3g-mysql-0-bin.000003 | 4 | 格式描述 | 100 | 123 | 服务器版本:5.7.20-log,Binlog 版本:4 | | t-baj3bsrg4cp000a1sp3g-mysql-0-bin.000003 | 123 | 上一个_gtids | 100 | 190 | 925deea1-75db-4e92-86a9-00259c8d8078:1-50 | +--------------------------------------------+----- +----------------+------------+-------------+------ -------------------------------------------------+
binlog 文件中显示的 925deea1-75db-4e92-86a9-00259c8d8078:1-50 的事务:
仅供参考,根据 mysql 日志,设置 group_replication_allow_local_disjoint_gtids_join 选项对我有用。但是,请参阅选项group_replication_allow_local_disjoint_gtids_join的最新文档,它将在 mysql 5.7.22 中删除。所以,我必须找出问题的根本原因。谢谢!