一.RESET MASTER
1.功能说明:
删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。
2.使用场景:
用于第一次进行搭建主从库时,进行主库binlog初始化工作;
3.注意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文件。
4.测试如下:
未删除前:
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000025
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.01 sec)
当前有25个binlong日志,且Position的位置为107
运行RESET MASTER:
mysql> reset master;
Query OK, 0 rows affected (0.03 sec)
删除后:
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
显示所有的binlog已经被删除掉,且binlog从000001 开始记录
5.需要注意的点:
注:当数据库要清理binlog文件的时候,可以通过操作系统进行删除,也可以运行reset master进行删除。但是如果当前是主数据库,且主从数据库正常的时候,千万不能用这种方式删除。
二.RESET SLAVE
1.功能说明:
用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件;
reset slave 将使slave 忘记主从复制关系的位置信息。该语句将被用于干净的启动, 它删除master.info文件和relay-log.info 文件以及所有的relay log 文件并重新启用一个新的relaylog文件。
2.使用场景:
当原来的主从关系被破坏之后,从库经过重新初始化后直接连接会报 ERROR 1201的错误,运行reset slave后,重新配置主从连接就可以了;
3.测试如下:
未删除前:
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 192.168.47.167
Master_User: server
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000019
Read_Master_Log_Pos: 12992
Relay_Log_File: mysql02-relay-bin.000004
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000019
运行RESET MASTER:
mysql> stop slave; 先停止slave
Query OK, 0 rows affected (0.01 sec)mysql> reset slave;
Query OK, 0 rows affected (0.04 sec)
删除后:
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.47.167
Master_User: server
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:
Read_Master_Log_Pos: 4
Relay_Log_File: mysql02-relay-bin.000001
Relay_Log_Pos: 4
4.需要注意的点:
使用reset slave之前必须使用stop slave 命令将复制进程停止。
三.总结:
如果是需要删除mysql binlog和relaylog文件的时候,那么通过操作系统的删除或者PURGE命令都可以,但是涉及到mysql主从配置的时候便需要使用RESET MASTER和RESET SLAVE解决问题;