mysql的binlog日志默认情况下会一直保留此文件,会随着时间的增长占用很大的磁盘资源,甚至到一定时候,磁盘可能会被撑满。有时候需要我们手动清理或者让数据库自动只保留最新的几天binlog日志文件或直接禁用binlog。
首先要说明一下,这些文件都是mysql的日志文件,如果不做主从复制的话,基本上是没用的,虽然没用,但是不建议使用rm命令删除,这样有可能会不安全,正确的方法是通过mysql的命令去删除
查看binlog日志,是否开启或占用多少空间
方式一、
1 | mysql> show binary logs; |
如果没有开启binlog日志,会提示:You are not using binary logging
方式二、
1 | show variables like 'log_bin'; |
手动删除binlog日志
解释:
PURGE MASTER LOGS手动删除用法及示例,MASTER和BINARY是同义词
PURGE {MASTER | BINARY} LOGS TO ‘log_name’
PURGE {MASTER | BINARY} LOGS BEFORE ‘date’
1、删除某个日志文件之前的所有日志文件(建议采用这种方式)
1 | mysql> purge binary logs to 'mysql-bin.000079'; |
删除mysql-bin.000007以前所有的binlog,这样删除可以保证*index信息与binlog文件同步。
2、删除多少天前的所有日志文件
1 | mysql> purge binary logs before date_sub(current_date,interval 5 day); |
手动删除5天前的binlog日志
3、删除指定时间点前的所有日志文件
1 | mysql> purge binary logs before '2019-06-22 13:00:00'; |
手动删除清除2019-06-22 13:00:00前的binlog日志前的binlog日志
4、删除所有binlog文件
1 | mysql> reset master; #重置所有的日志 |
自动清理binlog日志
1、查看默认的日志保存天数
1 | mysql> show variables like '%expire_logs_days%'; |
2、设置自动清理
1 | mysql> set global expire_logs_days = 5; #把binlog的过期时间设置为5天; |
为保证在MYSQL重启后仍然有效,在my.cnf中也加入此参数设置
1 | expire_logs_days = 5 |
关闭mysql的binlog日志
如果你的mysql服务器不需要做主从复制的话,建议通过修改my.cnf文件,来设置不生成这些文件
1、在my.cnf里面注释掉binlog日志
1 |
2、重启mysql
1 | service mysqld restart |