温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

大表DROP删除小技巧

发布时间:2020-07-12 20:05:04 来源:网络 阅读:1867 作者:hcymysql 栏目:MySQL数据库

在日常工作中,经常会遇到历史大表从主库上迁移到备份机,以便腾出主库空间,那么如果你直接drop table 后,可能会引起数据库抖动,连接数升高等问题,从而影响业务。

那么用一个小技巧,即可轻松平滑的从主库上删除历史大表。

1、创建一个硬链接,在drop table 表时,"欺骗"MySQL已经删除完毕。

ln test.ibd test.ibd.hdlk

2、这个时候不要直接rm test.ibd.hdlk,这样会引起磁盘IO转速上升,MySQL会发生性能抖动。

我们这里写一个脚本,每次循环1G,休眠2秒,直至删除完。
1)先移动test.ibd.hdlk到/data/bak/目录下
mv test.ibd.hdlk /data/bak/

2)执行下面的脚本即可:

#!/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问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI