在平常工做中,常常會遇到歷史大表從主庫上遷移到備份機,以便騰出主庫空間,那麼若是你直接drop table 後,可能會引發數據庫抖動,鏈接數升高等問題,從而影響業務。數據庫
那麼用一個小技巧,便可輕鬆平滑的從主庫上刪除歷史大表。bash
一、建立一個硬連接,在drop table 表時,"欺騙"MySQL已經刪除完畢。ide
ln test.ibd test.ibd.hdlk性能
二、這個時候不要直接rm test.ibd.hdlk,這樣會引發磁盤IO轉速上升,MySQL會發生性能抖動。code
咱們這裏寫一個腳本,每次循環1G,休眠2秒,直至刪除完。
1)先移動test.ibd.hdlk到/data/bak/目錄下
mv test.ibd.hdlk /data/bak/it
2)執行下面的腳本便可: table
#!/bin/bash TRUNCATE=/usr/bin/truncate for i in `seq 100 -1 0 ` #從100G 開始每次遞減1G,最終讓文件變成0 do sleep 2 echo "$TRUNCATE -s ${i}G /data/bak/test.ibd.hdlk" $TRUNCATE -s ${i}G /data/bak/test.ibd.hdlk done
注:先ll -h test.ibd.hdlk看一下該文件有多少G,而後輸入seq後面,上述例子爲100G。class