mysql之清理binlog

mysql之清理binlog


mysql主从开启时,会产生大量如mysql-bin.000*** log的文件,当磁盘空间较小时,会大量耗费硬盘空间,所以对mysql进行合适的配置,能够定期清理binlog文件。

自动清理

开启主从时,可以配置参数expire_logs_days,设置日志保留多长时间,比如:
1、在my.cnf文件中增加配置项(重启mysql后生效)

expire_logs_days = 15

该参数表示二进制日志自动删除的天数。默认值为0,表示不自动删除。

2、mysql里设置expire_logs_days

mysql> set global expire_logs_days = 15;
mysql> show variables like 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 15    |
+------------------+-------+
1 row in set (0.01 sec)

手工清理

手工清理,需要确认当前slave数据库没有读取正在删除的日志,否则会删除失败,并报错。可以通过在slave数据库上执行命令确认正在读取的日志:

mysql> show slave status \G; 

如果slave服务器不是复制状态,日志删除后,slave启动后想要读取该日志,则不能复制。

手工清理步骤:

1、查看当前日志

mysql> show binary logs;
+------------------+------------+
| Log_name         | File_size  |
+------------------+------------+
| mysql-bin.000250 | 1079996807 |
| mysql-bin.000251 | 1073743418 |
| mysql-bin.000252 | 1073742306 |
| mysql-bin.000253 | 1073745466 |
| mysql-bin.000254 | 1073742709 |
| mysql-bin.000255 | 1073745324 |
| mysql-bin.000256 | 1073745689 |
| mysql-bin.000257 | 1073742061 |
| mysql-bin.000258 | 1073744683 |
| mysql-bin.000259 | 1073742241 |
| mysql-bin.000260 | 1073742576 |
| mysql-bin.000261 | 1073742085 |
| mysql-bin.000262 |  891734696 |
+------------------+------------+
13 rows in set (0.00 sec)

2、执行清除命令
清除mysql-bin.000250日志

mysql> PURGE MASTER LOGS TO 'mysql-bin.000250'; 

清除2019-12-23 13:00:00前binlog日志,BEFORE变量的date自变量可以为’YYYY-MM-DD hh:mm:ss’格式。

mysql> PURGE MASTER LOGS BEFORE '2019-12-23 13:00:00'; 

清除15天前binlog日志,用DATE_SUB() 函数,从现在日期减去指定的时间间隔。

mysql> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 15 DAY); 

附录:
MySQL Date 函数

函数描述
NOW()返回当前的日期和时间
CURDATE()返回当前的日期
CURTIME()返回当前的时间
DATE()提取日期或日期/时间表达式的日期部分
EXTRACT()返回日期/时间按的单独部分
DATE_ADD()给日期添加指定的时间间隔
DATE_SUB()从日期减去指定的时间间隔
DATEDIFF()返回两个日期之间的天数
DATE_FORMAT()用不同的格式显示日期/时间
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值