Documentation Home
MySQL 外壳 8.0  / 第 8 章 MySQL InnoDB ClusterSet  / 8.9 InnoDB ClusterSet修复和重新加入  /  8.9.3 修复InnoDB ClusterSet中的成员服务器和集群

8.9.3 修复InnoDB ClusterSet中的成员服务器和集群

根据集群的问题或维护要求,您可以使用以下操作来处理其成员服务器。除非另有说明,否则请使用 您通过 InnoDB Cluster 管理员帐户或服务器配置帐户获取ClusterClusterSet 对象,以便存储在ClusterSet对象中的默认用户帐户具有正确的权限。

  • 如第 8.4 节“部署 InnoDB ClusterSet”cluster.addInstance() 中的过程所述 ,使用命令将更多服务器实例添加到集群中 。有关该命令的更多详细信息,请参阅第 7.4.4 节,“将实例添加到 InnoDB Cluster”

    请注意,对于此操作,您需要使用 InnoDB Cluster 服务器配置帐户和 Cluster使用该帐户获取的对象。该帐户还必须存在于服务器实例上,如 第 8.3 节“InnoDB ClusterSet 的用户帐户”中所述。

    当您使用此命令将成员服务器添加到作为 InnoDB ClusterSet 部署的一部分的 InnoDB Cluster 时,服务器实例将添加到集群并为 InnoDB ClusterSet 提供数据。在实例上设置了 ClusterSet 复制通道,并应用了在 InnoDB ClusterSet 部署中运行所需的配置。

  • cluster.rejoinInstance() 使用命令 重新加入以前属于集群但无法自动重新加入集群的服务器实例 。有关此操作的详细信息,请参阅 第 7.8.1 节,“将实例重新加入集群”

    当您使用此命令将成员服务器重新加入到作为 InnoDB ClusterSet 部署的一部分的 InnoDB Cluster 时,服务器实例将重新加入到集群并为 InnoDB ClusterSet 提供数据。在实例上设置了 ClusterSet 复制通道,并应用了在 InnoDB ClusterSet 部署中运行所需的配置。

  • cluster.removeInstance() 使用命令 从集群中删除服务器实例 。指定要删除的服务器实例的主机名和端口号。有关此操作的详细信息,请参阅 从 InnoDB Cluster 中删除实例。有一个 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 部署中。如果集群失效,则必须使用 clusterSet.rejoinCluster() 操作将其重新加入 InnoDB ClusterSet 部署。有关执行此操作的说明,请参阅 第 8.9.5 节,“将集群重新加入 InnoDB ClusterSet”

    执行此操作后,MySQL Shell 还会自动重启 ClusterSet 复制通道。如果集群是副本集群,则 MySQL Shell 将主集群保持为只读状态,而不是像 InnoDB 集群的主集群通常那样将其设为可读写。

您不能解散当前属于 InnoDB ClusterSet 部署的 InnoDB Cluster。如果你确实想解散和丢弃 InnoDB Cluster,你必须按照 第 8.9.4 节,“从 InnoDB ClusterSet 中删除一个 Cluster”中的描述从 InnoDB ClusterSet 中删除它。