文档首页
MySQL 9.0 参考手册
相关文档 下载本手册

15.4.2.3 RESET REPLICA 语句

RESET REPLICA [ALL] [channel_option]

channel_option:
    FOR CHANNEL channel

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

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

注意

所有中继日志文件都将被删除,即使它们尚未被复制 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 语句使组成员脱机。

可选的 FOR CHANNEL channel 子句使您能够命名该语句适用的复制通道。提供 FOR CHANNEL channel 子句将 RESET REPLICA 语句应用于特定的复制通道。将 FOR CHANNEL channel 子句与 ALL 选项结合使用会删除指定的通道。如果未命名通道且不存在其他通道,则该语句适用于默认通道。当存在多个复制通道时,在没有 FOR CHANNEL channel 子句的情况下发出 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 之前出现意外服务器退出或故意重新启动的情况下,复制连接参数将作为 RESET REPLICA 操作的一部分,保存在崩溃安全的 InnoDBmysql.slave_master_infomysql.slave_relay_log_info 中。它们也会保留在内存中。在发出 RESET REPLICA 但在发出 START REPLICA 之前出现意外服务器退出或故意重新启动的情况下,复制连接参数将从表中检索,并重新应用于通道。这适用于连接和应用器元数据存储库。

RESET REPLICA 不会更改受该语句影响的通道的任何复制筛选器设置(例如 --replicate-ignore-table)。但是,RESET REPLICA ALL 会删除在由该语句删除的通道上设置的复制筛选器。当删除的通道重新创建时,为副本指定的任何全局复制筛选器都会复制到它们,并且不会应用任何特定于通道的复制筛选器。有关更多信息,请参见 第 19.2.5.4 节,“基于通道的复制筛选器”

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

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

注意

在 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 表。