如果一个实例离开了集群,例如因为它失去了连接,并且由于某种原因它无法自动重新加入集群,则可能需要在稍后阶段将其重新加入集群。将实例重新加入集群问题
。
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 元数据中删除,然后
必须执行 a 以使用它的 new 将实例添加到元数据中Cluster
.rescan()server_uuid
。例如:
cluster.removeInstance("root@instanceWithOldUUID:3306", {force: true})
cluster.rescan()
在这种情况下,您必须将force
选项传递给该
方法,因为从集群的角度来看该实例是不可访问的,我们无论如何都希望将其从 InnoDB 集群元数据中删除。
Cluster
.removeInstance()
rejoinInstance()
还会检查实例使用的通信堆栈,并确保集群支持它。如果集群支持通信栈,rejoinInstance()
则将实例添加到集群中。