記一次處理mysql資料庫無故鎖表的經歷
阿新 • • 發佈:2019-09-25
某日,生產環境上的使用者表突然無故鎖表,原以為只是偶發的bug。所以第一時間想到的解決方案簡單粗暴:重啟資料庫(service mysqld restart)。問題得以解決。
10min後,該表再次鎖表。終於意識到問題並沒有那麼簡單。
經過多方查資料,各種嘗試。比如kill程序等方法,均無效。
最終看到一個,有可能是因為磁碟空間不足的原因,瞬間感覺就是它了。
df -h檢視伺服器磁碟佔用情況,果然used已經100%了(沒有做磁碟空間佔用預警^-^!!)。
只能刪除大檔案了,一般tomcat的logs目錄下的catalina.out檔案都特別大。
一查,果然已經有15個G之多了。rm -f catalina.out 刪除檔案。
再用df -h檢視磁碟佔用情況。並沒有任何改變。
經多方查證發現:刪除正在使用中的檔案時,系統不會立即釋放檔案所佔空間。
此時可通過:
1、重啟(生產環境重啟,萬一起不來呢。況且還是大晚上在家加班,起不來還得連夜處理。直接pass)
2、kill掉刪除檔案的程序
lsof |grep deleted 查詢刪除檔案的程序(第二列是程序id,最後一列是刪除檔案的路徑)
kill -9 程序id (刪除對應的程序)
再次df -h檢視磁碟佔用情況,磁碟空間已釋放。
另外,鎖表的問題還導致,主從同步停止。
重置主從同步,參考另一篇文章連結
&n