RESET REPLICA [ALL] [channel_option]
channel_option:
FOR CHANNEL channel
RESET REPLICA
使副本忘记它在源的二进制日志中的位置。从 MySQL 8.0.22 开始,使用
RESET REPLICA
代替
RESET SLAVE
,该版本已弃用。在 MySQL 8.0.22 之前的版本中,使用
RESET SLAVE
.
该声明旨在用于一个干净的开始;它清除复制元数据存储库,删除所有中继日志文件,并启动一个新的中继日志文件。SOURCE_DELAY
它还将|
指定的复制延迟重置为 0
MASTER_DELAY
语句的选项
CHANGE REPLICATION SOURCE TO
(来自 MySQL 8.0.23)或CHANGE
MASTER TO
语句(MySQL 8.0.23 之前)。
所有中继日志文件都被删除,即使它们还没有被复制 SQL 线程完全执行。(如果您已发出
STOP
REPLICA
声明或副本负载很高,则副本可能存在这种情况。)
对于正在使用 GTID 的服务器 ( gtid_mode
is
ON
),发布RESET REPLICA
对 GTID 执行历史没有影响。该语句不会更改gtid_executed
or
gtid_purged
或
mysql.gtid_executed
表的值。如果您需要重置 GTID 执行历史记录,请使用RESET
MASTER
,即使启用 GTID 的服务器是禁用二进制日志记录的副本。
RESET REPLICA
需要
RELOAD
特权。
要使用RESET REPLICA
,必须停止复制 SQL 线程和复制 I/O(接收方)线程,因此
STOP
REPLICA
在发出RESET
REPLICA
. 要RESET REPLICA
在 Group Replication 组成员上使用,成员状态必须为
OFFLINE
,这意味着插件已加载但该成员当前不属于任何组。STOP
GROUP REPLICATION
可以使用语句
使组成员脱机。
可选子句使您能够命名该语句适用于哪个复制通道。提供一个子句将
语句应用于特定的复制通道。将子句与
选项结合使用会删除指定的频道。如果没有命名通道并且不存在额外通道,则该语句适用于默认通道。当存在多个复制通道时发出不带子句的语句会删除
所有复制通道并仅重新创建默认通道。有关更多信息,请参阅第 17.2.2 节,“复制通道”
。
FOR CHANNEL
channel
FOR CHANNEL
channel
RESET REPLICA
FOR CHANNEL
channel
ALL
RESET REPLICA
ALL
FOR CHANNEL
channel
RESET REPLICA
不更改任何复制连接参数,包括源的主机名和端口、复制用户帐户及其密码、
PRIVILEGE_CHECKS_USER
帐户、
REQUIRE_ROW_FORMAT
选项、
REQUIRE_TABLE_PRIMARY_KEY_CHECK
选项和ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
选项。如果要更改任何复制连接参数,可以
在服务器启动后使用CHANGE REPLICATION SOURCE
TO
语句(来自 MySQL 8.0.23)或
语句(MySQL 8.0.23 之前)来执行此操作。CHANGE MASTER TO
如果要删除所有复制连接参数,请使用
RESET REPLICA ALL
. RESET REPLICA
ALL
还清除
|
IGNORE_SERVER_IDS
设置的列表
. 当你使用过CHANGE REPLICATION SOURCE TO
CHANGE MASTER TO
RESET REPLICA ALL
,如果你想再次使用该实例作为副本,你需要发出一个
CHANGE REPLICATION SOURCE TO
|
CHANGE MASTER TO
服务器启动后的语句指定新的连接参数。
从 MySQL 8.0.27 开始,您可以GTID_ONLY
在语句上设置选项CHANGE REPLICATION
SOURCE TO
以停止复制通道在复制元数据存储库中保留文件名和文件位置。当您发出一条RESET
REPLICA
语句时,复制元数据存储库将同步。RESET REPLICA
ALL
删除而不是更新存储库,因此它们是隐式同步的。
如果服务器意外退出或在发布之后RESET REPLICA
但在发布之前故意重启START
REPLICA
,复制连接参数的保留取决于用于复制元数据的存储库:
在 服务器上设置
master_info_repository=TABLE
和relay_log_info_repository=TABLE
时(这是 MySQL 8.0 的默认设置),复制连接参数将保留在崩溃安全InnoDB
表中mysql.slave_master_info
并mysql.slave_relay_log_info
作为RESET REPLICA
操作的一部分。它们也保留在内存中。RESET REPLICA
在发出后但发出前 服务器意外退出或故意重启START REPLICA
,复制连接参数从表中检索并重新应用于通道。这种情况从 MySQL 8.0.13 开始适用于连接元数据存储库,从 MySQL 8.0.19 开始适用于应用程序元数据存储库。如果
master_info_repository=FILE
和relay_log_info_repository=FILE
在服务器上设置,从 MySQL 8.0 开始弃用,或者 MySQL 服务器版本早于上面指定的版本,复制连接参数仅保留在内存中。如果副本mysqldRESET REPLICA
由于服务器意外退出或故意重启而在发出后立即重启,连接参数将丢失。在这种情况下,您必须在服务器启动后发出CHANGE REPLICATION SOURCE TO
语句(从 MySQL 8.0.23 开始)或CHANGE MASTER TO
语句(在 MySQL 8.0.23 之前)以重新指定发出前的连接参数START REPLICA
。
RESET REPLICA
不会更改
--replicate-ignore-table
受该语句影响的通道的任何复制过滤器设置(例如 )。但是,RESET
REPLICA ALL
删除在语句删除的通道上设置的复制过滤器。重新创建已删除的一个或多个通道时,为副本指定的任何全局复制过滤器都会复制到它们,并且不会应用任何通道特定的复制过滤器。有关详细信息,请参阅
第 17.2.5.4 节,“基于复制通道的过滤器”。
RESET REPLICA
导致正在进行的事务的隐式提交。请参阅第 13.3.3 节,“导致隐式提交的语句”。
如果复制 SQL 线程在停止和RESET
REPLICA
发出时正在复制临时表,这些复制的临时表将在副本上删除。
RESET REPLICA
不会重置心跳周期或SSL_VERIFY_SERVER_CERT
。
在 NDB Cluster 副本 SQL 节点上使用时,RESET
REPLICA
清除
mysql.ndb_apply_status
表。ndb_apply_status
在使用这个使用
存储引擎的语句时,您应该牢记,
NDB
因此由连接到集群的所有 SQL 节点共享。
您可以通过在执行之前
发出来覆盖此行为
,这可以防止副本在这种情况下
清除
表。SET
GLOBAL
@@
ndb_clear_apply_status=OFF
RESET REPLICA
ndb_apply_status