文档首页
MySQL 9.0 参考手册
相关文档 下载本手册

MySQL 9.0 参考手册  /  ...  /  STOP GROUP_REPLICATION 语句

15.4.3.2 STOP GROUP_REPLICATION 语句

STOP GROUP_REPLICATION

停止组复制。此语句需要 GROUP_REPLICATION_ADMIN 权限(或已弃用的 SUPER 权限)。当您发出 STOP GROUP_REPLICATION 时,成员将设置为 super_read_only=ON,这将确保在组复制停止时,不会对成员进行任何写入操作。成员上运行的任何其他异步复制通道也将停止。您在启动组复制时在 START GROUP_REPLICATION 语句中指定的任何用户凭据都将从内存中删除,并且必须在再次启动组复制时提供。

警告

谨慎使用此语句,因为它会将服务器实例从组中移除,这意味着它不再受组复制的一致性保证机制的保护。为了确保安全,请确保您的应用程序在发出此语句之前无法连接到该实例,以避免任何 stale 读取的可能性。

语句 STOP GROUP_REPLICATION 会停止组成员上的异步复制通道,但它不会像 STOP REPLICA 一样隐式地提交正在进行的事务。这是因为在组复制组成员上,在关闭操作期间提交的额外事务会导致成员与组不一致,并导致重新加入问题。为了避免在停止组复制时正在进行的事务提交失败,STOP GROUP_REPLICATION 语句不能在将 GTID 指定为系统变量 gtid_next 值时发出。

系统变量 group_replication_components_stop_timeout 指定了在发出此语句后,组复制等待其每个模块完成正在进行的进程的时间。该超时用于解决组复制组件无法正常停止的情况,这种情况可能发生在成员在错误状态下被逐出组时,或者在诸如 MySQL Enterprise Backup 这样的进程在成员上的表上持有全局锁时。在这种情况下,成员无法停止 applier 线程或完成分布式恢复过程以重新加入。除非情况得到解决(例如,锁被释放),或者组件超时过期并且模块无论其状态如何都被关闭,否则 STOP GROUP_REPLICATION 不会完成。默认值为 300 秒;这意味着如果在该时间之前情况没有得到解决,组复制组件将在 5 分钟后停止,允许成员重新启动并重新加入。