3

我有一个部署在 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 中删除。所以,我必须找出问题的根本原因。谢谢!

4

1 回答 1

0

我的建议是重新检查您的基础设施,因为您发现您没有 1 笔额外的交易。如果您查看粘贴的信息

925deea1-75db-4e92-86a9-00259c8d8078:1-50 > 925deea1-75db-4e92-86a9-00259c8d8078:1-2 

1-50 与 1-2 表示您有 48 笔额外交易。

此外,您正在查看一个新的 binlog 文件,因为您清除了旧的文件或进行了轮换。在这个新文件中,您看到的唯一信息是 Previous-GTID 信息是 925deea1-75db-4e92-86a9-00259c8d8078:1-50,这意味着旧的 binlog 文件包含有关这 50 个事务的信息。

您可以使用命令

 SHOW BINARY LOGS;

接着

SHOW BINLOG EVENTS [IN 'log_name']

要获取有关旧事件的更多信息或使用mysqlbinlog实用程序检查其他文件。

于 2018-12-21T11:14:19.233 回答