全面上市前:2022-11-17

A.4 ReplicaSet 类方法

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

将实例添加到 InnoDB ReplicaSet

将给定的 MySQL 实例添加为 InnoDB ReplicaSet 当前主实例的只读辅助副本。复制是在添加的实例和主实例之间配置的。复制使用自动创建的 MySQL 帐户和随机密码。

  • 脚本:addInstance(instance[, options])

  • Python:add_instance(instance[, options])

选项如下:

  • dryRun:如果为真,则执行检查并记录将要进行的更改,但不执行它们。

  • label: 正在添加的实例的标识符,在 的输出中使用status()

  • recoveryMethod: 状态恢复的首选方法。可以是自动的、克隆的或增量的。默认为自动。

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

  • cloneDonorhost:port要从中克隆的现有副本集成员。此选项不支持 IPv6 地址。

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

  • timeout:事务同步操作的超时秒数;0禁用超时并强制 Shell 等待事务同步完成。默认为0.

示例rs:使用分配给 ReplicaSet 的变量将 实例添加到 InnoDB

rs.addInstance('root@localhost:4430')

描述InnoDB ReplicaSet的状态

描述 InnoDB ReplicaSet 的状态。

  • 脚本:status([options])

  • Python:status([options])

extended选项如下 :

  • 0:禁用命令详细信息(默认)。

  • 1:包括有关元数据版本、组协议版本、组名称、ReplicaSet UUID、ReplicaSet 成员角色和状态的信息,这些信息由 Group Replication 和受防护系统变量列表报告。

  • 2:包括有关连接和应用程序处理的事务的信息。

  • 3:包括有关每个 ReplicaSet 成员的复制机制的更详细统计信息。

  • Boolean: 相当于分配 0( false) 或 1( true)。

示例:使用分配的变量返回描述 InnoDB ReplicaSet 状态的 JSON 对象rs

rs.status()

断开 InnoDB ReplicaSet 使用的会话

断开 InnoDB ReplicaSet 用于查询元数据和复制信息的内部 MySQL 会话。

  • 脚本:disconnect()

  • Python:disconnect()

示例:断开分配给变量 to 的 ReplicaSet 使用的所有内部会话rs

rs.disconnect()

强制对 InnoDB ReplicaSet 的主节点进行故障转移

在灾难场景中对 InnoDB ReplicaSet 的主节点执行强制故障转移,当前主节点不可用且无法恢复。

  • 脚本:forcePrimaryInstance(instance, options)

  • Python:force_primary_instance(instance, options)

选项如下:

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

  • timeout:整数值,表示要等待的最大秒数,直到被提升的实例赶上当前主实例。

  • invalidateErrorInstances:如果为 false,则在旧 master 以外的任何实例无法访问或出现错误时中止故障转移。如果为真,此类实例将不会被故障转移并失效。

示例forcePrimaryInstancedryrun 选项设置为true,以检查是否存在强制故障转移到实例的潜在错误 rs2:4460

rs.forcePrimaryInstance('rs2:4460' ,{dryRun: true})

获取 InnoDB 副本集的名称

返回 InnoDB ReplicaSet 的名称。

  • 脚本:getName()

  • Python:get_name()

示例:返回分配给变量的 InnoDB ReplicaSet 的名称 rs

rs.getName()

列出 InnoDB ReplicaSet 路由器实例

列出路由器实例并提供有关为 InnoDB ReplicaSet 注册的所有路由器实例的信息。

  • 脚本:listRouters()

  • Python:list_routers()

选项如下:

  • onlyUpgradeRequired:布尔值,启用过滤,因此仅包含支持旧版本元数据模式并需要升级的路由器实例。

示例:列出所有已注册的与 ReplicaSet 关联的 MySQL Router 实例,分配给rs.

rs.listRouters()

InnoDB ReplicaSet 配置选项列表

返回描述 InnoDB ReplicaSet 的配置选项的 JSON 对象。

  • 脚本:options()

  • Python:options()

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

rs.options()

将实例重新加入 InnoDB ReplicaSet

将实例重新加入 InnoDB ReplicaSet。

  • 脚本:rejoinInstance(instance[, options])

  • Python:rejoin_instance(instance[, options])

选项如下:

  • dryRun:如果为 true,则执行将要执行但不会执行的检查和日志操作。

  • recoveryMethod: 状态恢复的首选方法。可以是自动的、克隆的或增量的。默认为自动。

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

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

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

  • timeout:事务同步操作的超时秒数;0禁用超时并强制 MySQL Shell 等待事务同步完成。默认为0.

