![如何防止 MySQL 用二进制日志文件填满磁盘](https://linux22.com/image/494599/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20MySQL%20%E7%94%A8%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E5%A1%AB%E6%BB%A1%E7%A3%81%E7%9B%98.png)
我的 /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 作为解决方法,看看它是否会关闭它们。