mysql drop表后空間不釋放


前幾個月遇見了一個線上故障。

在mysql drop了一張大表后,空間竟然沒有釋放。從占用的空間來看,drop此表后,磁盤占用應該會有明顯的下降。

記錄一下解決過程

mysql版本:5.7

 

1.首先ps -ef | grep mysql 拿到mysql的pid

2.然后lsof -p `pid of mysql`  |grep delete

3.顯然你不可能用重啟數據庫的方式來解決這個問題。

4.找到第二步結果中所有的fd。去到/proc/`pid of mysql`/fd/下。將2中所有的fd全部rm掉。

5.df -lh發現空間已經釋放。

 

此外,這個操作還是要結合具體場景。比如說你是個從庫,那么完全可以找個時間重啟。又或者並不是刪除表空間沒有釋放,而且其他情景,比如我還見過slow log沒有釋放空間,那么可以通過flush log解決。

判定這種情況的出現,可以通過df -lh和du命令結合。如果對於某一文件夾,兩個命令計算出來的大小不一致。基本可以判定文件句柄沒有釋放。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM