RESET SLAVE语句
RESET SLAVE [ALL ] [channel_option] channel_option:FOR CHANNEL channel
RESET SLAVE
使从服务器忘记其在主服务器二进制日志中的复制位置。该语句旨在用于全新启动:清除主信息和中继日志信息存储库,删除所有中继日志文件,并启动新的中继日志文件。它还会将使用MASTER_DELAY
选项指定的复制延迟重置为0 CHANGE MASTER TO
。
注意即使从属SQL线程尚未完全执行所有中继日志文件,也将删除它们。(如果您已发出一条
STOP SLAVE
语句或从属服务器负载很高,则复制从属服务器上可能存在这种情况。)
对于正在使用GTID的服务器(gtid_mode
is ON
),颁发RESET SLAVE
对GTID执行历史记录没有影响。该语句不会更改gtid_executed
或gtid_purged
或mysql.gtid_executed
表的值。如果您需要重置GTID执行历史记录,RESET MASTER
即使已启用GTID的服务器是禁用了二进制日志记录的复制从属服务器,也请使用。
RESET SLAVE
需要RELOAD
特权。
要使用RESET SLAVE
,必须停止从属复制线程,以便STOP SLAVE
在发出之前在运行中的从属使用RESET SLAVE
。要RESET SLAVE
在“组复制”组成员上使用,成员状态必须为OFFLINE
,表示已加载插件,但该成员当前不属于任何组。可以使用STOP GROUP REPLICATION
语句使组成员脱机。
可选的子句使您可以命名该语句应用于哪个复制通道。提供子句可将该语句应用于特定的复制通道。将子句与选项结合使用会删除指定的通道。如果没有命名通道,并且不存在其他通道,则该语句将应用于默认通道。存在多个复制通道时发出不带子句的语句将删除所有复制通道,并仅重新创建默认通道。有关更多信息,请参见“复制通道”。FOR CHANNEL channel
FOR CHANNEL channel
RESET SLAVE
FOR CHANNEL channel
ALL
RESET SLAVE ALL
FOR CHANNEL channel
RESET SLAVE
不会更改任何复制连接参数,包括主控主机,主控端口,主控用户,主控密码,PRIVILEGE_CHECKS_USER
帐户和REQUIRE_ROW_FORMAT
选项。如果要更改任何复制连接参数,则可以CHANGE MASTER TO
在服务器启动后使用一条语句来执行此操作。如果要删除所有复制连接参数,请使用RESET SLAVE ALL
。RESET SLAVE ALL
也清除IGNORE_SERVER_IDS
由CHANGE MASTER TO设置的列表。使用完后RESET SLAVE ALL
,如果要再次将该实例用作复制从属,则需要CHANGE MASTER TO
在服务器启动后发出一条语句以指定新的连接参数。
如果在发布后RESET SLAVE
但在发布前服务器崩溃或有意重新启动START SLAVE
,则复制连接参数的保留取决于用于主信息日志和中继日志信息日志的存储库:
- 在服务器上设置
master_info_repository=TABLE
和时relay_log_info_repository=TABLE
(这是MySQL 8.0的默认设置),复制连接参数将保留在崩溃安全InnoDB
表中,mysql.slave_master_info
并mysql.slave_relay_log_info
作为RESET SLAVE
操作的一部分。它们也保留在内存中。如果RESET SLAVE
在发行后但发行前服务器崩溃或有意重启START SLAVE
,从表中检索复制连接参数,然后将其重新应用于通道。从MySQL 8.0.13到主信息日志,从MySQL 8.0.19到中继日志信息日志,这种情况适用。 - 如果在服务器上设置
master_info_repository=FILE
和relay_log_info_repository=FILE
,或者MySQL Server版本早于上面指定的版本,则复制连接参数仅保留在内存中。如果由于服务器崩溃或有意重启而在发布后立即重新启动了从属mysqldRESET SLAVE
,则连接参数将丢失。在这种情况下,必须CHANGE MASTER TO
在服务器启动后发出语句以在发出前重新指定连接参数START SLAVE
。请注意,FILE
这些选项的设置已被弃用,并将在以后的版本中删除。
RESET SLAVE
不会更改--replicate-ignore-table
受该语句影响的通道的任何复制过滤器设置(例如)。但是,RESET SLAVE ALL
删除在语句删除的通道上设置的复制筛选器。重新创建已删除的一个或多个通道时,将为从属指定的所有全局复制过滤器都复制到它们,并且不应用任何特定于通道的复制过滤器。有关更多信息,请参见“基于复制通道的过滤器”。
RESET SLAVE
导致隐式提交正在进行的事务。请参见“START TRANSACTION,COMMIT和ROLLBACK语句”。
如果从属SQL线程在停止时处于复制临时表的中间并被RESET SLAVE
发出,则这些复制的临时表将在从属上删除。
RESET SLAVE
不会重置心跳周期或SSL_VERIFY_SERVER_CERT
。
在NDB群集复制从属SQL节点上使用时,RESET SLAVE
清除mysql.ndb_apply_status
表。使用该语句ndb_apply_status
使用NDB
存储引擎时,请记住这一点,并且该语句由附加到从属群集的所有SQL节点共享。
您可以通过在执行之前发出命令来覆盖此行为,以防止从属设备在这种情况下清除表。SET
GLOBAL @@
ndb_clear_apply_status=OFF
RESET SLAVE
ndb_apply_status