如果您对集群进行了配置更改,但没有使用 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 集群集的 InnoDB 集群,
group_replication_view_change_uuid
系统变量是必需的,并且必须在集群中的所有成员服务器上设置为相同的值。 使用dba.createCluster()
命令创建的 InnoDB 集群将为所有成员服务器生成并设置系统变量的值。 在 MySQL Shell 8.0.27 之前创建的 InnoDB 集群可能没有设置系统变量,但 InnoDB 集群集创建过程将检查这一点,如果缺失,则会显示警告并失败。默认情况下,
updateViewChangeUuid
设置为false
,如果在任何实例上找不到系统变量或系统变量不匹配,则会返回警告消息,让您知道您必须设置系统变量的值并重启 InnoDB 集群。 如果将updateViewChangeUuid
设置为true
,则重新扫描操作将在所有成员服务器上为group_replication_view_change_uuid
生成并设置一个值,之后您必须重启集群以实施更改。
命令会像设置了Cluster
.rescan()true
一样自动生成并设置系统变量值,之后需要重启集群以实施更改。 重启集群后,您可以重试 InnoDB 集群集创建过程。 -
upgradeCommProtocol
:布尔值,用于指示是否应将 Group Replication 通信协议版本升级(true)或不升级(false)到集群中最低 MySQL 版本的实例支持的版本。 默认情况下,通信协议版本不会升级(false)。 导致拓扑更改的 AdminAPI 操作如果通信协议版本可以升级,则会返回消息,您可以使用此选项在适当的时间执行升级。 建议升级到 Group Replication 通信协议的最高可用版本,以支持最新功能,例如用于大型事务的消息分段。 有关详细信息,请参阅 设置组的通信协议版本。如果值为
true
,则 Group Replication 通信协议版本将升级到集群中最低 MySQL 版本的实例支持的版本。如果值为
false
,则 Group Replication 通信协议版本不会升级。