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

來源:互聯網
上載者:User

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

導讀

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

會發生什麼事

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

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

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

  • 每分鐘:檢查空間是否得到釋放,以便寫入新資料。當發現有剩餘空間了,就會繼續寫入資料,一切照舊。
  • 每十分鐘:如果還是發現沒剩餘空間,則會在日誌中寫入一條記錄,報告磁碟空間滿(這時候唯寫入幾個位元組還是夠的)。

應該怎麼辦

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

  • 提高監控系統檢測頻率,預防再次發生;
  • 及時刪除不用的檔案,釋放空間;
  • 若有線程因磁碟滿的問題被阻塞了,可先殺掉,等到下一分鐘重新檢測時它可能又可以正常工作了;
  • 可能因磁碟滿導致某些線程被阻塞,引發其他線程也被阻塞,可把導致阻塞的線程殺掉,其他被阻塞的線程也就能繼續工作了。

例外

有個例外的情況是:

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

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

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.