1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 场景: 面试题: 亿级的大表,delete批量删除100w左右数据。 #批量删除功能 面试题: 定期按照时间范围,进行归档表。 #归档功能---并发归档
#重要参数 --limit 100 每次取100行数据用pt-archive处理 --txn-size 100 设置100行为一个事务提交一次, --where 'id<3000' 设置操作条件 --progress 5000 每处理5000行输出一次处理信息 --statistics 输出执行过程及最后的操作统计。(只要不加上--quiet,默认情况下pt- archive都会输出执行过程的) --charset=UTF8 指定字符集为UTF8—这个最后加上不然可能出现乱码。 --bulk-delete 批量删除source上的旧数据(例如每次1000行的批量删除操作)
注意: 需要归档表中至少有一个索引,做好是where条件列有索引
使用案例: 1.归档到数据库 ---远程归档居多 #1.1 获得建表语句
#1.2 备份 db01 [test]> create table test1 like t100w; pt-archiver --source h=10.0.0.51,D=test,t=t100w,u=oldguo,p=123 --dest h=10.0.0.51,D=test,t=test1,u=oldguo,p=123 --where 'id<10000' --no-check-charset --no-delete --limit=1000 --commit-each --progress 1000 --statistics
2.只清理数据 pt-archiver --source h=10.0.0.51,D=test,t=t100w,u=oldguo,p=123 --where 'id<10000' --purge --limit=1 --no-check-charset
3.只把数据导出到外部文件,但是不删除源表里的数据 pt-archiver --source h=10.0.0.51,D=world,t=city,u=root,p=123 --where '1=1' --no-check-charset --no-delete --file="/tmp/archiver.dat"
|