GreatSQL社区

搜索

[已解决] mysql 8.0.32从库binlog expire_logs_days 失效

293 5 2024-12-11 16:12
自从去年生产数据库从5.7升级到mysql 8.0.32后,偶尔发现从库有时候binlog不会按照expire_logs_days设定的时间自动清理。
配置为7天过期


实际很多超过7天的日志都未被清理





全部回复(5)
zj5220924 2024-12-11 16:36:39
本帖最后由 zj5220924 于 2024-12-12 15:00 编辑

一般binlog的自动清理会发生在数据库启动,或者刷新binlog的时候,而一般日志达到了max_binlog_size设置的阈值时会触发刷新的动作,但是如果数据库每天产生的binlog未达到这个阈值,该数据库上面每天都有xtrabackup的备份,而且数据库版本大于等于MySQL 8.0.28,那么大概率会触发跟我同样的问题。
因为在xtrabakcup的时候会执行FLUSH NO_WRITE_TO_BINLOG BINARY LOGS,这个命令会触发purge binary logs,而从MySQL 8.0.28开始,在xtrabackup时会施加LOCK INSTANCE FOR BACKUP的锁,这个锁会导致PERGE BINARY LOGS不被允许,因此,binlog确实被切了,但是没有做过期清理,除非某一天日志量超过阈值,否则将循环往复直到磁盘空间告警。
王权富贵 2024-12-11 17:09:25
zj5220924 发表于 2024-12-11 16:36
一般binlog的自动清理会发生在数据库启动,或者刷新binlog的时候,而一般日志达到了innodb_log_file_size设 ...

innodb_log_file_size  这个参数是控制redo的吧
王权富贵 2024-12-11 17:51:55
zj5220924 发表于 2024-12-11 16:36
一般binlog的自动清理会发生在数据库启动,或者刷新binlog的时候,而一般日志达到了innodb_log_file_size设 ...

【FLUSH NO_WRITE_TO_BINLOG BINARY LOGS,这个命令会触发purge binary logs】  

这个有测试吗
KAiTO 2024-12-12 09:22:29
王权富贵 发表于 2024-12-11 17:51
【FLUSH NO_WRITE_TO_BINLOG BINARY LOGS,这个命令会触发purge binary logs】  

这个有测试吗 ...

https://www.cnblogs.com/kerrycode/p/18130054

可参考
zj5220924 2024-12-12 14:59:48
王权富贵 发表于 2024-12-11 17:09
innodb_log_file_size  这个参数是控制redo的吧

感谢指正,应该是这个参数max_binlog_size
zj5220924

2

主题

0

博客

9

贡献

新手上路

Rank: 1

积分
16

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-1-18 16:03 , Processed in 0.025290 second(s), 19 queries , Redis On.
快速回复 返回顶部 返回列表