上海网站建设咨询,乔拓云的品牌推广方案,网站关键词在哪设置,旅游网站繁体asp如果 InnoDB 集群是 InnoDB ClusterSet 部署的一部分#xff0c;MySQL Shell 会在重新启动后立即自动将其恢复到拓扑中的角色#xff0c;前提是其运行正常且未被标记为无效。但是#xff0c;如果集群被标记为无效或其 ClusterSet 复制通道已停止#xff0c;则必须使用 clus…如果 InnoDB 集群是 InnoDB ClusterSet 部署的一部分MySQL Shell 会在重新启动后立即自动将其恢复到拓扑中的角色前提是其运行正常且未被标记为无效。但是如果集群被标记为无效或其 ClusterSet 复制通道已停止则必须使用 clusterSet.rejoinCluster() 操作将其重新加入 InnoDB ClusterSet 部署。
clusterSet.rejoinCluster() 操作验证目标集群是否满足以下要求
该集群以前是 ClusterSet 的成员。集群具有法定人数足够的成员联机以形成多数。可以访问集群的主服务器。集群未持有任何元数据锁或 InnoDB 事务锁。与 ClusterSet 的活动成员相比集群的 GTID 集 gtid_executed 不包含额外的事务视图更改事件除外。这些组复制内部事务由 group_replication_view_change_uuid 系统变量指定的 UUID 标识集群重新加入过程可以协调它们。
如果集群满足这些要求该操作将重新启动 ClusterSet 复制通道并删除 INVALIDATED 状态。如果没有则需要修复已识别的任何问题然后重试该命令。
按照以下步骤将 InnoDB 集群重新加入 InnoDB ClusterSet 使用 MySQL Shell 使用 InnoDB Cluster 管理员帐户使用 cluster.setupAdminAccount() 创建连接到主集群或副本集群中的任何成员服务器。您也可以使用 InnoDB Cluster 服务器配置帐户该帐户也具有所需的权限。建立连接后使用 dba.getClusterSet() 或 cluster.getClusterSet() 命令获取 ClusterSet 对象。使用 InnoDB Cluster 管理员帐户或服务器配置帐户非常重要以便存储在 ClusterSet 对象中的默认用户帐户具有正确的权限。例如 mysql-js \connect admin2127.0.0.1:3310
Creating a session to admin2127.0.0.1:3310
Please provide the password for admin2127.0.0.1:3310: ********
Save password for admin2127.0.0.1:3310? [Y]es/[N]o/Ne[v]er (default No):
Fetching schema names for autocompletion... Press ^C to stop.
Closing old connection...
Your MySQL connection id is 28
Server version: 8.0.27-commercial MySQL Enterprise Server - Commercial
No default schema selected; type \use schema to set one.
ClassicSession:admin2127.0.0.1:3310
mysql-js myclusterset dba.getClusterSet()
ClusterSet:testclusterset使用 MySQL Shell 中 AdminAPI 的 clusterSet.status() 函数检查整个部署的状态。例如 mysql-js myclusterset.status({extended: 1})有关输出的说明请参阅 8.6 InnoDB ClusterSet 的状态和拓扑 。 发出 clusterSet.rejoinCluster() 命令命名要重新加入 InnoDB ClusterSet 的集群。例如 mysql-js myclusterset.rejoinCluster(clustertwo)
Rejoining cluster clustertwo to the clusterset
NOTE: Cluster clustertwo is invalidated
* Updating metadata* Rejoining cluster
** Changing replication source of 127.0.0.1:4420 to 127.0.0.1:3310
** Changing replication source of 127.0.0.1:4430 to 127.0.0.1:3310
** Changing replication source of 127.0.0.1:4410 to 127.0.0.1:3310Cluster clustertwo was rejoined to the clusterset对于 clusterSet.rejoinCluster() 命令 clusterName 参数是必需的它指定了 InnoDB ClusterSet 中用于集群的标识符如 clusterSet.status() 命令输出中所示。在本例中clustertwo 是要重新加入的集群的名称。如果要执行验证并记录更改而不实际执行请使用 dryRun 选项。 当您执行 clusterSet.rejoinCluster() 命令时MySQLShell 会检查目标集群是否满足重新加入 ClusterSet 的要求如果不满足则返回错误。如果目标集群满足要求MySQL Shell 将执行以下任务 检查 ClusterSet 复制通道是否正在从当前主集群复制如果尚未复制则重新配置该通道。重新启动 ClusterSet 复制通道。清除集群的 INVALIDATED 状态。 目标集群作为副本集群重新加入 InnoDB ClusterSet 即使它以前是主集群。如果要将目标集群转换为主集群则需要进行受控切换。 请注意如果在执行 clusterSet.rejoinCluster() 命令时目标集群的成员不在线或不可访问则该命令无法正确配置这些成员。如果不再需要这些实例可以使用 cluster.removeInstance() 命令删除它们。如果修复这些实例或使其再次联机请在这些成员返回到集群后再次执行 clusterSet.rejoinCluster() 命令。 使用 extended 选项再次执行 clusterSet.status() 命令以验证 InnoDB clusterSet 部署的状态。 如果您确实希望将重新加入的集群变成主集群请执行 clusterSet.setPrimaryCluster() 命令指定其为重新加入的集群。8.7 InnoDB ClusterSet 的受控切换 提供了该过程的说明包括如何引导 MySQL Router 实例将流量发送到新的主集群。