Documentation Home
MySQL 外壳 8.0  / 第 7 章 MySQL InnoDB 集群  / 7.5 配置InnoDB集群  /  7.5.5 配置实例自动重新加入

7.5.5 配置实例自动重新加入

MySQL 8.0.16及之后的实例支持Group Replication自动重加入功能,您可以配置实例被驱逐后自动重加入集群。 有关背景信息,请参阅 对故障检测和网络分区的响应。AdminAPI 提供了 autoRejoinTries配置实例在被驱逐后重新加入集群的尝试次数的选项。默认情况下,实例不会自动重新加入集群。您可以 autoRejoinTries使用以下命令在集群级别或为单个实例配置该选项:

  • dba.createCluster()

  • Cluster.addInstance()

  • Cluster.setOption()

  • Cluster.setInstanceOption()

autoRejoinTries选项接受 0 到 2016 之间的正整数值,默认值为 3。使用自动重新加入功能时,您的集群对故障的容忍度更高,尤其是网络不可靠等临时故障。但是如果法定人数已经丢失,你不应该期望成员自动重新加入集群,因为重新加入实例需要多数。

运行 MySQL 版本 8.0.12 及更高版本的实例具有该 group_replication_exit_state_action 变量,您可以使用 AdminAPI exitStateAction选项对其进行配置。这控制了实例在意外离开集群时执行的操作。默认情况下,该exitStateAction选项 READ_ONLY,意味着离开集群的实例意外变为只读。如果 exitStateAction设置为 OFFLINE_MODE(从 MySQL 8.0.18 开始可用),离开集群的实例将意外变为只读并进入离线模式,在该模式下它们断开现有客户端并且不接受新连接(具有管理员权限的客户端除外)。如果 exitStateAction设置为 ABORT_SERVER然后在意外离开集群的情况下,实例关闭 MySQL,并且必须重新启动它才能重新加入集群。请注意,当您使用自动重新加入功能时,该exitStateAction 选项配置的操作仅在所有重新加入集群的尝试都失败的情况下才会发生。

您有可能连接到一个实例并尝试使用 AdminAPI 对其进行配置,但此时该实例可能正在重新加入集群。每当您使用以下任何操作时,都可能发生这种情况:

  • Cluster.status()

  • dba.getCluster()

  • Cluster.rejoinInstance()

  • Cluster.addInstance()

  • Cluster.removeInstance()

  • Cluster.rescan()

  • Cluster.checkInstanceState()

当实例自动重新加入集群时,这些操作可能会提供额外信息。此外,当您使用 时 Cluster.removeInstance(),如果目标实例自动重新加入集群,除非您传入 ,否则操作将中止 force:true