文档主页
适用于 VS Code 的 MySQL Shell


适用于 VS Code 的 MySQL Shell  /  ...  /  副本集类方法

正式发布前:2024-07-17

A.4 副本集类方法

以下部分详细介绍了 InnoDB 副本集方法可用的选项。

将实例添加到 InnoDB 副本集

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

  • JavaScript:addInstance(instance[, options])

  • Python:add_instance(instance[, options])

选项如下

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

  • label:要添加的实例的标识符,用于 status() 的输出中。

  • recoveryMethod:首选的状态恢复方法。可以是 auto、clone 或 incremental。默认为 auto。

  • waitRecovery:整数值,用于指示恢复过程的详细程度。

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

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

  • timeout:事务同步操作的超时时间(以秒为单位);0 表示禁用超时并强制 Shell 等待事务同步完成。默认为 0

示例:使用分配给副本集的 rs 变量将实例添加到 InnoDB 副本集。

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

描述 InnoDB 副本集的状态

描述 InnoDB 副本集的状态。

  • JavaScript:status([options])

  • Python:status([options])

extended 选项如下

  • 0:禁用命令详细输出(默认)。

  • 1:包括有关元数据版本、组协议版本、组名称、副本集 UUID、副本集成员角色和状态(由组复制报告)以及受防护的系统变量列表的信息。

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

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

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

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

rs.status()

断开 InnoDB 副本集使用的会话

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

  • JavaScript:disconnect()

  • Python:disconnect()

示例:断开副本集使用的所有内部会话,这些会话已分配给变量 rs

rs.disconnect()

强制 InnoDB 副本集的主节点进行故障转移

在灾难情况下(当前主节点不可用且无法恢复),对 InnoDB 副本集的主节点执行强制故障转移。

  • JavaScript:forcePrimaryInstance(instance, options)

  • Python:force_primary_instance(instance, options)

选项如下

  • dryRun:如果为 true,则执行检查并记录将要执行的操作,但不执行它们。可以通过在 shell 中启用详细输出查看将要执行的操作。

  • timeout:整数值,表示要等待的最长时间(以秒为单位),直到被提升的实例赶上当前主节点。

  • invalidateErrorInstances:如果为 false,则在除旧主节点之外的任何实例不可达或出现错误时中止故障转移。如果为 true,则不会对这些实例进行故障转移,并且这些实例将失效。

示例:使用 forcePrimaryInstance(将 dryrun 选项设置为 true)检查强制故障转移到实例 rs2:4460 的潜在错误。

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

获取 InnoDB 副本集的名称

返回 InnoDB 副本集的名称。

  • JavaScript:getName()

  • Python:get_name()

示例:返回 InnoDB 副本集的名称,该名称已分配给变量 rs

rs.getName()

列出 InnoDB 副本集路由器实例

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

  • JavaScript:listRouters()

  • Python:list_routers()

选项如下

  • onlyUpgradeRequired:布尔值,启用筛选,以便仅包含支持旧版本元数据架构且需要升级的路由器实例。

示例:列出与副本集关联的所有已注册 MySQL 路由器实例,这些实例已分配给 rs

rs.listRouters()

列出 InnoDB 副本集配置选项

返回描述 InnoDB 副本集的配置选项的 JSON 对象。

  • JavaScript:options()

  • Python:options()

示例:使用分配的变量 rs 列出 InnoDB 副本集的所有配置选项。

rs.options()

将实例重新加入 InnoDB 副本集

将实例重新加入 InnoDB 副本集。

  • JavaScript:rejoinInstance(instance[, options])

  • Python:rejoin_instance(instance[, options])

选项如下

  • dryRun:如果为 true,则执行检查并记录将要执行的操作,但不执行它们。

  • recoveryMethod:首选的状态恢复方法。可以是 auto、clone 或 incremental。默认为 auto。

  • waitRecovery:整数值,用于指示恢复过程的详细程度。

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

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

  • timeout:事务同步操作的超时时间(以秒为单位);0 表示禁用超时并强制 MySQL Shell 等待事务同步完成。默认为 0

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

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

从 InnoDB 副本集中删除实例

从 InnoDB 副本集中删除实例。

  • JavaScript:removeInstance(instance[, options])

  • Python:remove_instance(instance[, options])

选项如下

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

  • timeout:等待实例与主节点同步的最长时间(以秒为单位)。0 表示没有超时,0 将跳过同步。

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

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

删除 MySQL Router 实例的元数据

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

  • JavaScript: removeRouterMetadata(routerDef)

  • Python: remove_router_metadata(routerDef)

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

rs.removeRouterMetadata('myRouter1')

更改 InnoDB 副本集成员中的选项值。

更改 InnoDB 副本集成员中选项的值。

  • JavaScript: setInstanceOption(instance, option, value)

  • Python: set_instance_option(instance, option, value)

选项如下

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

示例:更改 memberWeight 值。

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

有关更多信息,请参阅标记元数据

设置 InnoDB 副本集中的选项值

更改整个 InnoDB 副本集的选项值。

  • JavaScript: setOption(option, value)

  • Python: set_option(option, value)

选项如下

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

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

  • memberWeight:整数值,表示故障转移时自动主节点选举的百分比权重。

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

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

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

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

有关更多信息,请参阅标记元数据

为 InnoDB 副本集设置新的主节点

选举特定的 InnoDB 副本集成员作为新的主节点。

  • JavaScript: setPrimaryInstance(instance)

  • Python: set_primary_instance(instance)

示例:使用分配的变量 rs,将新主节点设置为监听端口 4450 的实例。

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

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

创建或升级 InnoDB 副本集管理员帐户

创建或升级 InnoDB 副本集管理员帐户。

  • JavaScript: setupAdminAccount(user, options)

  • Python: setup_admin_account(user, options)

选项如下

  • password:InnoDB 副本集管理员帐户的密码。

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

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

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

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

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

有关更多信息,请参阅为 AdminAPI 创建用户帐户

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

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

  • JavaScript: 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 Router 用户