reset slave
- 清理掉master.info
- 清理relay-log.info
- 删除所有的relay log文件,重启用一个新的relay log文件
- 不清理内存里的同步复制配置信息。清除slave 复制时的master binlog的位置,重置复制延迟(CHANGE MASTER TO 的 MASTER_DELAY参数指定的)为0,不会改变复制连接使用的参数,例如master host, master port, master user, or master password
- 不重置 gtid_executed or gtid_purged 参数值
依然显示slave状态
mysql> reset slave;
Query OK, 0 rows affected (0.03 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: orch03
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay.000001
Relay_Log_Pos: 4
Relay_Master_Log_File:
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 0
Relay_Log_Space: 177
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 17250413
Master_UUID:
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
reset slave all
- 清理掉master.info
- 清理relay-log.info
- 删除所有的relay log文件,重启用一个新的relay log文件
- 立即清理内存里的同步复制配置信息。这一点很有用:提升从库为主库,特别是在集群迁移中,新集群的新主库同步了旧集群的旧主库后,需要断开,则执行
- 不重置 gtid_executed or gtid_purged 参数值
不再显示slave状态
mysql> reset slave all;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G
Empty set (0.00 sec)
重置前relay-log状态
[root@mysql01 data]# more relay-log.info
7
/data/mysql/log/relay/mysql-relay.000005
313
mysql-bin.000001
830
0
0
1
[root@mysql01 data]# ll /data/mysql/log/relay/
total 12
-rw-r----- 1 mysql mysql 362 Feb 27 03:08 mysql-relay.000004
-rw-r----- 1 mysql mysql 313 Feb 27 03:08 mysql-relay.000005
-rw-r----- 1 mysql mysql 82 Feb 27 03:08 mysql-relay.index
重置slave状态
stop slave;
reset slave all;
show slave status\G;
重置后relay-log状态
[root@mysql01 data]# more relay-log.info
relay-log.info: No such file or directory
[root@mysql01 data]# ll /data/mysql/log/relay/
total 8
-rw-r----- 1 mysql mysql 177 Feb 27 03:38 mysql-relay.000001
-rw-r----- 1 mysql mysql 41 Feb 27 03:38 mysql-relay.index
此时真正实现了清除slave同步复制关系! mysql主从复制中,需要将从库提升为主库,需要取消其从库角色,这可通过执行RESET SLAVE ALL清除从库的同步复制信息、包括连接信息和二进制文件名、位置。从库上执行这个命令后,使用show slave status将不会有输出。
在mysql 5.6.3之后,可以使用reset slave all来清除连接参数,运行show slave status就输出为空了。
mysql 5.6.7之后,reset slave会隐式提交事务。
运行reset slave命令需要reload权限。MHA在做故障切换时,就会在新主上运行命令RESET SLAVE /*!50516 ALL */ ,清除掉它的所有从库信息。
reset master
1)删除binlog索引文件中列出的所有binlog文件
2)清空binlog索引文件
3)创建一个新的binlog文件
4)清空系统变量gtid_purged和gtid_executed, 在MySQL 5.7.5 及后续版本中, RESET MASTER还会清空 mysql.gtid_executed数据表。
重置前gtid_executed及binlog状态
mysql> select * from mysql.gtid_executed;
+--------------------------------------+----------------+--------------+
| source_uuid | interval_start | interval_end |
+--------------------------------------+----------------+--------------+
| 8524392d-a3e7-11ed-a049-080027176425 | 1 | 2 |
| 85459f0b-a3e7-11ed-a049-080027176425 | 1 | 1 |
| e4975156-a3d4-11ed-8351-080027176425 | 1 | 2 |
+--------------------------------------+----------------+--------------+
3 rows in set (0.00 sec)
[root@mysql01 data]# ll /data/mysql/log/binlog/
'total 24
-rw-r----- 1 mysql mysql 201 Feb 27 03:45 mysql-bin.000001
-rw-r----- 1 mysql mysql 201 Feb 27 03:45 mysql-bin.000002
-rw-r----- 1 mysql mysql 201 Feb 27 03:45 mysql-bin.000003
-rw-r----- 1 mysql mysql 201 Feb 27 03:45 mysql-bin.000004
-rw-r----- 1 mysql mysql 154 Feb 27 03:45 mysql-bin.000005
-rw-r----- 1 mysql mysql 200 Feb 27 03:45 mysql-bin.index
重置master状态
mysql> reset master;
Query OK, 0 rows affected (0.06 sec)
重置后gtid_executed及binlog状态
mysql> select * from mysql.gtid_executed;
Empty set (0.00 sec)
[root@mysql01 data]# ll /data/mysql/log/binlog/
total 8
-rw-r----- 1 mysql mysql 154 Feb 27 03:47 mysql-bin.000001
-rw-r----- 1 mysql mysql 40 Feb 27 03:47 mysql-bin.index
用途:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。用于第一次进行搭建主从库时,进行主库binlog初始化工作;
注意:但是如果当前是主数据库,且主从数据库正常的时候,千万不能用这种方式删除。
应用场景
场景一:给原集群添加一个新实例作为从库。(从xtrabackup备份来搭建)
当启动新的实例后按如下顺序执行:
stop slave;
reset slave all;
reset master;
change master (根据实际情况而定)
start slave;
show slave status\G;
场景二:
集群迁移。(新集群的新主库连接到旧集群的旧主库上)
当新集群数据与旧集群数据完全同步后,在新集群的新主库上按如下顺序执行:
stop slave;
reset slave all;
show slave status\G;