如果实例离开群集(例如,因为它丢失了连接),并且由于某种原因无法自动重新加入群集,则可能需要在稍后阶段将其重新加入群集。要将实例重新加入群集,请发出
。Cluster
.rejoinInstance(instance
)
如果实例具有 super_read_only=ON
,则您可能需要确认 AdminAPI 可以设置 super_read_only=OFF
。有关详细信息,请参见 超级只读模式下的实例配置。
在实例的配置未持久化的情况下(请参见 第 6.2.3 节,“持久化设置”),重新启动时,实例不会自动重新加入群集。解决方案是发出 cluster.rejoinInstance()
,以便将实例再次添加到群集,并确保更改已持久化。一旦将 InnoDB 群集配置持久化到实例的选项文件,它就会自动重新加入群集。
如果您重新加入的实例在某些方面发生了更改,则您可能必须修改该实例以使重新加入过程正常工作。例如,当您恢复 MySQL 企业版备份备份时,server_uuid
会发生变化。尝试重新加入此类实例会失败,因为 InnoDB 群集实例是通过 server_uuid
变量标识的。在这种情况下,必须从 InnoDB 群集元数据中删除有关实例的旧 server_uuid
信息,然后执行
以使用新的 Cluster
.rescan()server_uuid
将实例添加到元数据。例如
cluster.removeInstance("root@instanceWithOldUUID:3306", {force: true})
cluster.rescan()
在这种情况下,您必须将 force
选项传递给
方法,因为从群集的角度来看,该实例不可达,我们希望无论如何将其从 InnoDB 群集元数据中删除。Cluster
.removeInstance()
rejoinInstance()
还会检查实例使用的通信堆栈,并确保它受群集支持。如果群集支持通信堆栈,则 rejoinInstance()
会将实例添加到群集。