如果您在 AdminAPI 命令之外对集群进行配置更改,例如通过手动更改实例的配置来解决配置问题或在实例丢失后,您需要更新 InnoDB Cluster 元数据以使其与当前配置相匹配实例。在这些情况下,请使用该
操作,它使您能够手动或使用交互式向导更新 InnoDB Cluster 元数据。这
Cluster
.rescan()
操作可以检测未在元数据中注册的新活动实例并添加它们,或者检测仍在元数据中注册的过时实例(不再活动)并删除它们。您可以根据命令找到的实例自动更新元数据,或者您可以指定实例地址列表以添加到元数据或从元数据中删除。您还可以更新存储在元数据中的拓扑模式,例如在 AdminAPI 之外从单主模式更改为多主模式之后。
Cluster
.rescan()
命令的语法是
. 该Cluster
.rescan([options])options
词典支持以下内容:
interactive
:布尔值,用于在命令执行中禁用或启用向导。控制是否提供提示和确认。默认值等于 MySQL Shell 向导模式,由 指定shell.options.useWizards
。-
addInstances
: 列出要添加到元数据的新活动实例的连接数据,或 “ auto ”自动将丢失的实例添加到元数据。值“ auto ”不区分大小写。列表中指定的实例被添加到元数据中,而不提示确认
addInstances
在交互模式下,系统会提示您确认添加未包含在选项 中的新发现的实例在非交互模式下,
addInstances
输出中会报告未包含在选项中的新发现实例,但不会提示您添加它们
-
removeInstances
: 列出要从元数据中删除的过时实例的连接数据,或“ auto ”自动从元数据中删除过时的实例。列表中指定的实例从元数据中删除,不提示确认
在交互模式下,系统会提示您确认删除未包含在
removeInstances
选项 中的过时实例在非交互模式下,未包含在
removeInstances
选项中的过时实例会在输出中报告,但不会提示您删除它们
-
updateTopologyMode
:布尔值,用于指示元数据中的拓扑模式(单主或多主)是否应更新(true)或不更新(false)以匹配集群正在使用的拓扑模式。默认情况下,元数据不会更新 (false)。如果该值为
true
InnoDB 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。如果您设置updateViewChangeUuid
为true
,则重新扫描操作会在所有成员服务器上生成并设置一个值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 通信协议的最高可用版本以支持最新功能,例如大型事务的消息分片。有关详细信息,请参阅 设置组的通信协议版本。如果该值为
true
Group Replication 通信协议版本,则升级到集群中最低 MySQL 版本的实例支持的版本。如果该值为
false
Group Replication 通信协议版本,则不会升级。