首頁  >  文章  >  資料庫  >  磁碟空間滿了之後MySQL會怎樣

磁碟空間滿了之後MySQL會怎樣

黄舟
黄舟原創
2017-02-22 11:04:011473瀏覽


 導讀

  當磁碟空間爆滿後,MySQL會發生什麼事呢?又該怎麼應對?

 會發生什麼事

  當磁碟空間寫滿了之後,MySQL是無法再寫入任何資料的,包括對錶資料的寫入,以及binlog、binlog-index等文件。

  當然了,因為InnoDB是可以把髒資料先放在記憶體裡,所以不會立刻表現出來無法寫入,除非開啟了binlog,寫入請求才會被阻斷。

  當MySQL偵測到磁碟空間滿了,它會:

 該怎麼辦

  那麼,當發現磁碟空間滿了之後,我們該怎麼處理呢,建議:

  • 每分鐘:檢查空間是否已釋放,以便寫入新資料。當發現有剩餘空間了,就會繼續寫入數據,一切照舊。

  • 每十分鐘:如果還是發現沒剩餘空間,則會在日誌中寫入一筆記錄,報告磁碟空間滿(這時候只寫入幾個位元組還是夠的)。

  • 提高監控系統偵測頻率,預防再次發生;

  • #及時刪除不用的文件,釋放空間;

  • #若有執行緒因磁碟滿的問題被阻塞了,可先殺掉,等到下一分鐘重新偵測時它可能又可以正常運作了;

  • 可能因磁碟滿導致某些線程被阻塞,引發其他線程也被阻塞,可把導致阻塞的線程殺掉,其他被阻塞的線程也就能繼續工作了。

 例外

  有個例外的情況是:

  當執行REPAIR TABLE 或OPTIMIZE TABLE 操作時,或執行完LOAD DATA INFILE 或ALTER TABLE 之後批量更新索引時,這些操作會創建臨時文件,當執行這些操作過程中mysqld發現磁碟空間滿了,就會把這個涉及到的表標記為crashed,刪掉臨時文件(除了ALTER TABLE 操作,MySQL會放棄正在執行的操作,刪除臨時文件,釋放磁碟空間)。

  備註:當執行這些指令過程中mysqld程序被意外被殺掉的話,其所產生臨時檔案不會自動刪除,需要手動刪除才能釋放磁碟空間。

以上就是磁碟空間滿了之後MySQL會怎樣的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn