RESET REPLICA [ALL] [channel_option]
channel_option:
FOR CHANNEL channel
RESET REPLICA
使副本忘记它在源的二进制日志中的位置。
此语句用于全新启动;它清除复制元数据存储库,删除所有中继日志文件,并启动一个新的中继日志文件。它还将 CHANGE REPLICATION SOURCE TO
语句的 SOURCE_DELAY
选项指定的复制延迟重置为 0。
所有中继日志文件都将被删除,即使它们尚未被复制 SQL 线程完全执行。(如果已发出 STOP REPLICA
语句,或者副本的负载非常高,则可能存在这种情况。)
对于 GTID 启用的服务器(gtid_mode
为 ON
),发出 RESET REPLICA
对 GTID 执行历史记录没有影响。此语句不会更改 gtid_executed
或 gtid_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 ALL
。 RESET 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
操作的一部分,保存在崩溃安全的 InnoDB
表 mysql.slave_master_info
和 mysql.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
表。