如果您在 AdminAPI 命令之外对集群进行配置更改,例如,通过手动更改实例的配置来解决配置问题,或者在实例丢失之后,则需要更新 InnoDB 集群元数据,使其与实例的当前配置相匹配。 在这些情况下,请使用
操作,该操作允许您手动或使用交互式向导更新 InnoDB 集群元数据。 Cluster
.rescan()
操作可以检测元数据中未注册的新活动实例并添加它们,或者检测元数据中仍然注册的过时实例(不再活动)并删除它们。 您可以根据命令找到的实例自动更新元数据,也可以指定要添加到元数据或从元数据中删除的实例地址列表。 您还可以更新元数据中存储的拓扑模式,例如在 AdminAPI 之外从单主模式更改为多主模式之后。Cluster
.rescan()
在副本集群中,group_replication_transaction_size_limit
设置为最大值。 原始值存储在元数据架构中,并在切换或故障转移时由
恢复。Cluster
.rescan()
命令的语法为
。 Cluster
.rescan([options])options
字典支持以下内容
-
addInstances
:包含要添加到元数据的新活动实例的连接数据的列表,或者使用 “auto” 自动将缺少的实例添加到元数据。 值 “auto” 不区分大小写。列表中指定的实例将添加到元数据中,无需确认
在交互模式下,系统会提示您确认添加
addInstances
选项中未包含的新发现实例在非交互模式下,将在输出中报告
addInstances
选项中未包含的新发现实例,但系统不会提示您添加它们
-
removeInstances
:包含要从元数据中删除的过时实例的连接数据的列表,或者使用 “auto” 自动从元数据中删除过时的实例。列表中指定的实例将从元数据中删除,无需确认
在交互模式下,系统会提示您确认删除
removeInstances
选项中未包含的过时实例在非交互模式下,将在输出中报告
removeInstances
选项中未包含的过时实例,但系统不会提示您删除它们
-
updateViewChangeUuid
:布尔值,用于指示是否应为集群实例上的group_replication_view_change_uuid
系统变量生成并设置一个值。注意对于运行 MySQL Server 8.3.0 或更高版本的集群,这不是必需的。
此系统变量为组生成的视图更改事件提供备用 UUID。 对于版本 8.0.27 及更高版本的 MySQL Server 实例,对于属于 InnoDB ClusterSet 的 InnoDB 集群,需要
group_replication_view_change_uuid
系统变量,并且必须在集群中的所有成员服务器上将其设置为相同的值。 使用dba.createCluster()
命令创建的 InnoDB 集群会在所有成员服务器上生成并设置系统变量的值。 在 MySQL Shell 8.0.27 之前创建的 InnoDB 集群可能没有设置系统变量,但 InnoDB ClusterSet 创建过程会检查这一点,如果缺少该变量,则会发出警告。默认情况下,
updateViewChangeUuid
设置为false
,如果在任何实例上找不到系统变量或系统变量不匹配,则会返回一条警告消息,通知您必须为系统变量设置一个值并重新启动 InnoDB 集群。 如果将updateViewChangeUuid
设置为true
,则 rescan 操作会在所有成员服务器上生成并设置group_replication_view_change_uuid
的值,之后您必须重新启动集群才能实施更改。
命令会自动生成并设置系统变量值,就像设置了Cluster
.rescan()true
一样,之后需要重新启动集群才能实施更改。 重新启动集群后,您可以重试 InnoDB ClusterSet 创建过程。 -
upgradeCommProtocol
:布尔值,用于指示是否应将组复制通信协议版本升级(true)或不升级(false)到集群中 MySQL 版本最低的实例支持的版本。 默认情况下,不会升级通信协议版本(false)。 如果可以升级通信协议版本,则导致拓扑更改的 AdminAPI 操作会返回一条消息,您可以使用此选项在适当的时候执行升级。 建议升级到组复制通信协议的最高可用版本,以支持最新功能,例如大型事务的消息分片。 有关更多信息,请参阅 设置组的通信协议版本。如果值为
true
,则组复制通信协议版本将升级到集群中 MySQL 版本最低的实例支持的版本。如果值为
false
,则不会升级组复制通信协议版本。