Mariadb

由於 tmpdir 磁碟已滿,是否可以安全重啟?

  • May 28, 2020

我的磁碟已滿,tmpdir 中的一個 .MAD 文件佔用了文件系統上的所有空間(189G 中的 179G)

從日誌:

$$ Warning $$mysqld:磁碟已滿寫入“/var/tmp/#sql_b6f_0.MAD”(錯誤程式碼:28)。等待某人釋放空間 我可以停止mariadb,還是需要先釋放一些空間然後停止它?

我能夠做到service mysqld stop並刪除了 tmpdir 中的文件,從而解決了問題….

Aaargh 我一直在尋找修復 5 個小時!但是我是初學者,所以是的……我們在生產中的 SUSE Linux 伺服器上執行我們的 MariaDB,所以停止整個 mysql 服務對我來說不是一個好的選擇。

我使用and執行了一個select帶有嵌套選擇的查詢,這是我的確切錯誤:order by``inner join

錯誤程式碼:1021 磁碟已滿(/tmp/#sql_xxx_y .MAI);等待某人釋放一些空間…(錯誤號:28“設備上沒有剩餘空間”)

通過連接到伺服器並執行

cd /tmp
ls -al

或者

ls-lh

我可以找到罪魁禍首:#sql_ xxx_y .MAD(與我在 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;兩次:第一次它顯示我的查詢為kill,第二次我的查詢從列表中消失了,.MAD和**.MAI**文件消失了,我的磁碟空間又恢復了原位。

注意:幸運的是,我的“錯誤”查詢是一個臨時選擇,並沒有改變任何表,也沒有設置為定期執行/從某些 Web 服務或生產中的客戶端執行。因此請注意,如果您的情況不同,那麼像我這樣的人可以輕鬆浪費 5 小時的所有執行緒可能仍然有用:D

引用自:https://serverfault.com/questions/604273