使用pt-archiver对mysql大表进行归档

常用参数表

–where ‘id<3000’ 设置操作条件
–limit 10000 每次取1000行数据给pt-archive处理
–txn-size 1000 设置1000行为一个事务提交一次
–progress 5000 每处理5000行输出一次处理信息
–statistics 结束的时候给出统计信息:开始的时间点,结束的时间点,查询的行数,归档的行数,删除的行数,以及各个阶段消耗的总的时间和比例,便于以此进行优化。只要不加上–quiet,默认情况下pt-archive都会输出执行过程的
–charset=UTF8 指定字符集为UTF8
–no-delete 表示不删除原来的数据,注意:如果不指定此参数,所有处理完成后,都会清理原表中的数据
–bulk-delete 批量删除source上的旧数据
–bulk-insert 批量插入数据到dest主机 (看dest的general log发现它是通过在dest主机上LOAD DATA LOCAL INFILE插入数据的)
–purge 删除source数据库的相关匹配记录
–local 不把optimize或analyze操作写入到binlog里面(防止造成主从延迟巨大)
–analyze=ds 操作结束后,优化表空间(d表示dest,s表示source)
默认情况下,pt-archiver操作结束后,不会对source、dest表执行analyze或optimize操作,因为这种操作费时间,并且需要你提前预估有足够的磁盘空间用于拷贝表。一般建议也是pt-archiver操作结束后,在业务低谷手动执行analyze table用以回收表空间

只删除历史数据

参考

优雅地使用pt-archiver进行数据归档
pt-archiver手册

打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注