暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

bug - mysql 8.0 binlog自动清理失效问题(binlog_expire_logs_seconds)

原创 金同学 2025-01-08
357

在mysql8.0发现一个bug,设置binlog_expire_logs_seconds后不生效,binlog无法自动清理。

在mysql 8.0中,下面参数控制过期binlog自动清理。

#开启自动清理 binlog_expire_logs_auto_purge = ON #默认开启 binlog_expire_logs_seconds = 432000 #单位秒 #禁用自动清理 binlog_expire_logs_auto_purge = OFF # 优先级高于 binlog_expire_logs_seconds

bug描述

在生产环境中(mysql 8.0.35),遇到binlog_expire_logs_auto_purge参数不生效问题。以下是生产库中binlog_expire_logs_seconds设置的值,、换算后为5天。

root@localhost: 15:24: [(none)]> show variables like 'binlog_expire_%'; +-------------------------------+--------+ | Variable_name | Value | +-------------------------------+--------+ | binlog_expire_logs_auto_purge | ON | | binlog_expire_logs_seconds | 432000 | +-------------------------------+--------+ 2 rows in set (0.01 sec) root@localhost: 15:54: [(none)]> select 432000/60/60/24; +-----------------+ | 432000/60/60/24 | +-----------------+ | 5.000000000000 | +-----------------+ 1 row in set (0.00 sec)

但是生产库中binlog超过5天的日志并未清理,如下截图。
image.png
查看binlog截断时间,每天晚上的binlog切换时间几乎一致。这个时间恰好与备份完成时间一致,所以日志切换是备份触发的。
image.png
下面是2025.1.8的备份完成时间,与上面binlog切换时间吻合。
image.png
对比别人提交的bug,问题描述基本一致。可见,当max_binlog_size设置较大,而每天生产的binlog日志量较小时,就无法进行自然切换。然而备份切换的时候由于加锁了,不让删除binlog,所以导致binlog日志一直没有清理。
image.png

解决方法

改问题可能会引发磁盘空间耗尽的风险,建议合理调小max_binlog_size的值,规避掉这个bug。

# 设置max_binlog_size为200M, root@localhost: 16:10: [(none)]> set global max_binlog_size= 200*1024*1024; Query OK, 0 rows affected (0.00 sec) # 持久化的配置文件 [mysqld] max_binlog_size = 200M
#binlog过期清理参数立刻生效,过期日志已清理 [mysql@dmp-db-prod-a1 binlog]$ ll total 3010020 -rw-r----- 1 mysql mysql 545399638 Jan 4 00:08 mysql-bin.000385 -rw-r----- 1 mysql mysql 542010267 Jan 5 00:09 mysql-bin.000386 -rw-r----- 1 mysql mysql 536332259 Jan 6 00:08 mysql-bin.000387 -rw-r----- 1 mysql mysql 544761690 Jan 7 00:09 mysql-bin.000388 -rw-r----- 1 mysql mysql 547686672 Jan 8 00:09 mysql-bin.000389 -rw-r----- 1 mysql mysql 365910530 Jan 8 16:11 mysql-bin.000390 -rw-r----- 1 mysql mysql 75275 Jan 8 16:11 mysql-bin.000391 -rw-r----- 1 mysql mysql 252 Jan 8 16:11 mysql-bin.index
最后修改时间:2025-01-08 16:53:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论