Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

15.4.2.4 重置 REPLICA 语句

RESET REPLICA [ALL] [channel_option]

channel_option:
    FOR CHANNEL channel

RESET REPLICA 使副本忘记其在源的二进制日志中的位置。

该语句旨在用于干净的启动;它清除复制元数据存储库,删除所有中继日志文件,并启动一个新的中继日志文件。它还将延迟指定的 SOURCE_DELAY 选项重置为 0,使用 CHANGE REPLICATION SOURCE TO 语句。

Note

所有中继日志文件都将被删除,即使它们尚未被复制 SQL 线程完全执行。(这种情况可能出现在副本上,如果您已经发出 STOP REPLICA 语句或副本高度加载。)

对于启用 GTID 的服务器(gtid_modeON),发出 RESET REPLICA 不会影响 GTID 执行历史记录。该语句不会更改 gtid_executedgtid_purged 的值,也不会更改 mysql.gtid_executed 表。如果您需要重置 GTID 执行历史记录,请使用 RESET BINARY LOGS AND GTIDS,即使 GTID 启用的服务器是副本,二进制日志记录已禁用。

RESET REPLICA 需要 RELOAD 权限。

要使用 RESET REPLICA,复制 SQL 线程和复制 I/O(接收器)线程必须停止,因此在运行副本上使用 STOP REPLICA 语句,然后发出 RESET REPLICA。要在组复制组成员上使用 RESET REPLICA,成员状态必须是 OFFLINE,这意味着插件已加载,但成员当前不属于任何组。组成员可以通过使用 STOP GROUP REPLICATION 语句offline。

可选的 FOR CHANNEL channel 子句使您可以指定该语句应用于哪个复制通道。提供 FOR CHANNEL channel 子句将 RESET REPLICA 语句应用于特定的复制通道。将 FOR CHANNEL channel 子句与 ALL 选项结合使用将删除指定的通道。如果没有指定通道且没有额外的通道存在,该语句将应用于默认通道。发出 RESET REPLICA ALL 语句而不带 FOR CHANNEL channel 子句时,多个复制通道存在时,将删除 所有 复制通道,并重新创建默认通道。请参阅 第 19.2.2 节,“复制通道” 以获取更多信息。

RESET REPLICA 不会更改任何复制连接参数,包括源的主机名和端口、复制用户帐户和密码、PRIVILEGE_CHECKS_USER 帐户、REQUIRE_ROW_FORMAT 选项、REQUIRE_TABLE_PRIMARY_KEY_CHECK 选项和 ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS 选项。如果您想更改任何复制连接参数,可以使用 CHANGE REPLICATION SOURCE TO 语句在服务器启动后。如果您想删除所有复制连接参数,请使用 RESET REPLICA ALLRESET REPLICA ALL 也将清除 IGNORE_SERVER_IDS 列表,该列表是由 CHANGE REPLICATION SOURCE TO 语句设置的。当您使用 RESET REPLICA ALL 后,如果您想再次使用该实例作为副本,您需要在服务器启动后发出 CHANGE REPLICATION SOURCE TO 语句以指定新的连接参数。

您可以在 CHANGE REPLICATION SOURCE TO 语句中设置 GTID_ONLY 选项,以停止复制通道在复制元数据存储库中持久化文件名和文件位置。当您发出 RESET REPLICA 时,复制元数据存储库将被同步。RESET REPLICA ALL 删除而不是更新存储库,因此它们将被隐式同步。

在意外服务器退出或故意重新启动后发出 RESET REPLICA 但在发出 START REPLICA 之前,复制连接参数将被保留在崩溃安全的 InnoDBmysql.slave_master_infomysql.slave_relay_log_info 中作为 RESET REPLICA 操作的一部分。它们也将被保留在内存中。在意外服务器退出或故意重新启动后发出 RESET REPLICA 但在发出 START REPLICA 之前,复制连接参数将从表中检索并重新应用于通道。这适用于连接和应用程序元数据存储库。

RESET REPLICA 不会更改任何复制过滤器设置(例如 --replicate-ignore-table)对于受影响的通道。但是,RESET REPLICA ALL 将删除由语句删除的通道上的复制过滤器。当删除的通道或通道被重新创建时,任何全局复制过滤器将被复制到它们上,并且没有通道特定的复制过滤器被应用。有关更多信息,请参阅 第 19.2.5.4 节,“复制通道基于过滤器”

RESET REPLICA 导致正在进行的事务隐式提交。请参阅 第 15.3.3 节,“引起隐式提交的语句”

如果复制 SQL 线程在停止时正在复制临时表,并且发出 RESET REPLICA,这些复制的临时表将在副本上被删除。

Note

在 NDB 集群副本 SQL 节点上使用时,RESET REPLICA 将清除 mysql.ndb_apply_status 表。请注意,在使用该语句时,ndb_apply_status 使用 NDB 存储引擎,因此由所有附加到集群的 SQL 节点共享。

您可以通过在执行 RESET REPLICA 之前发出 SET GLOBAL @@ndb_clear_apply_status=OFF 来覆盖该行为,这将阻止副本清除 ndb_apply_status 表。