大表DROP删除小技巧
2018-06-17 11:34
204 查看
在日常工作中,经常会遇到历史大表从主库上迁移到备份机,以便腾出主库空间,那么如果你直接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。
相关文章推荐
- SQL语句中----删除表数据drop、truncate和delete的用法
- Oracle批量恢复drop操作删除的表、索引等对象
- 恢复oracle中用pl/sql误删除drop掉的表
- SQL关于删除的三个语句,DROP;TRUNCATE;DELETE的区别
- 为什么不能用drop function add 去删除函数? 因为不能使用 mysql中的保留字!
- 小技巧(三):从实例中的指定位置删除指定数目的字符
- PLSQL_标准删除的方式Delete/Drop/Truncate区别和比较(概念)
- [转] sql 删除表数据的drop、truncate和delete用法
- mysql 用drop和delete方法删除用户的区别
- 数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(举例说明)
- Oracle Drop表并未直接删除 drop table xx purge
- oracle序列(sequence)创建失败,无法取值(.nextval),无法删除(drop)解决办法
- 小技巧:帮你批量删除代码前的行号
- oracle数据库删除语句truncate,delete,drop的异同点
- db2 误用drop删除表和数据恢复方法
- sql语句中----删除表数据drop、truncate和delete的用法
- iOS - 开发中监听系统键盘删除按钮 , 回车按钮小技巧
- oracle误操作(drop,update,删除误操作恢复)
- DB2中select查询某表期间无法drop删除该表;Oracle不然
- tableView 删除小技巧