mysql大表归档后清理数据

 

 
1、重命名表
create table test_tmp like test;
rename table test to test_bak20200619,test_tmp to test;  

2、备份重命名表

mysqldump test_bak20200619 

3、设置硬链接

ln /home/data/my3306/data/db1/test_bak20200619.ibd /home/data/my3306/data/db1/test_bak20200619.ibd.hdlk

4、mysql里执行drop 重命名的表

drop table db1.test_bak20200619;

5、os命令truncate分批删除硬链接对应的文件

bakdate=$(date "+%Y%m%d")
file_size=$(du -sm /home/data/my3306/data/db1/table_bak${bakdate}.ibd.hdlk | awk '{print $1}')

TRUNCATE=/usr/bin/truncate
for i in `seq $file_size -2048 1024`
do 
    sleep 1
    $TRUNCATE -s ${i}M /home/data/my3306/data/db1/table_bak${bakdate}.ibd.hdlk
done

 

 
 
posted @ 2020-06-19 10:47  knowledge-is-power  阅读(439)  评论(0)    收藏  举报