我发现
df -h
和之间的可用磁盘空间有很大差异du -sxh /
我已经理解了我的问题解决 UNIX 服务器磁盘空间不足的问题这du -sxh /
是对我何时会用完磁盘空间的更好的估计。话虽如此,假设在我的情况下上述句子被证明是错误的,并且我很快就会用完磁盘空间,会发生什么?我假设 MySQL 将无法执行 INSERT 查询,但除此之外,我是否只需要删除一些文件,或者这将是一个有问题的情况?
答案1
多年来,默认存储引擎一直是 MyISAM。从 MySQL 5.5 开始,现在是 InnoDB。
回答你的问题,MySQL 在这方面有点奇怪,因为所有临时表都使用 MyISAM 存储引擎。
要点 #11第 408、409 页第 29.2 节中的内容如下:
如果在向 MyISAM 表添加行时磁盘空间不足,则不会发生错误。服务器将暂停操作,直到有可用空间,然后完成操作。
鉴于这一事实,SQL 操作(尤其是使用临时表的 SQL 操作)不会失败。它们只是冻结并等待磁盘空间可用。只有断开 DB 连接时,此类操作才会失败。
在这种情况下,解决方案是释放磁盘空间。然后,MySQL 中所有冻结的移动部件都会解冻并再次开始移动。
清除旧的二进制日志、删除旧表或截断错误日志或许会对此有所帮助。
答案2
我遇到过此类问题,它可能会导致随机内部服务器错误 500。然后我们需要释放一些空间来保持交换内存正常工作。