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

2024年 3月 1日 14.3k 0

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

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

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

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

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

  • 使用以下命令从集群中删除服务器实例 *cluster*.removeInstance() 。指定要删除的服务器实例的主机名和端口号。具体操作请参见 删除InnoDB集群实例。有一个 force选项可用,但这只能作为最后的手段。

    当您在 InnoDB ClusterSet 部署中的成员服务器上使用此命令时,MySQL Shell 会重置应用于 InnoDB ClusterSet 的所有配置,并重置 ClusterSet 复制通道设置。

  • 使用以下命令将集群的主服务器更改为另一台成员服务器 。更改主服务器允许您在当前主服务器上执行维护和升级,或者如果组复制自身的选择过程没有自动选择您想要的主服务器,则可以选择主服务器。 *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 集群的主集群通常那样将其设为可读写。

相关文章

pt-kill工具的使用
pt-ioprofile工具包的使用
数据库管理-第216期 Oracle的高可用-01(20240703)
DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
数据库事务的四大特性: ACID 
使用BBED修复损坏的SYSTEM文件头

发布评论