Documentation Home
MySQL 8.0 参考手册  / 第 13 章 SQL 语句  / 13.4 复制语句  / 13.4.3 控制组复制的SQL语句  /  13.4.3.3 配置Group Replication Primary的函数

13.4.3.3 配置Group Replication Primary的函数

以下函数使您能够将单主复制组的成员设置为接管主复制。当前主要成为只读次要,指定的组成员成为读写主要。该函数可用于以单主模式运行的复制组的任何成员。这个功能取代了通常的初选过程。 第 18.5.1.1 节,“更改组的主要成员” 解释了新主要成员的 MySQL 服务器版本要求。

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

组正在等待的任何未提交的事务必须在操作完成之前提交、回滚或终止。在 MySQL 8.0.29 之前,该函数等待现有主数据库上的所有活动事务结束,包括使用该函数后启动的传入事务。从 MySQL 8.0.29 开始,您可以在使用该函数时为正在运行的事务指定超时。为了使超时生效,该组的所有成员都必须使用 MySQL 8.0.29 或更高版本。

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

  • group_replication_set_as_primary()

    指定该组的特定成员作为新的主要成员,覆盖任何选举过程。

    句法:

    STRING group_replication_set_as_primary(member_uuid[, timeout])

    参数:

    • member_uuid:一个字符串,其中包含要成为新主要成员的组成员的 UUID。

    • timeout:一个整数,指定使用该函数时在现有主数据库上运行的事务的超时秒数。您可以设置从 0 秒(立即)到 3600 秒(60 分钟)的超时。当您设置超时时,新事务无法从该点开始在主节点上启动。超时没有默认设置,所以如果你不设置它,等待时间没有上限,新的交易可以在这段时间内开始。这个选项从 MySQL 8.0.29 开始可用。

    返回值:

    包含操作结果的字符串,例如操作是否成功。

    例子:

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

    有关详细信息,请参阅 第 18.5.1.1 节,“更改组的主要成员”