目前我们的一个原型有一个非常糟糕的缓存系统。几分钟之内它就会填满硬盘并导致系统无法使用。然后我需要做的是重新启动mysql服务以释放空间。
我的问题:当磁盘使用率超过 95% 时,有没有办法重新启动 mysql 服务?
我知道这很不正统。是的,我知道这并不是一个真正的解决方案,但我们谈论的是一个必须运行用于演示和其他测试目的的原型,而不是稳定和正确的原型。
答案1
如果你使用systemd
启动mysql
那么你可以添加LimitFSIZE
到单元文件中。
没有systemd
你可以使用ulimit
:
bash -c 'ulimit -f 100; dd if=/dev/zero of=bigfile bs=10M count=1; echo foo'
不过,这两种方法都不涉及自由空间。你必须提前计算出他们可能消耗多少。
也许文件系统配额更灵活(我对那些不熟悉)。如果您有一个刚刚运行的用户帐户mysql
(无论如何可能是这种情况),那么这将是一个选项。
答案2
正如你所说,你要求一个非正统的解决方案,但既然你承认这一点,你可以检查可用空间df
df /partition/you/need/to/monitor
解析其输出,并根据您发现的内容重新启动 mysql 服务。为此,您可能需要 root 权限,因此您可能需要授予自己重新启动服务的权限无密码 sudo环境。
您可以使用 cron 自动执行所有这些操作。
答案3
如果您使用 monit,您也许可以执行此操作来监视文件系统并在磁盘空间太低时重新启动 mysql 服务。
查看https://mmonit.com/monit/documentation/monit.html#filesystem_flags_testing