在日常工作中,經(jīng)常會(huì)遇到歷史大表從主庫(kù)上遷移到備份機(jī),以便騰出主庫(kù)空間,那么如果你直接drop table 后,可能會(huì)引起數(shù)據(jù)庫(kù)抖動(dòng),連接數(shù)升高等問(wèn)題,從而影響業(yè)務(wù)。
天山網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
那么用一個(gè)小技巧,即可輕松平滑的從主庫(kù)上刪除歷史大表。
1、創(chuàng)建一個(gè)硬鏈接,在drop table 表時(shí),"欺騙"MySQL已經(jīng)刪除完畢。
ln test.ibd test.ibd.hdlk
2、這個(gè)時(shí)候不要直接rm test.ibd.hdlk,這樣會(huì)引起磁盤(pán)IO轉(zhuǎn)速上升,MySQL會(huì)發(fā)生性能抖動(dòng)。
我們這里寫(xiě)一個(gè)腳本,每次循環(huán)1G,休眠2秒,直至刪除完。
1)先移動(dòng)test.ibd.hdlk到/data/bak/目錄下
mv test.ibd.hdlk /data/bak/
2)執(zhí)行下面的腳本即可:
#!/bin/bash
TRUNCATE=/usr/bin/truncate
for i in `seq 100 -1 0 `
#從100G 開(kāi)始每次遞減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。