STOP GROUP_REPLICATION
停止组复制。此语句需要
GROUP_REPLICATION_ADMIN
特权(或已弃用的SUPER
特权)。一旦您发出STOP
GROUP_REPLICATION
,成员就会设置为
super_read_only=ON
,这确保在组复制停止时不会对成员进行任何写入。成员上运行的任何其他异步复制通道也将停止。在此成员上启动 Group Replication 时,您在语句中指定的任何用户凭据START
GROUP_REPLICATION
都将从内存中删除,并且必须在您再次启动 Group Replication 时提供。
使用此语句时要格外小心,因为它会从组中删除服务器实例,这意味着它不再受组复制的一致性保证机制保护。为了完全安全,请确保您的应用程序在发出此语句之前无法再连接到实例,以避免任何过时读取的机会。
该STOP GROUP_REPLICATION
语句停止组成员上的异步复制通道,但它不会像以前那样隐式提交正在进行的事务STOP
REPLICA
。这是因为在 Group Replication 组成员上,在关闭操作期间提交的额外事务会使成员与组不一致并导致重新加入问题。为了避免在停止组复制时正在进行的事务提交失败,从 MySQL 8.0.28 开始,
当 GTID 被分配为系统变量
STOP GROUP_REPLICATION
的值时,无法发出该语句。gtid_next
系统
group_replication_components_stop_timeout
变量指定发出此语句后组复制等待其每个模块完成正在进行的进程的时间。超时用于解决Group Replication组件无法正常停止的情况,如果成员在处于错误状态时被驱逐出组,或者当MySQL Enterprise Backup等进程持有全局锁时,可能会发生这种情况在成员的表上。在这种情况下,成员无法停止应用程序线程或完成分布式恢复过程以重新加入。STOP GROUP_REPLICATION
在情况得到解决(例如,通过释放锁)或组件超时到期并且模块关闭(无论其状态如何)之前不会完成。在 MySQL 8.0.27 之前,默认组件超时为 31536000 秒,即 365 天。使用此设置,组件超时在刚才描述的情况下无济于事,因此建议在这些 MySQL 8.0 版本中使用较低的设置。从MySQL 8.0.27开始,默认值为300秒;这意味着如果在 5 分钟之前情况没有得到解决,Group Replication 组件将在 5 分钟后停止,从而允许成员重新启动并重新加入。