全面上市前:2022-11-17

A.3 ClusterSet 类方法

以下部分提供了可用于 InnoDB ClusterSet 方法的选项的详细信息。

创建副本 InnoDB 集群

在目标实例上创建一个新的 InnoDB Cluster,它是具有给定集群名称和选项的主集群的副本。

如果目标实例满足 InnoDB Cluster 的要求,则会在其上创建一个新集群,从 InnoDB ClusterSet 的主集群的主实例复制。

  • 脚本:createReplicaCluster(instance, clusterName[, options])

  • Python:create_replica_cluster(instance, clusterName[, options])

选项如下:

  • interactive: 布尔值,用于在命令执行时禁用或启用向导,表示根据设置的值是否提供提示和确认。默认值等于 MySQL Shell 向导模式。

  • dryRun: Boolean 如果为 true,则执行创建副本集群的所有验证和步骤,但不进行任何更改。完成时将抛出异常。

  • recoveryMethod:状态恢复或配置的首选方法。可能是autocloneincremental。默认为auto

  • recoveryProgress:整数值,表示恢复过程的详细级别。

  • cloneDonor:主机:要从中克隆的 PRIMARY 集群的现有成员的端口。此选项不支持 IPv6 地址。

  • manualStartOnBoot: 布尔值(默认值 false)。如果false,Group Replication 在集群实例中,会在 MySQL 启动时自动启动并重新加入,否则,必须手动启动。

  • memberSslMode:SSL模式,用于配置InnoDB Cluster成员之间通信的安全状态。

  • ipAllowlist:允许连接到组复制实例的主机列表。

  • localAddress:字符串值,其中包含要使用的组复制本地地址,而不是自动生成的地址。

  • exitStateAction:表示组复制退出状态操作的字符串值。

  • memberWeight:整数值,带有故障转移时自动主要选举的百分比权重。

  • consistency: 字符串值,表示集群提供的一致性保证。

  • expelTimeout:整数值,用于定义集群成员在将其从集群中逐出之前应等待无响应成员的时间段(以秒为单位)。

  • autoRejoinTries:整数值,用于定义实例在被驱逐后尝试重新加入集群的次数。

  • timeout:等待实例与 PRIMARY 集群同步的最大秒数。默认是 0,这意味着没有超时。

  • replicationAllowedHost:字符串值用作内部复制帐户的主机名部分(意思是 'mysql_innodb_cluster_###'@'hostname')。默认为%。集群的任何成员都必须能够使用具有此主机名值的帐户连接到任何其他成员。

示例:使用 createReplicaCluster()分配给变量的 InnoDB ClusterSet 对象的方法 cs来创建副本集群。

cs.createReplicaCluster("127.0.0.1:4410", "cluster2")

有关使用此方法的更多信息,请参阅 部署 InnoDB ClusterSet

描述 InnoDB ClusterSet

描述了 InnoDB ClusterSet 的结构。它返回一个描述 InnoDB ClusterSet 结构的 JSON 对象。

  • 脚本:describe()

  • Python:describe()

示例:发出 describe()函数,使用 cs分配给 InnoDB ClusterSet 对象的变量,查看 InnoDB ClusterSet 的拓扑结构,不需要 状态 信息。

cs.describe()

有关使用此方法的更多信息,请参阅 InnoDB ClusterSet 状态和拓扑

断开 InnoDB ClusterSet

断开 InnoDB ClusterSet 对象使用的所有内部会话。

  • 脚本:disconnect()

  • Python:disconnect()

示例:使用分配的变量断开 InnoDB ClusterSet 使用的所有内部会话cs

cs.disconnect()

对 InnoDB ClusterSet 的主集群执行故障转移

执行 InnoDB ClusterSet 的主 InnoDB Cluster 的故障转移。

  • 脚本:forcePrimaryCluster(clusterName[, options])

  • Python:force_primary_cluster(clusterName[, options])

选项如下:

  • dryRun:如果为 true,则执行将要执行但不会执行的检查和日志操作。可以通过在 MySQL Shell 中启用详细输出来查看将要执行的操作。

  • invalidateReplicaClusters:列出在故障转移期间要失效的无法访问或不可用的副本集群的名称。

示例:提供将作为新主集群接管的副本 InnoDB 集群的名称,并发布。

cs.forcePrimaryCluster("cluster2")

有关使用此方法的更多信息,请参阅 InnoDB ClusterSet 紧急故障转移

返回 InnoDB ClusterSet 的域名

返回 InnoDB ClusterSet 的域名。

  • 脚本:getName()

  • Python:get_name()

示例:使用 cs分配给 InnoDB ClusterSet 对象的变量,显示 InnoDB ClusterSet 的域名。

cs.getName()

集群集帮助

提供有关此类及其成员的帮助。

  • 脚本:help([member])

  • Python:help([member])

要查看 InnoDB ClusterSet 对象的帮助选项,请键入:

\help clusterset

列出 InnoDB ClusterSet 的 MySQL Router 实例

列出 InnoDB ClusterSet 的 MySQL Router 实例,或单个 MySQL Router 实例。

  • 脚本:listRouters([router])

  • Python:list_routers([router])

示例:返回所有已注册的 MySQL Router 实例或路由器实例的详细信息。

myclusterset.listRouters()

有关使用此方法的更多信息,请参阅 Integrating MySQL Router With InnoDB ClusterSet

InnoDB ClusterSet 配置选项列表

列出 InnoDB ClusterSet 配置选项。

  • 脚本:options()

  • Python:options()

示例:使用分配的变量列出 InnoDB ClusterSet 的所有配置选项cs

cs.options()

