mysql relay log_mysql binlog和relay log日志如何清除

MySQL通过binlog和relay log进行主从数据的同步,binlog由主库产生,从库通过复制io线程拉取binlog,写入到relay log中,sql线程读取relay log中的事务信息,并进行应用。

正常情况下,binlog和relay log并不需要人为干预删除,但是在某些场景下,比如数据写入量大,磁盘空间小,binlog保留的时间设置的过长,这时候就需要人工清理binlog。

binlog日志清除

MySQL提供了两个参数来自动清除binlog日志,expire_logs_days表示日志保留的天数,默认值为0,即不会自动清除,通常设置为7天自动清除。除了expire_logs_days参数外,Percona MySQL 版本还添加了一个max_binlog_files参数,表示binlog保留的最大个数,比如设置为20,即最多保留20个binlog文件,每个binlog文件的大小由参数 max_binlog_size设置,通常设置为1G。

expire_logs_daysmax_binlog_files除了上述两个参数外,通过执行purge命令也能手动删除binlog文件,比如删除到某个binlog文件为止,或者删除到最新的binlog。

purge binary logs to 'mysql-bin.000002';purge binary logs before now();另外reset master 也会清除binlog,这个命令比较危险,除了会清除binlog外,也会清除已执行的gtid相关信息,这个操作会立即导致从库复制中断,除非你真的了解这个命令的作用,否则慎用,也不推荐使用这个命令删除binlog文件。

最后,在极端情况下,如果binlog已经把磁盘写满,这时候连接到MySQL执行清除binlog的命令会被卡住,那么只能手动删除binlog物理文件了,尝试删除最旧的几个binlog文件,然后再连接到MySQL,执行清除binlog的命令。

relay log日志清除

relay log通常不需要人工清理,因为从库的复制线程在应用完relay log中的事务后,会自动把relay log删除。每次复制的IO线程重启,都会生成一个新的relay log,每个relay log文件的大小由参数max_relay_log_size控制,该参数默认为0,即表示其大小和binlog文件大小一致,通常也为1G。

从库上有些命令,也会导致relay log文件被清除,比如:reset slave 和 reset slave all。这两个命令会将relay log文件全部删除,并且生成新的索引从1开始的relay log文件。

00dfa6909abeeec71e972fbcab7baeef.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值