當磁碟空間爆滿後,mysql會發生什麼事呢?又應該怎麼應對?
會發生什麼事
當磁碟空間寫滿了之後,mysql是無法再寫入任何資料的,包括對錶資料的寫入,以及binlog、binlog-index等檔案。
當然了,因為innodb是可以把髒資料先放在記憶體裡,所以不會立刻表現出來無法寫入,除非開啟了binlog,寫入請求才會被阻塞。
當mysql檢測到磁碟空間滿了,它會:
應該怎麼辦
那麼,當發現磁碟空間滿了之後,我們應該怎麼處理呢,建議: 例外
有個例外的情況是:
當執行 repair table 或者 optimize table 操作時,或者執行完 load data infile 或 alter table 之後批量更新索引時,這些操作會建立臨時檔案,當執行這些操作過程中mysqld發現磁碟空間滿了,就會把這個涉及到的表標記為crashed,刪掉臨時檔案(除了 alter table 操作,mysql會放棄正在執行的操作,刪除臨時檔案,釋放磁碟空間)。
備註:當執行這些命令過程中mysqld程序被意外被殺掉的話,其所生成臨時檔案不會自動刪除,需要手工刪掉才能釋放磁碟空間。
:
linux磁碟空間滿了
df h 看到根目錄已經用滿了!find size 100m xargs ls lh列出系統內大於100m的檔案 du max depth 1 h 檢視當前目錄內資料夾的大小 看一下才想起是內網開發用的資料庫,裡面最大的是備份目錄 果不其然備份檔案問題 使用排序命令從最大的開始刪除效率更高 最後決定...
磁碟空間滿了情況處理
今天伺服器無法操作,檢視磁碟資訊,記憶體資訊,cpu資訊都是滿的,重啟後,都說磁碟滿了,無法寫device,用命令 df i檢視inodes資訊,發現inodes已用盡。df h磁碟空間沒有滿 使用命令可以檢視各個資料夾的大小排序 進入對應資料夾進行查詢,排序前12條,查詢大資料夾 du hm ma...
Linux磁碟空間滿了的排查與解決思路
block正常滿 磁碟實際不足 inode 滿 大量的小檔案 block 滿 檔案沒有被徹底刪除 硬鏈結數0 程序呼叫數不為0 解放方法 1 檢視df h 磁碟使用量根據佔用量大小逐步逐步排查 2 使用du sh 檢視大磁碟所有檔案大小使用 grep g 過濾大檔案資料 3 根據查詢到的檔案詢問刪除...