MySQL reset master与reset slave命令

【一】RESET MASTER命令

功能说明:

如果log_bin = on , 执行reset master命令将会 删除所有的binglog日志文件,并将日志索引文件清空,创建一个新的binlog文件,将server重置为尚未开始记录binlog的状态。

如果gtid_mode=on, 执行reset master命令会重置gtid的执行历史,gtid_purged系统变量会置为空,全局的gtid_excuted系统变量会置为空,mysql.gtid_executed表会被清理。

注意即使是不记录binlog但是开启了gtid的从库,执行reset master命令,也会reset gtid的执行历史,reset slave没有这个效果。

 

 注意reset master 不同于purge binary log的两处地方
1. reset master 将删除日志索引文件中记录的所有binlog文件,创建一个新的日志文件 起始值从000001 开始,然而purge binary log 命令并不会修改记录binlog的顺序的数值
2. reset master 不能用于有任何slave 正在运行的主从关系的主库,reset master 将master 的binlog从000001 开始记录,slave 记录的master log 则是reset master 时主库的最新的binlog,从库会报错无法找的指定的binlog文件。

注:当数据库要清理binlog文件的时候,可以通过操作系统进行删除,也可以运行reset master进行删除。但是如果当前是主数据库,且主从数据库正常的时候,千万不能用这种方式删除。

使用场景

reset master命令慎用,主要用于第一次进行搭建主从库时,进行主库binlog初始化工作;

 

MySQL 8.0  此命令还增加了一个可选的 to 子句。  RESET MASTER [TO binary_log_file_index_number]

reset master to  binary_log_file_index_number可以作为flush binary logs 与 purge binary log to 的可选语句命令,要保证 binary_log_file_index_number 为一个合理的值,如果值超出范围,不把它改到一个合理的值会导致服务无法正常启动。

参考官方文档:MySQL :: MySQL 8.0 Reference Manual :: 13.4.1.2 RESET MASTER Statement

【二】reset slave命令

功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件;

 reset slave 将使slave 忘记主从复制关系的位置信息。该语句将被用于干净的启动, 它删除master.info文件和relay-log.info 文件以及所有的relay log 文件并重新启用一个新的relaylog文件。 reset slave 并不会改变gtid_executed与gtid_purged系统变量,或者mysql.gtid_executed表。

使用reset slave之前必须使用stop slave 命令将复制进程停止。

参考官方文档:MySQL :: MySQL 8.0 Reference Manual :: 13.4.2.5 RESET REPLICA Statement

 

参考博客: RESET MASTER和RESET SLAVE使用场景和说明_fyygree的博客-CSDN博客

 

posted on 2023-01-13 15:24  JennyYu  阅读(2354)  评论(0编辑  收藏  举报