示例:使用rs分配给 InnoDB ReplicaSet 的变量将实例重新加入到在本地主机的端口 4450 上运行的 InnoDB ReplicaSet。

rs.rejoinInstance('root@localhost:4450')

从 InnoDB ReplicaSet 中删除一个实例

从 InnoDB ReplicaSet 中删除一个实例。

  • 脚本:removeInstance(instance[, options])

  • Python:remove_instance(instance[, options])

选项如下:

  • force:布尔值,指示是否必须删除实例,即使仅从元数据中删除,以防无法访问。默认情况下,设置为false

  • timeout:等待实例与主实例同步的最大秒数。 0意味着没有超时, 0将跳过同步。

示例rs:使用分配给 InnoDB ReplicaSet 的变量从在本地主机的端口 4450 上运行的 InnoDB ReplicaSet 中删除实例

rs.removeInstance('root@localhost:4450')

删除 MySQL 路由器实例的元数据

删除路由器实例的元数据。

  • 脚本:removeRouterMetadata(routerDef)

  • Python:remove_router_metadata(routerDef)

示例myRouter1:使用分配的变量从 ReplicaSet 的元数据中删除已注册的 MySQL Router 实例rs

rs.removeRouterMetadata('myRouter1')

更改 InnoDB ReplicaSet 成员中的选项值。

更改 InnoDB ReplicaSet 成员中选项的值。

  • 脚本:setInstanceOption(instance, option, value)

  • Python:set_instance_option(instance, option, value)

选项如下:

  • tag:<option>:要与 InnoDB ReplicaSet 的成员关联的内置和用户定义的标签。

示例:更改 memberWeight值。

rs.setInstanceOption("root@localhost:4430","memberWeight", 95)

有关详细信息,请参阅 标记元数据

在 InnoDB ReplicaSet 中设置选项值

更改整个 InnoDB ReplicaSet 的选项值。

  • 脚本:setOption(option, value)

  • Python:set_option(option, value)

选项如下:

  • tag:<option>:要与 InnoDB ReplicaSet 关联的内置和用户定义的标签。

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

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

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

  • Label:实例的字符串标识符。

示例:设置 InnoDB ReplicaSet,分配给rs 位置元数据标记设置为美国东部的变量。new_rs使用分配的变量将 ReplicaSet 的名称标签更改为rs

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

有关详细信息,请参阅 标记元数据

为 InnoDB ReplicaSet 设置新的主节点

选择一个特定的 InnoDB ReplicaSet 成员作为新的主要成员。

  • 脚本:setPrimaryInstance(instance)

  • Python:set_primary_instance(instance)

示例:使用分配的变量将新主实例设置为侦听端口 4450 的实例rs

rs.setPrimaryInstance('root@localhost:4450')

有关更多信息,请参阅 更改 InnoDB 集群的拓扑

创建或升级 InnoDB ReplicaSet 管理员帐户

创建或升级 InnoDB ReplicaSet 管理员帐户。

  • 脚本:setupAdminAccount(user, options)

  • Python:setup_admin_account(user, options)

选项如下:

  • password:InnoDB ReplicaSet 管理员帐户的密码。

  • dryRun:布尔值,用于启用帐户设置过程的空运行。默认值为 false

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

  • update:必须启用的布尔值,以允许更新现有帐户的权限和/或密码。默认值为假。

示例:使用分配的变量创建或升级具有管理 InnoDB ReplicaSet 所需权限的 MySQL 用户帐户 rs。例如,设置 demo-user密码为 Password1.

rs.setupAdminAccount("demo_user", {password:"Password1"})

有关详细信息,请参阅 为 AdminAPI 创建用户帐户

创建或升级 MySQL 帐户以与 MySQL Router 一起使用

创建或升级 MySQL 帐户以与 MySQL Router 一起使用。

  • 脚本:setupRouterAccount(user, options)

  • Python:setup_router_account(user, options)

选项如下:

  • password:MySQL Router 帐户的密码。

  • dryRun:布尔值,用于启用帐户设置过程的空运行。默认值为 false

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

示例:强制参数user是要创建或升级的 MySQL 帐户的名称,将由 MySQL Router 使用。

rs.setupRouterAccount('test@localhost:3306')

有关详细信息,请参阅 配置 MySQL 路由器用户