Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.4.2.3 重置副本语句

RESET REPLICA [ALL] [channel_option]

channel_option:
    FOR CHANNEL channel

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

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

Note

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

在使用GTIDs的服务器(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语句。在Group Replication组成员上使用RESET REPLICA,成员状态必须为OFFLINE,即插件已加载,但成员不属于任何组。可以使用STOP GROUP REPLICATION语句将组成员置于离线状态。

可选的FOR CHANNEL channel子句允许您指定语句应用于哪个复制通道。提供FOR CHANNEL channel子句将RESET REPLICA语句应用于特定的复制通道。将FOR CHANNEL channel子句与ALL选项组合起来将删除指定的通道。如果没有指定通道且没有额外通道,语句将应用于默认通道。没有指定通道且存在多个复制通道时,执行RESET REPLICA ALL语句将删除所有复制通道并重新创建默认通道。请参阅第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还将清除由CHANGE REPLICATION SOURCE TO设置的IGNORE_SERVER_IDS列表。当您使用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 语句之前,复制连接参数将从表中检索并重新应用到通道中。这适用于连接和应用程序元数据存储库的 both。

RESET REPLICA 不会更改任何复制过滤器设置(例如--replicate-ignore-table)对受语句影响的通道。然而,RESET REPLICA ALL 删除了语句删除的通道上设置的复制过滤器。删除的通道或通道重新创建时,任何全局复制过滤器指定的复制过滤器将被复制到它们,并且不应用通道特定的复制过滤器。更多信息请见Section 19.2.5.4,“Replication Channel Based Filters”

RESET REPLICA 导致了正在进行的事务的隐式提交。见Section 15.3.3,“Statements That Cause an Implicit Commit”

如果复制 SQL 线程在复制临时表时被中断,并且RESET REPLICA 是被执行的,这些复制的临时表将在副本上被删除。

Note

在使用NDB 存储引擎的 NDB 集群副本 SQL 节点上,RESET REPLICA 将清除mysql.ndb_apply_status 表。你应该注意NDB 存储引擎使用NDB,因此在集群中的所有 SQL 节点上共享。

你可以通过在执行SET GLOBAL @@ndb_clear_apply_status=OFF 之前,使用SET 语句来覆盖这个行为,以保持副本不删除ndb_apply_status 表在这种情况下。