mysql系列~pt-archer归档


一 简介:今天咱们来聊聊pt-archiver的使用
二 相关准备
  1 如果归档需要提前建立备份表
  2 如果是主键,则直接生成sql语句,如果是非主键/没有索引,则会先查询出主键,然后再生成force index(primary) sql语句,主键能保证全局唯一性
三 只进行数据清理
   pt-archiver --source u=root,p=123456,S=/tmp/mysql.sock,D=dbname,t=tablename --purge --where="条件" --no-safe-auto-increment --progress=10000 --statistics --no-check-charset --limit 1000 --commit-each --bulk-delete
四 数据归档并清理
   pt-archiver --source u=root,p=123456,S=/tmp/mysql.sock,D=dbname,t=tablename --dest h=目的IP,u=root,p=123456,S=/tmp/mysql.sock,D=dbname,t=tablename --purge --where="条件" --no-safe-auto-increment --progress=10000 --bulk-insert --statistics --no-check-charset --limit 1000 --commit-each
五 参数优化
  1 可以加上--dry-run进行预演,并不会真正执行
  2 bulk-insert默认会调用bulk-delete(控制删除)
     删除采用DELETE FROM TABLE WHERE ... ,每次删除一行数据
    插入采用INSERT INTO TABLE VALUES('...'),每次插入一行数据
    批量删除采用DELETE FROM TABLE WHERE ... LIMIT 10000
    批量插入采用LOAD DATA LOCAL INFILE 'file' INTO TABLE ...
3 控制事务两种方式-两种都支持并发操作-请注意
  1 事务大小=limit,设置:--commit-each 批量,记录数为limit 一次commit(推荐)
  2  指定事务大小,设置:--txn-size 记录数被事务大小整除提交 

六 注意点
1 建议手动整理回收表空间

相关