Documentation Home

13.4.2.6 STOP SLAVE 语句

STOP SLAVE [thread_types]

thread_types:
    [thread_type [, thread_type] ... ]

thread_type: IO_THREAD | SQL_THREAD

停止复制线程。STOP SLAVE需要 SUPER特权。推荐的最佳实践是STOP SLAVE在停止副本服务器之前在副本上执行(有关更多信息,请参见 第 5.1.15 节“服务器关闭过程”)。

使用基于行的日志记录格式时:如果要复制任何使用非事务性存储引擎的表,则应在关闭副本服务器之前在副本上 执行STOP SLAVE或 本节后面 的注释)。STOP SLAVE SQL_THREAD

与 一样START SLAVE,此语句可以与IO_THREADSQL_THREAD选项一起使用来命名要停止的线程。

STOP SLAVE导致正在进行的事务的隐式提交。请参阅第 13.3.3 节,“导致隐式提交的语句”

从 MySQL 5.6.11 开始, gtid_next必须 AUTOMATIC在发出此语句之前设置为(错误 #16062608)。

在 MySQL 5.6.13 及更高版本中,您可以通过设置系统变量 来控制 STOP SLAVE超时前等待的时间。rpl_stop_slave_timeout这可用于避免 STOP SLAVE使用与副本的不同客户端连接的其他 SQL 语句之间的死锁。当达到超时值时,发卡客户端返回错误信息并停止等待,但STOP SLAVE 指令仍然有效。一旦复制线程不再繁忙,STOP SLAVE就会执行语句并停止副本。(漏洞 #16856735)

如果当前复制事件组修改了一个或多个非事务性表,STOP SLAVE等待事件组完成最多 60 秒,除非您为复制 SQL 线程发出KILL QUERYorKILL CONNECTION语句。如果事件组在超时后仍未完成,则会记录一条错误消息。(错误 #319,错误 #38205)

在旧版本的 MySQL 中(4.0.5 之前),这条语句被称为SLAVE STOP. 从 MySQL 5.6.1 开始不再接受该语法。