#### 13.4.2.5 RESET REPLICA 语句

[](<>)[](<>)

```
RESET REPLICA [ALL] [channel_option]

channel_option:
    FOR CHANNEL channel
```

`重置副本`使副本忘记其在源二进制日志中的位置。从 MySQL 8.0.22 开始，使用[`重置副本`](reset-replica.html)代替[`复位从机`](reset-slave.html)，该版本已弃用。在 MySQL 8.0.22 之前的版本中，使用[`复位从机`](reset-slave.html).

该语句旨在用于干净的开始；它清除复制元数据存储库，删除所有中继日志文件，并启动一个新的中继日志文件。它还将使用指定的复制延迟重置为 0`SOURCE_DELAY`\|`MASTER_DELAY`的选项[`将复制源更改为`](change-replication-source-to.html)语句（来自 MySQL 8.0.23）或[`将主更改为`](change-master-to.html)语句（在 MySQL 8.0.23 之前）。

笔记

所有中继日志文件都被删除，即使它们还没有被复制 SQL 线程完全执行。（如果您发布了[`停止复制`](stop-replica.html)语句，或者如果副本负载很高。）

对于使用 GTID 的服务器（[`gtid_mode`](replication-options-gtids.html#sysvar_gtid_mode)是`在`), 发行`重置副本`对 GTID 执行历史没有影响。该语句不会更改`gtid_executed`要么`gtid_purged`， 或者`mysql.gtid_executed`桌子。如果您需要重置 GTID 执行历史记录，请使用[`复位主机`](reset-master.html)，即使启用 GTID 的服务器是禁用二进制日志记录的副本。

`重置副本`需要[`重新加载`](privileges-provided.html#priv_reload)特权。

使用`重置副本`, 复制 SQL 线程和复制 I/O (receiver) 线程必须停止，所以在运行的副本使用[`停止复制`](stop-replica.html)发行前`重置副本`.使用`重置副本`在组复制组成员上，成员状态必须是`离线`，表示插件已加载，但该成员当前不属于任何组。组成员可以通过使用[`停止组复制`](stop-group-replication.html)陈述。

可选的`对于频道 *`渠道`*`子句使您能够命名该语句适用于哪个复制通道。提供一个`对于频道 *`渠道`*`条款适用于`重置副本`声明到特定的复制通道。结合一个`对于频道 *`渠道`*`子句与`全部`选项删除指定的频道。如果没有命名通道并且不存在额外的通道，则该语句适用于默认通道。发行`全部重置副本`没有的声明`对于频道 *`渠道`*`存在多个复制通道时的子句删除*全部*复制通道并仅重新创建默认通道。看[第 17.2.2 节，“复制通道”](replication-channels.html)了解更多信息。

`重置副本`不会更改任何复制连接参数，包括源的主机名和端口、复制用户帐户及其密码、`PRIVILEGE_CHECKS_USER`帐户`REQUIRE_ROW_FORMAT`选项，`REQUIRE_TABLE_PRIMARY_KEY_CHECK`选项，以及`ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS`选项。如果要更改任何复制连接参数，可以使用[`将复制源更改为`](change-replication-source-to.html)语句（来自 MySQL 8.0.23）或[`将主更改为`](change-master-to.html)服务器启动后的语句（在 MySQL 8.0.23 之前）。如果要删除所有复制连接参数，请使用`全部重置副本`.`全部重置副本`也清除了`IGNORE_SERVER_IDS`列表由[`将复制源更改为`](change-replication-source-to.html)\|[`将主更改为`](change-master-to.html).当您使用过`全部重置副本`，如果您想再次将实例用作副本，则需要发出[`将复制源更改为`](change-replication-source-to.html)\|[`将主更改为`](change-master-to.html)服务器启动后的语句指定新的连接参数。

从 MySQL 8.0.27 开始，您可以设置`GTID_ONLY`上的选项[`将复制源更改为`](change-replication-source-to.html)用于停止复制通道在复制元数据存储库中保留文件名和文件位置的语句。当您发出`重置副本`语句，复制元数据存储库是同步的。`全部重置副本`删除而不是更新存储库，因此它们是隐式同步的。

如果服务器意外退出或发出后故意重启`重置副本`但在发行之前[`开始复制`](start-replica.html)，复制连接参数的保留取决于用于复制元数据的存储库：

-   什么时候[`master_info_repository=表`](replication-options-replica.html#sysvar_master_info_repository)和[`relay_log_info_repository=表`](replication-options-replica.html#sysvar_relay_log_info_repository)在服务器上设置（这是 MySQL 8.0 的默认设置），复制连接参数保留在崩溃安全中`InnoDB`表`mysql.slave_master_info`和`mysql.slave_relay_log_info`作为一部分`重置副本`手术。它们也保留在内存中。如果服务器意外退出或发出后故意重启`重置副本`但在发行之前[`开始复制`](start-replica.html)，从表中检索复制连接参数并重新应用于通道。这种情况适用于连接元数据存储库的 MySQL 8.0.13，适用于应用程序元数据存储库的 MySQL 8.0.19。

-   如果[`master_info_repository=文件`](replication-options-replica.html#sysvar_master_info_repository)和[`relay_log_info_repository=文件`](replication-options-replica.html#sysvar_relay_log_info_repository)在服务器上设置，从 MySQL 8.0 开始不推荐使用，或者 MySQL Server 版本早于上面指定的版本，复制连接参数只保留在内存中。如果复制品[**mysqld**](mysqld.html)发出后立即重新启动`重置副本`由于服务器意外退出或故意重新启动，连接参数会丢失。在这种情况下，您必须发出[`将复制源更改为`](change-replication-source-to.html)语句（来自 MySQL 8.0.23）或[`将主更改为`](change-master-to.html)语句（MySQL 8.0.23 之前）在服务器启动后发出前重新指定连接参数[`开始复制`](start-replica.html).

`重置副本`不会更改任何复制过滤器设置（例如[`--复制忽略表`](replication-options-replica.html#option_mysqld_replicate-ignore-table)) 对于受该声明影响的频道。然而，`全部重置副本`删除在语句删除的通道上设置的复制过滤器。重新创建已删除的一个或多个通道时，为副本指定的任何全局复制过滤器都将复制到它们，并且不会应用任何通道特定的复制过滤器。有关更多信息，请参阅[第 17.2.5.4 节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html).

`重置副本`导致正在进行的事务的隐式提交。看[第 13.3.3 节，“导致隐式提交的语句”](implicit-commit.html).

如果复制 SQL 线程在停止时正在复制临时表，并且`重置副本`发出后，这些复制的临时表将在副本上删除。

`重置副本`不重置心跳周期或`SSL_VERIFY_SERVER_CERT`.

笔记

在 NDB Cluster 副本 SQL 节点上使用时，`重置副本`清除`mysql.ndb_apply_status`桌子。使用此语句时，您应牢记`ndb_apply_status`使用[`新开发银行`](mysql-cluster.html)存储引擎等由连接到集群的所有 SQL 节点共享。

您可以通过发出来覆盖此行为[`放`](set-variable.html) `全球的 @@`[`ndb_clear_apply_status=OFF`](mysql-cluster-options-variables.html#sysvar_ndb_clear_apply_status)在执行之前`重置副本`，这会阻止副本清除`ndb_apply_status`这种情况下的表。
