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

目录

  • 引言
  • 手工清理
  • 配置自动清理

引言

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

手工清理

如果binlog文件非常多,推荐使用purge命令予清除历史文件,可以清除某个序号以前的文件,也可以清理某个时间点以前的数据。
MySQL的mysql-bin.00xx binlog日志文件的清理_第1张图片

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

在这里插入图片描述
mysql-bin.000429文件已被删除
MySQL的mysql-bin.00xx binlog日志文件的清理_第2张图片

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

在这里插入图片描述
可以见把2023-08-29 12:00:00之前的binlog日志文件全部删除了
MySQL的mysql-bin.00xx binlog日志文件的清理_第3张图片

配置自动清理

  1. 配置
    修改配置文件my.cnf文件:
vim /etc/my.cnf
#在[mysqld]标签内增加如下内容
log-bin=mysql-bin
binlog_format=mixed
max_binlog_size=1024M
expire_logs_days=10

MySQL的mysql-bin.00xx binlog日志文件的清理_第4张图片

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';

MySQL的mysql-bin.00xx binlog日志文件的清理_第5张图片

你可能感兴趣的:(运维,数据库,mysql,数据库,运维,服务器)