Documentation Home

7.8.4 重新扫描集群

如果您在 AdminAPI 命令之外对集群进行配置更改,例如通过手动更改实例的配置来解决配置问题或在实例丢失后,您需要更新 InnoDB Cluster 元数据以使其与当前配置相匹配实例。在这些情况下,请使用该 Cluster.rescan() 操作,它使您能够手动或使用交互式向导更新 InnoDB Cluster 元数据。这 Cluster.rescan() 操作可以检测未在元数据中注册的新活动实例并添加它们,或者检测仍在元数据中注册的过时实例(不再活动)并删除它们。您可以根据命令找到的实例自动更新元数据,或者您可以指定实例地址列表以添加到元数据或从元数据中删除。您还可以更新存储在元数据中的拓扑模式,例如在 AdminAPI 之外从单主模式更改为多主模式之后。

命令的语法是 Cluster.rescan([options]). 该options词典支持以下内容:

  • interactive:布尔值,用于在命令执行中禁用或启用向导。控制是否提供提示和确认。默认值等于 MySQL Shell 向导模式,由 指定shell.options.useWizards

  • addInstances: 列出要添加到元数据的新活动实例的连接数据,或 auto自动将丢失的实例添加到元数据。值auto不区分大小写。

    • 列表中指定的实例被添加到元数据中,而不提示确认

    • addInstances在交互模式下,系统会提示您确认添加未包含在选项 中的新发现的实例

    • 在非交互模式下,addInstances 输出中会报告未包含在选项中的新发现实例,但不会提示您添加它们

  • removeInstances: 列出要从元数据中删除的过时实例的连接数据,或auto自动从元数据中删除过时的实例。

    • 列表中指定的实例从元数据中删除,不提示确认

    • 在交互模式下,系统会提示您确认删除未包含在removeInstances选项 中的过时实例

    • 在非交互模式下,未包含在removeInstances 选项中的过时实例会在输出中报告,但不会提示您删除它们

  • updateTopologyMode:布尔值,用于指示元数据中的拓扑模式(单主或多主)是否应更新(true)或不更新(false)以匹配集群正在使用的拓扑模式。默认情况下,元数据不会更新 (false)。

    • 如果该值为trueInnoDB Cluster 元数据,则将其与 Group Replication 使用的当前模式进行比较,并在必要时更新元数据。在 AdminAPI 之外更改集群的拓扑模式后,使用此选项更新元数据。

    • 如果该值为false然后关于集群拓扑模式的 InnoDB Cluster 元数据不会更新,即使它与集群的 Group Replication 组使用的拓扑不同

    • 如果未指定该选项并且元数据中的拓扑模式与集群的 Group Replication 组使用的拓扑不同,则:

      • 在交互模式下,会提示您确认元数据中拓扑模式的更新

      • 在非交互模式下,如果集群的 Group Replication 组使用的拓扑与 InnoDB Cluster 元数据之间存在差异,则会报告并且不对元数据进行任何更改

    • 当更新元数据拓扑模式以匹配组复制模式时,所有实例上的自动增量设置都会更新,如 第 7.5.7 节,“InnoDB 集群和自动增量”中所述。

  • updateViewChangeUuid:布尔值,用于指示是否应为 group_replication_view_change_uuid 集群实例上的系统变量生成和设置值。此系统变量为组生成的视图更改事件提供备用 UUID。对于 8.0.27 及更高版本的 MySQL Server 实例,对于作为 InnoDB ClusterSet 一部分的 InnoDB Cluster, group_replication_view_change_uuid 系统变量是必需的,并且必须在集群中的所有成员服务器上设置为相同的值。从 MySQL Shell 8.0.27 开始,一个使用dba.createCluster()命令获取为所有成员服务器上的系统变量生成和设置的值。在 MySQL Shell 8.0.27 之前创建的 InnoDB Cluster 可能没有设置系统变量,但 InnoDB ClusterSet 创建过程会检查这一点,如果不存在则失败并发出警告。

    默认情况下,updateViewChangeUuid设置为false,如果系统变量未找到或在任何实例上都不匹配,则会返回一条警告消息,让您知道必须为系统变量设置一个值并重新启动 InnoDB Cluster。如果您设置 updateViewChangeUuidtrue,则重新扫描操作会在所有成员服务器上生成并设置一个值 group_replication_view_change_uuid ,之后您必须重新启动集群以实施更改。MySQL Shell 8.0.29之前,该选项不可用, Cluster.rescan() 命令自动生成并设置系统变量值,方法同上true已设置,之后需要重新启动集群才能实施更改。重新启动集群后,您可以重试 InnoDB ClusterSet 创建过程。

  • upgradeCommProtocol: 布尔值,用于指示组复制通信协议版本是否应升级 (true) 或不升级 (false) 到集群中处于最低 MySQL 版本的实例支持的版本。默认情况下,不升级通信协议版本(false)。MySQL Shell 8.0.26 之前的 AdminAPI 操作尽可能自动升级,但该过程可能会导致集群延迟。从MySQL Shell 8.0.26开始,导致拓扑变化的AdminAPI操作如果通信协议版本可以升级,会返回一条消息,您可以在合适的时候使用该选项进行升级。建议升级到 Group Replication 通信协议的最高可用版本以支持最新功能,例如大型事务的消息分片。有关详细信息,请参阅 设置组的通信协议版本

    • 如果该值为trueGroup Replication 通信协议版本,则升级到集群中最低 MySQL 版本的实例支持的版本。

    • 如果该值为falseGroup Replication 通信协议版本,则不会升级。