溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

大表DROP刪除小技巧

發(fā)布時間:2020-07-12 20:05:04 來源:網絡 閱讀:1867 作者:hcymysql 欄目:MySQL數據庫

在日常工作中,經常會遇到歷史大表從主庫上遷移到備份機,以便騰出主庫空間,那么如果你直接drop table 后,可能會引起數據庫抖動,連接數升高等問題,從而影響業(yè)務。

那么用一個小技巧,即可輕松平滑的從主庫上刪除歷史大表。

1、創(chuàng)建一個硬鏈接,在drop table 表時,"欺騙"MySQL已經刪除完畢。

ln test.ibd test.ibd.hdlk

2、這個時候不要直接rm test.ibd.hdlk,這樣會引起磁盤IO轉速上升,MySQL會發(fā)生性能抖動。

我們這里寫一個腳本,每次循環(huán)1G,休眠2秒,直至刪除完。
1)先移動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 開始每次遞減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。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI