pt工具的使用(7) pt-archiver的使用

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

一、描述

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

2.4 不写入binlog中

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值