目录
3 RESET MASTER 与 PURGE BINARY LOGS
5 RESET SLAVE 与 RESET SLAVE ALL区别
一 RESET MASTER
1 所需权限
RESET MASTER需要RELOAD权限
2 RESET MASTER 会做什么操作
对于启用了二进制日志记录的服务器(log_bin is on),RESET MASTER
删除所有现有的二进制日志文件并重置二进制日志索引文件,将服务器重置为启动二进制日志记录之前的状态。将创建一个新的空二进制日志文件,以便可以重新启动二进制日志记录。
对于正在使用 GTID 的服务器(gtid_mode is on ),发出命令RESET MASTER
会重置 GTID 执行历史记录。
- 系统变量的值 gtid_purged 被设置为空字符串(
''
) - 系统变量gtid_executed的全局值(但不是会话值)被设置为空字符串
- 并且
mysql.gtid_executed
表被清除
3 RESET MASTER 与 PURGE BINARY LOGS
区别一
RESET MASTER 删除索引文件中列出的所有二进制日志文件,只留下一个带有数字后缀.000001
的空二进制日志文件,而二进制日志的编号不会由 PURGE BINARY LOGS 重置;
区别二
不打算在任何副本运行时使用RESET MASTER,副本运行时使用RESET MASTER的行为 未定义(因此不受支持),而PURGE BINARY LOGS 副本运行时可以安全使用。
4 注意
使用命令会丢失binlog文件 和 GTID的执行历史记录,要谨慎使用
5 举例
执行RESET MASTER 前
执行RESET MASTER 后
二 RESET SLAVE [ALL]
1 RESET SLAVE会做什么操作
- RESET SLAVE命令会清空 从副本复制的位点
- 清空从库复制的元数据仓库
- 删除所有的中级日志文件 ,并重新生成一个全新的中级日志
- 会把从副本中设置的从库延迟(MASTER_DELAY) 重置为0
2 目的
会使副本忘记其在Master的二进制日志中的复制位置,该语句旨在用于干净启动从副本
3 注意点
所有的中级日志文件都会被删除,即使这些中级日志还没有被从副本的SQL 线程执行完(这种场景存在于你在从库上执行了stop slave 或者 从库目前正在高负载)
对于正在使用GTID模式的从副本(gtid_mode = ON ),发出 对GTID的执行历史没有影响。该语句不会更改gtid_executed
或 gtid_purged
或 表mysql.gtid_executed
的值 。如果您需要重置 GTID 执行历史记录,需要使用 RESET MASTER 命令,
4 所需权限与前提
执行RESET SLAVE需要RELOAD权限
执行RESET SLAVE命令 ,复制线程必须停止。在执行RESET SLAVE命令前需要执行STOP SLAVE命令;
在组复制的成员上执行RESET SLAVE命令,该成员的状态必须是OFFLINE;意味着 组件被加载了但是目前该成员不属于该组。组成员可以执行STOP GROUP REPLICATION 命令进行下线。
5 RESET SLAVE 与 RESET SLAVE ALL区别
RESET SLAVE不会更改任何复制连接参数,例如master的主机名和端口,或者复制用户帐户名及其密码。
如果想要删除连接信息 ,需要执行RESET SLAVE ALL,它会清除连接参数。如果你想重新建立主从,需要在change master to 中指定新的连接信息。
6 举例
必须先执行 停止主从复制的命令 stop slave;
reset slave 之前
中继日志还存在
reset slave 之后
变化1
变化2 中继日志被清空 并 重新生成一个全新
reset slave all 之后
所有信息都被清空了