13.4.1.2 RESET MASTER 语句

RESET MASTER [TO binary_log_file_index_number]
警告

请谨慎使用此语句,以确保您不会丢失任何想要的二进制日志文件数据和 GTID 执行历史记录。

RESET MASTER需要 RELOAD特权。

对于启用了二进制日志记录的服务器(log_binis ON),RESET MASTER删除所有现有的二进制日志文件并重置二进制日志索引文件,将服务器重置为二进制日志记录启动之前的状态。创建一个新的空二进制日志文件,以便可以重新启动二进制日志记录。

对于正在使用 GTID 的服务器 ( gtid_modeis 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 MASTERwith TO子句指定一个二进制日志文件索引号作为开始,通过提供单个语句替代FLUSH BINARY LOGSand 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 LOGS2 个关键方面的不同:

  1. RESET MASTER删除 索引文件中列出的所有二进制日志文件,只留下一个数字后缀为 的空二进制日志文件.000001,而编号不会由 重置 PURGE BINARY LOGS

  2. RESET MASTER不 打算在任何副本运行时使用when used while replicas are running的行为 RESET MASTER未定义(因此不受支持),而PURGE BINARY LOGSmay be safely used while replicas are running。

另见第 13.4.1.1 节,“PURGE BINARY LOGS 语句”

RESET MASTERTO当您第一次设置源和副本时, without 子句会很有用,因此您可以按如下方式验证设置:

  1. 启动源和副本,并开始复制(请参阅 第 17.1.2 节,“设置基于二进制日志文件位置的复制”)。

  2. 在源上执行一些测试查询。

  3. 检查查询是否已复制到副本。

  4. 当复制正常运行时,问题 STOP REPLICARESET REPLICA在副本上,然后验证副本上不存在来自测试查询的不需要的数据。

  5. 在源上发布RESET MASTER以清理测试查询。

在验证设置、重置源和副本并确保没有不需要的数据或测试生成的二进制日志文件保留在源或副本上之后,您可以启动副本并开始复制。