hoo*_*hal 7 mysql percona mysql-5.7
我的情况是 MySQL 日志分区在不到一天的时间内就被填满了。我无法禁用二进制日志,因为我需要它们进行复制。
我知道我可以设置日志保留时间,但它接受天数,搜索只显示我这个https://serverfault.com/questions/179165/can-expire-logs-days-be-less-than-1-day-in -mysql问题,建议通过脚本自己完成。
由于这个问题已经有将近 8 年的历史了,我想知道现在是否有可能。
如果重要,我正在使用 Percona MySQL 5.7
jyn*_*nus 13
事实上,你现在可以。从 MySQL 8.0.1 开始,虽然expire_log_days
仍然有效,但设置过期的规范方法是通过更改binlog_expire_logs_seconds
,正如您可能猜到的,它具有第二个分辨率。自 8.0.11 以来的默认值是 2592000(= 30 天),但可以像往常一样在配置文件中配置为以秒为单位的任何其他时间段。
如果您还不能使用 MySQL 8.0,解决此问题的方法是使用PURGE BINARY LOGS
语法, with BEFORE
( PURGE BINARY LOGS BEFORE now() - INTERVAL 1 HOUR;
' 并将 设置max-binlog_size
为适当的值(您不能删除当前正在写入的 binlog,但您始终可以使用 强制轮换FLUSH BINARY LOGS
)。您可以设置一个事件来定期或在外部,在 cron/编程任务上执行此操作。
或者,MySQL 的分支,如 Percona,过去(现在仍然)允许以字节为单位设置最大 binlog 大小 - 通过组合max_binlog_size
和max_binlog_files
- 除了天数限制。