重新加入 InnoDB ClusterSet

将无效的集群重新加入到 InnoDB ClusterSet 并更新复制。

  • 脚本:rejoinCluster(clusterName[, options])

  • Python:rejoin_cluster(clusterName[, options])

选项如下:

  • dryRun:如果为 true,将执行将执行的检查和日志操作,但不会执行它们。可以通过在 MySQL Shell 中启用详细输出来查看将要执行的操作。

示例:使用分配的变量将 Cluster 重新加入到 InnoDB ClusterSet cs

cs.rejoinCluster('ClusterSet1')

有关使用此方法的更多信息,请参阅 InnoDB ClusterSet 修复和重新加入

从 InnoDB ClusterSet 中删除 Replica InnoDB Cluster

从 InnoDB ClusterSet 中删除副本 InnoDB Cluster。

  • 脚本:removeCluster(clusterName[, options])

  • Python:remove_cluster(clusterName[, options])

选项如下:

  • force:布尔值,指示是否必须删除集群,即使仅从元数据中删除,以防无法到达 PRIMARY,或者找不到或停止 InnoDB ClusterSet 复制通道。默认情况下,设置为 false

  • timeout:等待实例与 PRIMARY 集群同步的最大秒数。默认是 0,这意味着没有超时。

  • dryRun: Boolean if true,执行从 InnoDB ClusterSet 中删除集群的所有验证和步骤,但实际上没有进行任何更改。完成时将抛出异常。

示例:从 InnoDB ClusterSet 中删除名为“replica2”的集群。

cs.removeCluster("replica2")

有关使用此方法的更多信息,请参阅 从 InnoDB ClusterSet 中删除集群

InnoDB ClusterSet 路由器配置选项列表

通过返回一个 JSON 对象来列出 InnoDB ClusterSet 路由器配置选项,该对象描述了 InnoDB ClusterSet 的所有路由器实例及其全局选项的配置选项,或者只是指定的路由器。

  • 脚本:routingOptions([router])

  • Python:routing_options([router])

示例:显示为每个 MySQL Router 实例设置的路由选项和 IInnoDB ClusterSet 部署的全局策略。

cs.routingOptions()

有关使用此方法的更多信息,请参阅 Integrating MySQL Router With InnoDB ClusterSet

更改 InnoDB ClusterSet 的选项值

更改整个 InnoDB ClusterSet 的选项值。

  • 脚本:setOption(option, value)

  • Python:set_option(option, value)

选项如下:

  • value:该选项将检索的值。

示例:标记分配给变量的 InnoDB Clustercslocation标记设置为US East

cs.setOption("tag:location", "US East")

有关使用此方法的更多信息,请参阅 标记元数据

执行InnoDB ClusterSet的主InnoDB Cluster的切换

执行 InnoDB ClusterSet 的主 InnoDB Cluster 的安全切换。

  • 脚本:setPrimaryCluster(clusterName[, options])

  • Python:set_primary_cluster(clusterName[, options])

选项如下:

  • dryRun:如果true,将执行将执行的检查和日志操作,但不会执行它们。可以通过在 MySQL Shell 中启用详细输出来查看将要执行的操作。

  • timeout:整数值设置等待集群同步的最大秒数。

  • invalidateReplicaClusters: 无法访问或不可用的 REPLICA 集群的名称列表,这些集群将在切换期间失效。

示例:提供将作为新主集群接管的 InnoDB 集群的名称。

cs.setPrimaryCluster('clustertwo')

有关使用此方法的更多信息,请参阅 InnoDB ClusterSet 控制切换

更改 MySQL Router 实例的值

更改全局路由选项或单个 MySQL Router 实例的值。

  • 脚本:setRoutingOption([router], option, value)

  • Python:set_routing_option([router], option, value)

选项如下:

  • target_cluster: 路由器路由操作的目标集群。

  • invalidated_cluster_policy: 检测到目标集群失效时采取的路由策略。

示例:更改全局路由选项或单个路由器实例的值。

在此示例中,cs是 InnoDB ClusterSet 对象的变量,Rome1是 MySQL Router 实例cluster2的名称,是要定位的特定集群的名称。

cs.setRoutingOption('Rome1', 'target_cluster', 'cluster2')

有关使用此方法的更多信息,请参阅 Integrating MySQL Router With InnoDB ClusterSet

描述 InnoDB ClusterSet 的状态

描述 InnoDB ClusterSet 的状态。该方法从 InnoDB ClusterSet 的每个成员及其复制通道收集状态信息,以生成整个 InnoDB ClusterSet 的状态报告。

  • 脚本:status([options])

  • Python:status([options])

可以提供以下选项来控制收集和返回的信息量。该选项 extended可以具有以下值:

  • 0: 常规级别的详细信息。只有关于 InnoDB ClusterSet 和 InnoDB Cluster 成员状态的基本信息。

  • 1:包括每个集群状态的基本信息,Group Replication上报的每个集群成员角色和状态的信息,以及InnoDB ClusterSet复制通道的信息。

  • 2:包括被隔离的系统变量列表、applier worker threads、member ID等。关于 InnoDB ClusterSet 复制通道的信息被扩展为包括关于应用程序队列大小、应用程序队列 GTID 集、协调器状态等信息。

  • 3:包括与复制相关的重要配置设置,例如复制延迟、心跳延迟、重试计数和 InnoDB ClusterSet 复制通道的连接重试。

示例:连接到 InnoDB ClusterSet 的任何活动成员并使用分配的 cs变量。

cs.status()

有关使用此方法的更多信息,请参阅 InnoDB ClusterSet 状态和拓扑