Percona Toolkit · 归档工具 pt-archiver

功能

将 MySQL 数据库中表的记录归档到另外一个表或者文件

原理

pt

使用

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
# 把数据归档至归档表
pt-archiver --source h=10.138.228.231,P=3306,u=sre,p='xxx',D=matomo,t=matomo_log_link_visit_action --charset=utf8 --dest h=10.138.228.231,P=3306,u=sre,p='xxx',D=matomo,t=matomo_log_link_visit_action_history --where "server_time < '2019-01-01'" --limit 1000 --commit-each --bulk-insert --no-version-check

# h=10.138.228.231 -- 数据库实例地址
# P=3306 -- 数据库实例端口
# u=sre -- 数据库实例用户
# p=xxx -- 数据库实例用户密码
# D=matomo -- 数据库实例数据库
# t=matomo_log_link_visit_action -- 数据库实例表名称

# --source -- 指定要被归档的数据源
# --charset=utf8 -- 使用的字符集,需与表字符集一致
# --file -- 指定目标操作系统文件名
# --dest -- 指定归档到的目标表
# --where "id > 3008" -- 指定 where 过滤条件,过滤出要归档的数据
# --limit 1000 -- 每条语句读取和归档的数据行数,默认是 1
# --commit-each -- 每次获取和归档数据后,commit提交
# --no-version-check -- 不做版本检查
# --bulk-insert -- 批量插入数据
# --statistics -- 显示 pt-archiver 本次操作的统计信息。

# 每5000条删除1次,每隔2000行输出一次数据
pt-archiver --source D=ibilling_pay_hupu,t=purchase_order --user=root --password='root' -S /tmp/mysql.sock --where "create_datetime <= '2015-06-20 00:00:00'" --purge --limit=5000 --progress 2000 --why-quit --no-check-charset > /opt/1.log

# 用于把数据导出文件,不用删除原表中数据
pt-archiver --source h=127.0.0.1,P=58886,D=test,t=t_info_refresh --no-check-charset --where 'id > 1' --progress 4000 --no-delete --file "/tmp/pt-archiver.sql" --limit=10000