处理方法:
1、清理指定时间前的日志:purge binary logs before ‘2023-12-21 15:50:00’;
2、设置自动清理时间:
为了防止 binlog 文件过大导致无可用的磁盘空间,MySQL 提供了一个系统变量用来配置过期时间,MySQL5.7 时变量名为 expire_logs_days ,精确度为天;MySQL8.0 使用 binlog_expire_logs_seconds 来控制,其效果和名字的变化一样,精确度由天变成了秒。超过这个时间的 binlog 会被自动清理,自动清理的触发时机为(注意:并不是以每秒这样的固定频率检查是否有过期日志):1- MySQL 启动时;2- binlog 刷新时。
修改配置,重启生效
在配置文件 my.cnf 中修改参数如下:
[mysqld]
binlog_expire_logs_seconds=2592000 #日志过期时间为30天,若=0,则为永不过期哦
max_binlog_size=500M #日志最多存放500M,超过500M后会被清除
mysql服务重启后配置生效
查询上述参数后发现在MySQL 8 版本中默认开启binlog日志并设置为binlog_format=row,
binlog失效日期参数为 binlog_expire_logs_seconds,默认30天过期。