根据集群的问题或维护要求,您可以使用以下操作来处理其成员服务器。除非另有说明,否则请使用
您通过 InnoDB Cluster 管理员帐户或服务器配置帐户获取Cluster
的ClusterSet
对象,以便存储在ClusterSet
对象中的默认用户帐户具有正确的权限。
-
如第 8.4 节“部署 InnoDB ClusterSet”
中的过程所述 ,使用命令将更多服务器实例添加到集群中 。有关该命令的更多详细信息,请参阅第 7.4.4 节,“将实例添加到 InnoDB Cluster”。cluster
.addInstance()请注意,对于此操作,您需要使用 InnoDB Cluster 服务器配置帐户和
Cluster
使用该帐户获取的对象。该帐户还必须存在于服务器实例上,如 第 8.3 节“InnoDB ClusterSet 的用户帐户”中所述。当您使用此命令将成员服务器添加到作为 InnoDB ClusterSet 部署的一部分的 InnoDB Cluster 时,服务器实例将添加到集群并为 InnoDB ClusterSet 提供数据。在实例上设置了 ClusterSet 复制通道,并应用了在 InnoDB ClusterSet 部署中运行所需的配置。
-
使用命令 重新加入以前属于集群但无法自动重新加入集群的服务器实例 。有关此操作的详细信息,请参阅 第 7.8.1 节,“将实例重新加入集群”。cluster
.rejoinInstance()当您使用此命令将成员服务器重新加入到作为 InnoDB ClusterSet 部署的一部分的 InnoDB Cluster 时,服务器实例将重新加入到集群并为 InnoDB ClusterSet 提供数据。在实例上设置了 ClusterSet 复制通道,并应用了在 InnoDB ClusterSet 部署中运行所需的配置。
-
使用命令 从集群中删除服务器实例 。指定要删除的服务器实例的主机名和端口号。有关此操作的详细信息,请参阅 从 InnoDB Cluster 中删除实例。有一个cluster
.removeInstance()force
选项可用,但这只能作为最后的手段使用。当您将此命令与 InnoDB ClusterSet 部署中的成员服务器一起使用时,MySQL Shell 会重置所有应用于 InnoDB ClusterSet 的配置并重置 ClusterSet 复制通道设置。
-
使用命令 将集群的主服务器更改为另一个成员服务器 。更改主服务器允许您在当前主服务器上进行维护和升级,或者如果 Group Replication 自己的选举过程没有自动选择您想要的主服务器,则可以选择一个主服务器。
cluster
.setPrimaryInstance(instance
)指定要作为主要服务器实例的主机名和端口号。从 MySQL Shell 8.0.29 开始,您可以使用该
runningTransactionsTimeout
选项为使用该函数时正在运行的事务指定 0 到 3600 秒之间的超时,这也会停止新的传入事务。超时没有默认设置,所以如果你不设置它,操作的等待时间没有上限,新事务可以在这段时间内开始。当您在 InnoDB ClusterSet 部署中对成员服务器使用此命令时,MySQL Shell 会事先停止服务器上的 ClusterSet 复制通道,然后重新启动它。此外,如果集群是副本集群,MySQL Shell 会将主集群保持为只读状态,而不是像通常 InnoDB 集群的主集群那样将其设为可读写。
-
通过使用 命令对剩余实例强制仲裁来恢复丢失仲裁的集群。使用正确的元数据指定在线服务器实例的主机名和端口号。该操作使集群由这个和其他可达实例组成,并排除分区实例。此操作可能会造成裂脑情况,因此应将其视为最后的手段。有关此操作的详细信息,请参阅 第 7.8.2 节,“从仲裁丢失中恢复集群”。
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 部署中。如果集群失效,则必须使用
操作将其重新加入 InnoDB ClusterSet 部署。有关执行此操作的说明,请参阅 第 8.9.5 节,“将集群重新加入 InnoDB ClusterSet”。clusterSet
.rejoinCluster()执行此操作后,MySQL Shell 还会自动重启 ClusterSet 复制通道。如果集群是副本集群,则 MySQL Shell 将主集群保持为只读状态,而不是像 InnoDB 集群的主集群通常那样将其设为可读写。
您不能解散当前属于 InnoDB ClusterSet 部署的 InnoDB Cluster。如果你确实想解散和丢弃 InnoDB Cluster,你必须按照 第 8.9.4 节,“从 InnoDB ClusterSet 中删除一个 Cluster”中的描述从 InnoDB ClusterSet 中删除它。