一、描述
pt-archiver 是归档表的工具,在 sql 中写入高效归档和清除作业。 目标是在不对 OLTP 查询产生太大影响的情况下,将旧数据从表中蚕食掉,从而实现低影响、仅向前的作业。 您可以将数据插入到另一个表中,而不必在同一台服务器上。 您也可以将其写入适合 LOAD DATA INFILE 格式的文件。 或者你两者都不能做,在这种情况下它只是一个增量删除。
二、实践
针对不同参数做了一些实验,来帮助了解参数
1.官方示例
# 标准用法
pt-archiver [OPTIONS] --source DSN --where WHERE
# 将表从oltp实例归档到olap的实例中
pt-archiver --source h=oltp_server,D=test,t=tbl --dest h=olap_server --file '/var/log/archive/%Y-%m-%d-%D.%t' --where "1=1" --limit 1000 --commit-each
# 从子表删除孤立行
pt-archiver --source h=host,D=db,t=child --purge --where 'NOT EXISTS(SELECT * FROM parent WHERE col=child.col)'
2.具体测试
2.1 归档到同一实例上的不同表
./pt-archiver --source h=127.0.0.1,P=3307,u=rpl_test,D=mts_rpl_test2,t=mts_test3 --charset=utf8mb4 --ask-pass --dest h=127.0.0.1,P=3307,u=rpl_test,D=mts_rpl_test2,t=mts_test3_arch --ask-pass --where "id<135887" --limit 100 --commit-each
# 因为--dest会从--source继承相同的指,所以上面的命令也可以用下面的写法来写,注意,表必须是已经存在的表
./pt-archiver --source h=127.0.0.1,P=3307,u=rpl_test,D=mts_rpl_test2,t=mts_test3 --charset=utf8mb4 --ask-pass --dest t=mts_test3_arch --where "id<135887" --limit 100 --commit-each
# 利用配置文件来进行登录
./pt-archiver --source F=/etc/my2.cnf,u=root,D=mts_rpl_test2,t=mts_test3 --charset=utf8mb4 --ask-pass --dest t=mts_test3_arch --where "id<135887" --limit 100 --commit-each
# 利用socket文件来进行登录,如果使用单机多实例部署的时候采用这种方法要尤其注意dest的真实实例
./pt-archiver --source u=root,D=mts_rpl_test2,t=mts_test3 -S /data/mysql_data2/mysql.sock --charset=utf8mb4 --ask-pass --dest t=mts_test3_arch --where "id<135887" --limit 100 --commit-each
2.2 归档到文件
# 输出到文件,因为文件没有utf8mb4这种编码,所以这里直接设置了no-check-charset
./pt-archiver --source b,h=127.0.0.1,P=3307,u=rpl_test,D=mts_rpl_test2,t=mts_test3 --ask-pass --file '/data/it_tool/archiver/%Y-%m-%d-%D.txt' --no-check-charset --where "id<135887" --limit 100 --commit-each
2.3 只删除不归档
# 只删除,不归档
./pt-archiver --source h=127.0.0.1,P=3307,u=rpl_test,D=mts_rpl_test2,t=mts_test3 --charset=utf8mb4 --ask-pass --purge --where "id<136887" --limit 100 --commit-each

pt-archiver是一个用于归档和清理MySQL表的工具,它可以在不影响OLTP查询的前提下蚕食旧数据。本文介绍了如何将数据归档到同一实例的不同表、文件,以及如何删除数据,同时讨论了不写入binlog的操作,并提供了命令行示例和参数详解。
最低0.47元/天 解锁文章
169

被折叠的 条评论
为什么被折叠?



