MySQL的mysql-bin.00xx binlog日志文件的清理

引言

公司一个项目生产环境mysql数据盘占用空间增长得特别快,经过排查发现是开启了mysql的binlog日志。如果把binlog日志关闭,如果操作万一出现问题,就没有办法恢复数据,很不安全,只能开启。经查相关资料,binlog日志可以手工消除,也可以配置自动清理。

手工清理

如果binlog文件非常多,推荐使用purge命令予清除历史文件,可以清除某个序号以前的文件,也可以清理某个时间点以前的数据。
在这里插入图片描述

  1. 清理某个序号以前的binlog日志文件
purge binary logs to 'mysql-bin.000430';

在这里插入图片描述
mysql-bin.000429文件已被删除
在这里插入图片描述

  1. 清理某具时间点以前的binlog日志文件
purge binary logs before '2023-08-29 12:00:00';

在这里插入图片描述
可以见把2023-08-29 12:00:00之前的binlog日志文件全部删除了
在这里插入图片描述

配置自动清理

  1. 配置
    修改配置文件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)重新启动

  1. 查看binlog过期时间
show variables like 'expire_logs_days';

在这里插入图片描述