Documentation Home

7.8.1 实例重新加入集群

如果一个实例离开了集群,例如因为它失去了连接,并且由于某种原因它无法自动重新加入集群,则可能需要在稍后阶段将其重新加入集群。将实例重新加入集群问题 。 Cluster.rejoinInstance(instance)

小费

如果实例有, super_read_only=ON那么您可能需要确认 AdminAPI 可以设置 super_read_only=OFF。更多信息请参见 超级只读模式下的实例配置

在实例没有持久化配置的情况下(参见第 6.2.4 节,“持久化设置”),重启后实例不会自动重新加入集群。解决方案是发布 cluster.rejoinInstance(),以便将实例再次添加到集群并确保更改持久化。一旦 InnoDB 集群配置持久化到实例的选项文件中,它就会自动重新加入集群。

如果您要重新加入以某种方式发生更改的实例,那么您可能必须修改该实例以使重新加入过程正常工作。例如,当您还原 MySQL Enterprise Backup 备份时,server_uuid 更改。尝试重新加入此类实例失败,因为 InnoDB Cluster 实例由 server_uuid变量标识。在这种情况下,有关实例 old 的信息 server_uuid必须从 InnoDB Cluster 元数据中删除,然后 Cluster.rescan() 必须执行 a 以使用它的 new 将实例添加到元数据中server_uuid。例如:

cluster.removeInstance("root@instanceWithOldUUID:3306", {force: true})

cluster.rescan()

在这种情况下,您必须将force选项传递给该 Cluster.removeInstance() 方法,因为从集群的角度来看该实例是不可访问的,我们无论如何都希望将其从 InnoDB 集群元数据中删除。

rejoinInstance()还会检查实例使用的通信堆栈,并确保集群支持它。如果集群支持通信栈,rejoinInstance()则将实例添加到集群中。