Yen*_*Yen 2 mysql innodb mysql-innodb-cluster
我目前正在维护一个具有三个节点的 innodb 集群。它运行良好,但有时会出现一个节点,MISSING
然后我必须将其重新上线。
问题是我插入了一个没有主键的表。然后一个节点失败了。当我想将故障节点重新加入集群时,它说它无法加入,因为有一个没有主键的表。我更改了集群中的表以为其提供主键,但故障节点仍然抱怨相同。所以我删除了故障节点中的表并期望它会重建该表。
现在它说
ERROR: Group Replication join failed.
ERROR: Error joining instance to cluster: '192.168.123.45@3306' - Query failed. 3092 (HY000): The server is not configured properly to be an active member of the group. Please see more details on error log.. Query: START group_replication (RuntimeError)
Run Code Online (Sandbox Code Playgroud)
在我运行 cluster.checkInstanceState('root@192.168.123.45:3306'); 后
The instance '192.168.123.45:3306' is invalid for the cluster.
The instance contains additional transactions in relation to the cluster.
{
"reason": "diverged",
"state": "error"
}
Run Code Online (Sandbox Code Playgroud)
我知道这是因为不同数据库中的状态不一致。但是我搜索了互联网,但没有关于如何解决 innodb 集群冲突的文档。任何意见将是有益的!
我最近已经解决了这个问题,步骤如下:
我尝试将实例重新加入集群,如下所示:
cluster.rejoinInstance(instance);
Run Code Online (Sandbox Code Playgroud)
现在该cluster.status()
函数报告成员状态为“RECOVERING”,但几分钟后,它再次报告为“MISSING”。
我已登录到丢失的实例并验证了进程列表SHOW FULL PROCESSLIST;
,但我看不到任何活动流量,并且我通过查询几个用户表来验证数据不一致。
此外,通过功能检查集群状态cluster.status({extended:true, queryMembers:true});
并观察到,lastApplied
块并startTimestamp
显示较旧的日期,这确认最近的事务未应用于此实例。
然后,我执行了以下步骤从集群中删除实例:
cluster.removeInstance(instance);
Run Code Online (Sandbox Code Playgroud)
并添加回实例,如下所示:
cluster.removeInstance(instance);
Run Code Online (Sandbox Code Playgroud)
这产生了错误:The instance is already part of the another Group Replication;
因此,我查询了下表中丢失的实例,并再次找出了实例状态:
select * from performance_schema.replication_group_members;
Run Code Online (Sandbox Code Playgroud)
要将其添加回集群,我现在有以下 2 个选项:
第一个选择始终是我的最后选择。所以我尝试了以下步骤:
var cluster = dba.getCluster();
cluster.rescan();
'Y'
窗口中丢失的节点。super_read_only = OFF;
STOP GROUP_REPLICATION;
RESET SLAVE ALL;
步骤 6:删除集群元数据数据库:
删除数据库 mysql_innodb_cluster_metadata;
第 7 步:转到 shell 并将节点添加回集群:cluster.addInstance(instance);
步骤 8:在交互窗口中:选择恢复方法"Clone"
(MySQL 8.0.16 及更高版本)。
我没有Incremental Recovery
在这种情况下尝试,但在另一个例子中,它起作用了。
如果您因任何原因无法使用克隆或增量恢复选项,请使用方法 1 重建实例。
我希望它有帮助!
归档时间: |
|
查看次数: |
9599 次 |
最近记录: |