13.4.2.4 RESET SLAVE 语句

RESET SLAVE [ALL] [channel_option]

channel_option:
    FOR CHANNEL channel

RESET SLAVE使得副本忘记了其在源二进制日志中的复制位置。该语句旨在用于全新启动:清除复制元数据存储库,删除所有中继日志文件,并启动新的中继日志文件。它还会将通过MASTER_DELAY选项指定的CHANGE MASTER TO指定的复制延迟重置为 0.

Note

即使复制 SQL 线程尚未完全执行所有中继日志文件,也将删除它们。 (如果您发出了STOP SLAVE语句或副本的负载很高,则副本中可能存在这种情况。)

对于正在使用 GTID 的服务器(gtid_modeON),发出RESET SLAVE对 GTID 执行历史没有影响。该语句不会更改gtid_executedgtid_purgedmysql.gtid_executedtable 的值。如果您需要重置 GTID 执行历史记录,请使用RESET MASTER,即使已启用 GTID 的服务器是禁用了二进制日志记录的副本。

RESET SLAVE需要RELOAD特权。

要使用RESET SLAVE,必须停止复制线程,因此在正在运行的副本上使用STOP SLAVE发出RESET SLAVE之前。要在组复制组成员上使用RESET SLAVE,成员状态必须为OFFLINE,这意味着已加载插件,但该成员当前不属于任何组。可以使用停止组复制语句使组成员脱机。

可选的FOR CHANNEL channel子句使您可以命名该语句应用于哪个复制通道。提供FOR CHANNEL channel子句会将RESET SLAVE语句应用于特定的复制通道。 FOR CHANNEL channel子句与ALL选项结合使用会删除指定的通道。如果没有命名通道并且不存在其他通道,则该语句将应用于默认通道。当存在多个复制通道时,发出不带FOR CHANNEL channel子句的重设全部语句将删除所有复制通道,并仅重新创建默认通道。有关更多信息,请参见第 16.2.3 节“复制通道”

RESET SLAVE不会更改任何复制连接参数,例如源的主机名和端口,或复制用户帐户名及其密码。

  • 从 MySQL 5.7.24 开始,在服务器上设置master_info_repository=TABLE时,作为RESET SLAVE操作的一部分,复制连接参数保留在防撞撞的InnoDBtablemysql.slave_master_info中。它们也保留在内存中。如果在发出RESET SLAVE之后但在发出START SLAVE之后服务器崩溃或有意重新启动,则从 table 中检索复制连接参数,并将其重新用于新连接。

  • 在服务器上设置master_info_repository=FILE时(MySQL 5.7 中的默认设置),复制连接参数仅保留在内存中。如果由于服务器崩溃或故意重启而在发出RESET SLAVE之后立即重新启动了副本mysqld,则连接参数将丢失。在这种情况下,必须在服务器开始重新指定连接参数之后在发出START SLAVE之前发出更改为主语句。

如果要有意重置连接参数,则需要使用重设全部,以清除连接参数。在这种情况下,您必须在服务器启动后发出更改为主语句以指定新的连接参数。

RESET SLAVE导致正在进行的事务的隐式提交。参见第 13.3.3 节“导致隐式提交的声明”

如果复制 SQL 线程在停止时处于复制临时 table 的中间,并且发出RESET SLAVE,则这些复制的临时 table 将在复制副本上删除。

在 MySQL 5.7.5 之前,RESET SLAVE还具有重置心跳周期(Slave_heartbeat_period)和SSL_VERIFY_SERVER_CERT的作用。此问题已在 MySQL 5.7.5 和更高版本中修复。 (缺陷号 18777899,错误#18778485)

在 MySQL 5.7.5 之前,RESET SLAVE ALL并未清除更改为主设置的IGNORE_SERVER_IDS列 table。在 MySQL 5.7.5 和更高版本中,该语句清除列 table。错误#18816897)

Note

在 NDB 群集副本 SQL 节点上使用时,RESET SLAVE清除mysql.ndb_apply_statustable。使用此语句时,请记住ndb_apply_status使用NDB存储引擎,因此由附加到副本群集的所有 SQL 节点共享。

您可以通过在执行RESET SLAVE之前发出SET GLOBAL @@ ndb_clear_apply_status=OFF来覆盖此行为,这样可以防止副本在这种情况下清除ndb_apply_statustable。