由於 tmpdir 磁碟已滿,是否可以安全重啟?
我的磁碟已滿,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