MySQL的mysql-bin.00xx binlog日志文件的清理
引言
公司一个项目生产环境mysql数据盘占用空间增长得特别快,经过排查发现是开启了mysql的binlog日志。如果把binlog日志关闭,如果操作万一出现问题,就没有办法恢复数据,很不安全,只能开启。经查相关资料,binlog日志可以手工消除,也可以配置自动清理。
手工清理
如果binlog文件非常多,推荐使用purge命令予清除历史文件,可以清除某个序号以前的文件,也可以清理某个时间点以前的数据。
- 清理某个序号以前的binlog日志文件
purge binary logs to 'mysql-bin.000430';
mysql-bin.000429文件已被删除
- 清理某具时间点以前的binlog日志文件
purge binary logs before '2023-08-29 12:00:00';
可以见把2023-08-29 12:00:00之前的binlog日志文件全部删除了
配置自动清理
- 配置
修改配置文件my.cnf文件:
vim /etc/my.cnf
#在[mysqld]标签内增加如下内容
log-bin=mysql-bin
binlog_format=mixed
max_binlog_size=1024M
expire_logs_days=10
expire_logs_days=0:
这里的值如果为0,表示所有binlog日志永久都不会失效,不会自动删除;
这里的值如果为30,表示只保留最近30天。
温馨提示:
修改保存后,以下3种情况才会生效
1)当binlog大小超过max_binlog_size
2)手动执行flush logs
3)重新启动
- 查看binlog过期时间
show variables like 'expire_logs_days';