根据集群的问题或维护需求,您可以使用以下操作来处理集群的成员服务器。除非另有说明,请使用 Cluster 和 ClusterSet 对象(使用 InnoDB 集群管理员帐户或服务器配置帐户获取),以便 ClusterSet 对象中存储的默认用户帐户拥有正确的权限。
- 
使用 cluster.addInstance()请注意,对于此操作,您需要使用 InnoDB 集群服务器配置帐户和使用该帐户获取的 Cluster对象。该帐户还必须存在于服务器实例上,如 第 8.3 节,“InnoDB ClusterSet 用户帐户” 中所述。当您使用此命令将成员服务器添加到作为 InnoDB ClusterSet 部署的一部分的 InnoDB 集群时,服务器实例将添加到集群并配置 InnoDB ClusterSet 的数据。ClusterSet 复制通道将在实例上设置,并且将应用在 InnoDB ClusterSet 部署中运行所需的配置。 
- 
使用 cluster.rejoinInstance()当您使用此命令将成员服务器重新加入作为 InnoDB ClusterSet 部署的一部分的 InnoDB 集群时,服务器实例将重新加入集群并配置 InnoDB ClusterSet 的数据。ClusterSet 复制通道将在实例上设置,并且将应用在 InnoDB ClusterSet 部署中运行所需的配置。 
- 
使用 cluster.removeInstance()force选项,但这应作为最后的手段使用。当您在 InnoDB ClusterSet 部署中的成员服务器上使用此命令时,MySQL Shell 会重置为 InnoDB ClusterSet 应用的所有配置,并重置 ClusterSet 复制通道设置。 
- 
使用 cluster.setPrimaryInstance(instance)指定要作为主服务器的服务器实例的主机名和端口号。您可以使用 runningTransactionsTimeout选项来指定使用该函数时运行的事务的超时时间(介于 0 到 3600 秒之间),该函数还会停止新的传入事务。该超时时间没有默认设置,因此如果您没有设置它,操作的等待时间没有上限,并且新事务可以在此期间启动。当您在 InnoDB ClusterSet 部署中的成员服务器上使用此命令时,MySQL Shell 会预先停止服务器上的 ClusterSet 复制通道,并在之后重新启动它。此外,如果集群是副本集群,MySQL Shell 会将主服务器保持为只读状态,而不是像 InnoDB 集群的主服务器那样将其变为读写状态。 
- 
使用 cluster.forceQuorumUsingPartitionOf(instance)当您在 InnoDB ClusterSet 部署中的成员服务器上使用此命令时,MySQL Shell 会检查目标集群是否仍然是 ClusterSet 的有效部分,并在集群被无效时发出警告。它还会在之后自动重新启动 ClusterSet 复制通道。如果集群是副本集群,MySQL Shell 会将主服务器保持为只读状态,而不是像 InnoDB 集群的主服务器那样将其变为读写状态。 
- 
使用 dba.rebootClusterFromCompleteOutage()命令重新启动完全脱机的集群。有关此操作的详细信息,请参见 第 7.8.3 节,“从重大故障中重新启动集群”。当您在 InnoDB ClusterSet 部署中的成员服务器上使用此命令时,MySQL Shell 会检查目标集群是否仍然是 ClusterSet 的有效部分,并在集群被无效时发出警告。 如果集群未被无效,MySQL Shell 会在重新启动后立即将其重新加入 InnoDB ClusterSet 部署。如果集群被无效,您必须使用 clusterSet.rejoinCluster()MySQL Shell 还会在此操作后自动重新启动 ClusterSet 复制通道。如果集群是副本集群,MySQL Shell 会将主服务器保持为只读状态,而不是像 InnoDB 集群的主服务器那样将其变为读写状态。 
您无法解散当前是 InnoDB ClusterSet 部署一部分的 InnoDB 集群,除非它是 ClusterSet 中唯一的集群或集群被无效。在所有其他配置中,您必须按照 第 8.9.4 节,“从 InnoDB ClusterSet 中移除集群” 中所述将其从 InnoDB ClusterSet 中移除。
如果集群是 ClusterSet 中唯一的集群或集群被无效,您可以对集群使用 dba.dropMetadataSchema() 或 cluster.dissolve()