RESET MASTER [TO binary_log_file_index_number]
请谨慎使用此语句,以确保您不会丢失任何想要的二进制日志文件数据和 GTID 执行历史记录。
RESET MASTER
需要
RELOAD
特权。
对于启用了二进制日志记录的服务器(log_bin
is
ON
),RESET MASTER
删除所有现有的二进制日志文件并重置二进制日志索引文件,将服务器重置为二进制日志记录启动之前的状态。创建一个新的空二进制日志文件,以便可以重新启动二进制日志记录。
对于正在使用 GTID 的服务器 ( gtid_mode
is
ON
),发出RESET MASTER
重置 GTID 执行历史记录。系统变量的值
gtid_purged
设置为空字符串(''
),系统变量的全局值(但不是会话值)
gtid_executed
设置为空字符串,
mysql.gtid_executed
表被清除(见
mysql.gtid_executed 表)。如果启用 GTID 的服务器启用
RESET MASTER
了二进制日志记录,则还如上所述重置二进制日志。请注意,这
RESET MASTER
是重置 GTID 执行历史的方法,即使启用 GTID 的服务器是禁用二进制日志记录的副本;
RESET
REPLICA
对 GTID 执行历史没有影响。有关重置 GTID 执行历史记录的更多信息,请参阅重置 GTID 执行历史记录。
RESET MASTER
在没有可选子句的情况下
发出TO
删除索引文件中列出的所有二进制日志文件,将二进制日志索引文件重置为空,并创建一个从
1
. 使用可选子句从重置后
TO
以外的数字开始二进制日志文件索引。1
使用RESET MASTER
with
TO
子句指定一个二进制日志文件索引号作为开始,通过提供单个语句替代FLUSH BINARY
LOGS
and
PURGE BINARY
LOGS TO
语句来简化故障转移。检查您使用的索引号值是否合理。如果您输入的值不正确,您可以通过发出
RESET MASTER
带有或不带有该TO
子句的另一条语句来更正此错误。如果不更正超出范围的值,则无法重新启动服务器。
以下示例演示了TO
子句的用法:
RESET MASTER TO 1234;
SHOW BINARY LOGS;
+-------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+-------------------+-----------+-----------+
| source-bin.001234 | 154 | No |
+-------------------+-----------+-----------+
RESET MASTER
withoutTO
子句
的效果与PURGE BINARY LOGS
2 个关键方面的不同:
RESET MASTER
删除 索引文件中列出的所有二进制日志文件,只留下一个数字后缀为 的空二进制日志文件.000001
,而编号不会由 重置PURGE BINARY LOGS
。RESET MASTER
不 打算在任何副本运行时使用。when used while replicas are running的行为RESET MASTER
未定义(因此不受支持),而PURGE BINARY LOGS
may be safely used while replicas are running。
RESET MASTER
TO
当您第一次设置源和副本时,
without
子句会很有用,因此您可以按如下方式验证设置:
启动源和副本,并开始复制(请参阅 第 17.1.2 节,“设置基于二进制日志文件位置的复制”)。
在源上执行一些测试查询。
检查查询是否已复制到副本。
当复制正常运行时,问题
STOP REPLICA
跟RESET REPLICA
在副本上,然后验证副本上不存在来自测试查询的不需要的数据。在源上发布
RESET MASTER
以清理测试查询。
在验证设置、重置源和副本并确保没有不需要的数据或测试生成的二进制日志文件保留在源或副本上之后,您可以启动副本并开始复制。