正式发布前:2024-07-17
以下部分详细介绍了 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 副本集的状态。
JavaScript:
status([options])
Python:
status([options])
extended
选项如下
0
:禁用命令详细输出(默认)。1
:包括有关元数据版本、组协议版本、组名称、副本集 UUID、副本集成员角色和状态(由组复制报告)以及受防护的系统变量列表的信息。2
:包括有关连接和应用器处理的事务的信息。3
:包括有关每个副本集成员的复制机制的更详细统计信息。Boolean
:相当于分配0
(false
) 或1
(true
)。
示例:使用分配的变量 rs
返回描述 InnoDB 副本集状态的 JSON 对象。
rs.status()
断开 InnoDB 副本集用于查询元数据和复制信息的内部 MySQL 会话。
JavaScript:
disconnect()
Python:
disconnect()
示例:断开副本集使用的所有内部会话,这些会话已分配给变量 rs
。
rs.disconnect()
在灾难情况下(当前主节点不可用且无法恢复),对 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 副本集的名称。
JavaScript:
getName()
Python:
get_name()
示例:返回 InnoDB 副本集的名称,该名称已分配给变量 rs
rs.getName()
列出路由器实例,并提供有关为 InnoDB 副本集注册的所有路由器实例的信息。
JavaScript:
listRouters()
Python:
list_routers()
选项如下
onlyUpgradeRequired
:布尔值,启用筛选,以便仅包含支持旧版本元数据架构且需要升级的路由器实例。
示例:列出与副本集关联的所有已注册 MySQL 路由器实例,这些实例已分配给 rs
。
rs.listRouters()
返回描述 InnoDB 副本集的配置选项的 JSON 对象。
JavaScript:
options()
Python:
options()
示例:使用分配的变量 rs
列出 InnoDB 副本集的所有配置选项。
rs.options()
将实例重新加入 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 副本集中删除实例。
JavaScript:
removeInstance(instance[, options])
Python:
remove_instance(instance[, options])
选项如下
force
:布尔值,指示是否必须删除实例,即使只是从元数据中删除,以防无法访问该实例。默认情况下,设置为false
。timeout
:等待实例与主节点同步的最长时间(以秒为单位)。0
表示没有超时,0
将跳过同步。
示例:使用分配给 InnoDB 副本集的变量 rs
,从运行在本地主机端口 4450 上的 InnoDB 副本集中删除实例。
rs.removeInstance('root@localhost:4450')
删除路由器实例的元数据。
JavaScript:
removeRouterMetadata(routerDef)
Python:
remove_router_metadata(routerDef)
示例:使用分配的变量 rs
,从副本集的元数据中删除已注册的 MySQL Router 实例 myRouter1
。
rs.removeRouterMetadata('myRouter1')
更改 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 副本集的选项值。
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 副本集成员作为新的主节点。
JavaScript:
setPrimaryInstance(instance)
Python:
set_primary_instance(instance)
示例:使用分配的变量 rs
,将新主节点设置为监听端口 4450 的实例。
rs.setPrimaryInstance('root@localhost:4450')
有关更多信息,请参阅更改 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 帐户。
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 用户。