STOP REPLICA [thread_types] [channel_option]
thread_types:
[thread_type [, thread_type] ... ]
thread_type: IO_THREAD | SQL_THREAD
channel_option:
FOR CHANNEL channel
停止复制线程。从 MySQL 8.0.22 开始,使用
STOP REPLICA
in place of
STOP SLAVE
,现在已弃用。在 MySQL 8.0.22 之前的版本中,使用
STOP SLAVE
.
STOP REPLICA
需要
REPLICATION_SLAVE_ADMIN
特权(或已弃用的SUPER
特权)。推荐的最佳实践是
STOP REPLICA
在停止副本服务器之前在副本上执行(有关更多信息,请参见第 5.1.19 节“服务器关闭过程”)。
与 一样START
REPLICA
,此语句可以与
IO_THREAD
和SQL_THREAD
选项一起使用,以命名要停止的复制线程或线程。请注意,组复制应用程序通道 ( group_replication_applier
) 没有复制 I/O(接收方)线程,只有复制 SQL(应用程序)线程。因此,使用该SQL_THREAD
选项可以完全停止该通道。
STOP REPLICA
导致正在进行的事务的隐式提交。请参阅第 13.3.3 节,“导致隐式提交的语句”。
gtid_next
必须
AUTOMATIC
在发出此语句之前设置为。
您可以通过设置系统变量(从 MySQL 8.0.26 开始)或
(在 MySQL 8.0.26 之前)
来控制STOP REPLICA
超时前等待的时间
。这可用于避免
使用与副本的不同客户端连接的其他 SQL 语句之间的死锁。当达到超时值时,发卡客户端返回错误信息并停止等待,但
指令仍然有效。一旦复制线程不再繁忙,就会执行语句并停止副本。
rpl_stop_replica_timeout
rpl_stop_slave_timeout
STOP REPLICA
STOP REPLICA
STOP REPLICA
一些CHANGE REPLICATION SOURCE TO
| CHANGE MASTER TO
副本运行时允许使用语句,具体取决于复制线程的状态。但是,STOP
REPLICA
在执行
CHANGE REPLICATION SOURCE TO
|
之前使用 CHANGE MASTER TO
仍然支持这种情况下的声明。有关详细信息,请参阅
第 13.4.2.3 节“将复制源更改为语句”、
第 13.4.2.1 节“将主副本更改为语句”和
第 17.4.8 节“在故障转移期间切换源”。
可选子句使您能够命名该语句适用于哪个复制通道。提供一个子句将
语句应用于特定的复制通道。如果没有命名通道并且不存在额外通道,则该语句适用于默认通道。如果语句在使用多个通道时没有命名通道,则该语句将停止所有通道的指定线程。有关更多信息,请参阅
第 17.2.2 节,“复制通道”。
FOR CHANNEL
channel
FOR CHANNEL
channel
STOP REPLICA
STOP REPLICA
组复制(group_replication_applier
和
group_replication_recovery
)的复制通道由服务器实例自动管理。STOP
REPLICA
根本不能与
group_replication_recovery
通道一起使用,并且只能
group_replication_applier
在组复制未运行时与通道一起使用。该
group_replication_applier
通道只有一个applier线程,没有receiver线程,所以如果需要可以通过SQL_THREAD
不带option的option来停止IO_THREAD
。
当副本是多线程的(replica_parallel_workers
或者
slave_parallel_workers
是一个非零值)时,作为停止工作线程的一部分,从中继日志执行的事务序列中的任何间隙都会被关闭。如果副本在执行语句时意外停止(例如,由于工作线程中的错误或另一个线程发出KILL
)
STOP REPLICA
,则中继日志中执行的事务顺序可能会变得不一致。有关更多信息,请参阅
第 17.5.1.34 节,“复制和事务不一致”。
当源使用基于行的二进制日志记录格式时,如果要复制任何使用非事务性存储引擎的表,则应在关闭副本服务器之前在副本上执行STOP REPLICA
或
。STOP REPLICA SQL_THREAD
如果当前复制事件组修改了一个或多个非事务性表,STOP REPLICA
等待事件组完成最多 60 秒,除非您为复制 SQL 线程发出KILL
QUERY
orKILL
CONNECTION
语句。如果事件组在超时后仍未完成,则会记录一条错误消息。
当源使用基于语句的二进制日志记录格式时,在它打开临时表时更改源可能是不安全的。这是不推荐基于语句的临时表复制的原因之一。Replica_open_temp_tables
您可以通过检查或
的值来了解副本上是否有任何临时表
Slave_open_temp_tables
。使用基于语句的复制时,在执行CHANGE REPLICATION SOURCE
TO
|之前该值应为 0 CHANGE MASTER TO
. 如果副本上有任何临时表打开,发出
CHANGE REPLICATION SOURCE TO
|
CHANGE MASTER TO
发出警告后的STOP REPLICA
声明
ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO
。