如何防止 MySQL 用二进制日志文件填满磁盘

如何防止 MySQL 用二进制日志文件填满磁盘

我的 /etc/my.cnf 中有以下设置

log-bin                 = /var/lib/mysql_bin_logs/mysql-bin.log
expire_logs_days        = 3
max_binlog_size         = 100M
relay-log               = /var/lib/mysql/slave-relay.log
relay-log-index         = /var/lib/mysql/slave-relay-log.index
log-slave-updates

我可以看到/var/lib/mysql_bin_logs/文件夹的大小保持不变。但是磁盘已满,我认为这与这些二进制日志文件的文件描述符未正确关闭有关。当我重新启动 MySQL 时,磁盘使用量下降了几 GB,这表明重新启动操作正在释放空间。

除了在 cronjob 上重新启动 MySQL 之外,我该如何防止磁盘被这样填满?

答案1

首先,我会lsof -u mysql在运行时尝试查看 MySQL 打开了哪些文件。您可能还会发现lsof -u mysql | grep deleted查看 MySQL 仍打开但已被删除的文件会更有帮助。如果发现是日志文件挂了,您可以尝试发出FLUSH LOGS内部 MySQL 作为解决方法,看看它是否会关闭它们。

相关内容