为什么 mysql bin 日志没有过期,即使设置了过期时间

为什么 mysql bin 日志没有过期,即使设置了过期时间

我正在使用 5.7.37-log MySQL 社区服务器。我的 mysqld.cnf 如下所示:

server_id = 11
log_bin = bin.log
log-bin-index = bin-log.index
binlog_format = row
max_binlog_size = 100M
socket = mysql.sock
expire_logs_days = 1

当我检查我的日志时,它们不断增长,尽管我提到它们将在 1 天内过期。使用 expire_logs_days。

使用上述配置,我可以自动删除日志吗?还是我应该再次手动删除?我看到一些表格说, PURGE BINARY LOGS BEFORE NOW() - INTERVAL 1 DAY; 但是我不明白当我们已经设置了配置时手动运行上述语句的意义。

请帮我理解 bin 日志的过期机制。由于我使用了 1 天后过期机制,bin.00001 和 bin.0002 等的大小是否会每天减少?或者我如何识别日志是否真的过期了?

附上我生成的 bin 日志的截图。

在此处输入图片描述

答案1

没有运行并在一天后删除日志的计时器。日志删除由日志刷新事件触发。因此,这就是生成新 binlog 的时间。如果我们的数据库花费的时间太长,并且日志没有每天刷新,您可以将 max-binlog-size 设置为较低的值。另一个不错的选择是始终将刷新日志作为备份策略的一部分。

相关内容