1 RESET MASTER
在master上执行
mysql > RESET MASTER
该命令会删除所有index file 中记录的所有binlog 文件,将日志索引文件清空,创建一个新的日志文件,这个命令通常仅仅用于第一次用于搭建主从关系的时的主库。
注意reset master 和purge binary log的区别:
- reset master 将删除日志索引文件中记录的所有binlog文件,创建一个新的日志文件 起始值从000001 开始,然而purge binary log 命令并不会修改记录binlog的顺序的数值;
- reset master 不能用于有任何slave 正在运行的主从关系的主库。因为在slave 运行时刻 reset master 命令不被支持,reset master 将master 的binlog从000001 开始记录,slave 记录的master log 则是reset master 时主库的最新的binlog,从库会报错无法找的指定的binlog文件。
作用包括:
- 删除binlog索引文件中列出的所有binlog文件
- 清空binlog索引文件
- 创建一个新的binlog文件
- 清空系统变量gtid_purged和gtid_executed
- 在MySQL 5.7.5 及后续版本中, RESET MASTER还会会清空 mysql.gtid_executed 数据表。
2 RESET SLAVE
在slave上执行,执行之前必须先停止slave:
mysql> stop slave;
mysql> reset slave;
mysql> start slave;
reset slave 将使slave 忘记主从复制关系的位置信息。该语句将被用于干净的启动, 它删除master.info文件和relay-log.info 文件以及所有的relay log 文件并重新启用一个新的relaylog文件。
reset slave命令主要完成以下工作内容:
- 删除master.info和relay-log.info文件
- 删除所有的relay log(包括还没有应用完的日志)
- 创建一个新的relay log文件
- 将复制延迟选项 master_delay设置为0
reset slave不会修改gtid_executed、gtid_purged的值。
3 RESET SLAVE ALL
在mysql 5.6之后,reset slave不会修改任何复制配置参数,所有的连接信息仍然保留在内存中,比如master host, master port, master user, master password等。
也就是说在执行reset slave之后还可以直接运行start slave命令而不必重新输入change master to命令,而运行show slave status也仍和没有运行reset slave一样,有正常的输出。
可以使用reset slave all来清除连接参数,运行show slave status就输出为空了:
mysql> RESET SLAVE ALL
同时,也就需要使用 CHANGE MASTER TO 重新指定复制连接参数。