暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【ACDU翻译】 MySQL 18.5.1.1 更改组的主要成员

原创 由迪 2022-12-21
434

本节介绍如何更改单一主要组的哪个成员是主要成员。用于更改组模式的函数可以在任何成员上运行。

更改哪个成员是主要成员

使用该 group_replication_set_as_primary() 函数更改哪个成员是单一主要组中的主要成员。当前主要成为只读次要,指定的组成员成为读写主要。该函数可用于以单主模式运行的复制组的任何成员。它取代了第 18.1.3.1 节“单主模式”中描述的通常的主选举过程 。

如果除组复制通道外,现有主要成员上还运行标准源到副本复制通道,则必须先停止该复制通道,然后才能更改主要成员。MEMBER_ROLE 您可以使用Performance Schema 表中的列 replication_group_membersgroup_replication_primary_member 状态变量 来标识当前主节点。

如果您在运行 8.0.17 版 MySQL 服务器的成员上调用该函数,并且所有成员都运行 8.0.17 版或更高版本的 MySQL 服务器,则只能指定一个运行最低 MySQL 服务器版本的新主成员组,基于补丁版本。应用此保护措施以确保该组保持与新功能的兼容性。如果任何成员正在运行 MySQL 8.0.13 和 MySQL 8.0.16 之间的 MySQL 服务器版本,则不会对该组强制执行此保护措施,您可以指定任何新的主要成员,但建议选择运行最低的主要成员组中的 MySQL 服务器版本。

组正在等待的任何未提交的事务必须在操作完成之前提交、回滚或终止。在 MySQL 8.0.29 之前,该函数等待现有主数据库上的所有活动事务结束,包括使用该函数后启动的传入事务。从 MySQL 8.0.29 开始,您可以为使用该函数时正在运行的事务指定从 0 秒(立即)到 3600 秒(60 分钟)的超时。为了使超时生效,该组的所有成员都必须使用 MySQL 8.0.29 或更高版本。超时没有默认设置,所以如果你不设置它,等待时间没有上限,新的交易可以在这段时间内开始。

当超时到期时,对于任何尚未到达其提交阶段的事务,客户端会话将断开连接,以便事务不会继续。允许完成提交阶段的事务。当您设置超时时,它还会阻止新事务从那时起在主服务器上启动。显式定义的事务(使用START TRANSACTIONorBEGIN语句)会受到超时、断开连接和传入事务阻塞的影响,即使它们不修改任何数据也是如此。为了允许在函数运行时检查主函数,不修改数据的单个语句,如 一致性规则下允许的查询中所列, 被允许继续。

通过发出以下命令传递server_uuid您希望成为该组新主要成员的成员:

SELECT group_replication_set_as_primary(member_uuid);

从 MySQL 8.0.29 开始,您可以添加超时,例如:

SELECT group_replication_set_as_primary(‘00371d66-3c45-11ea-804b-080027337932’, 300)

要检查超时状态,请使用 PROCESSLIST_INFO性能模式线程表中的列:

SELECT NAME, PROCESSLIST_INFO FROM performance_schema.threads WHERE NAME=\"thread/group_rpl/THD_transaction_monitor\"; +---------------------------------------------+----------------------------------------------------------------------+ | NAME | PROCESSLIST_INFO | +--------------------------------------------------------------------------------------------------------------------+ | thread/group_rpl/THD_transaction_monitor | Group replication transaction monitor: Stopped client connections | +--------------------------------------------------------------------------------------------------------------------+

状态显示事务监视线程何时创建,新事务何时停止,未提交事务的客户端连接何时断开,最后,该过程何时完成并再次允许新事务。

在操作运行时,您可以通过发出以下命令来检查其进度:

SELECT event_name, work_completed, work_estimated FROM performance_schema.events_stages_current WHERE event_name LIKE "%stage/group_rpl%"; +----------------------------------------------------------------------------------+----------------+----------------+ | event_name | work_completed | work_estimated | +----------------------------------------------------------------------------------+----------------+----------------+ | stage/group_rpl/Primary Election: Waiting for members to turn on super_read_only | 3 | 5 | +----------------------------------------------------------------------------------+----------------+----------------+
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论