由于 tmpdir 磁盘已满,可以安全重新启动吗?

由于 tmpdir 磁盘已满,可以安全重新启动吗?

我的磁盘已满,tmpdir 中的一个 .MAD 文件占用了文件系统上的所有空间(189G 中的 179G)

来自日志:

[警告] mysqld:磁盘已满,写入“/var/tmp/#sql_b6f_0.MAD”(错误代码:28)。正在等待某人释放空间

我可以停止 mariadb 吗,还是我需要先释放一些空间然后再停止它?

答案1

我可以做一个service mysqld stop并删除 tmpdir 中的文件,从而解决了这个问题......

答案2

啊,我已经搜索修复方法整整 5 个小时了!不过,我还是个新手,所以是的...我们在生产环境中的 SUSE Linux 服务器上运行 MariaDB,因此停止整个 mysql 服务对我来说不是一个好选择。

我运行了一个select使用嵌套选择的查询order byinner join这是我的确切错误:

错误代码:1021 磁盘已满(/tmp/#sql_xxx_y.MAI);正在等待某人释放一些空间......(errno:28“设备上没有剩余空间”)

通过连接到服务器并运行

cd /tmp
ls -al

或者

ls-lh

我可以找出罪魁祸首:#sql_xxx_y。疯狂的(与 tmp 分区上的总可用空间一样大)和#sql_xxx_y.MAI大小为 8K(这一定是临时查询)。此外,*.MAD 文件会不断更新其日期 - 这又是查询仍在运行的另一个指标!

因此这个线程和另一个帮我弄清楚了:

mysql -u root -p
show processlist;
kill "thread_id (number in 1st col of the faulty query)";

show processlist;此后我运行了两次:第一次它显示我的查询为被杀,第二次我的查询从列表中消失了,并且。疯狂的.MAI文件消失了,我的磁盘空间又回到了原位。

注意:幸运的是,我的“错误”查询是临时选择,没有更改任何表,也没有设置为定期运行/从某个 Web 服务或生产中的客户端运行。所以请注意,如果您的情况不同,那么像我这样的人很容易浪费 5 小时的所有这些线程可能仍然有用 :D

相关内容