01
pt-archiver是什么?
pt-archiver是Percona-Toolkit工具集中的一个组件,可以用于对MySQL表数据进行归档和清除。它可以实现将数据归档到另一张表或者是一个文件中,在清除表数据的过程中并不会影响OLTP事务的查询性能,可以细粒度的控制每次迁移事务的大小,同时免去编写应用程序进行数据迁移的麻烦。
02
迁移表数据并归档
将在线表数据迁移到另外一张表,然后对已迁移的原始表数据进行清理。
1、对在线表进行历史数据备份
mysqldump -u${user} -p${password} -h${host} -P${port} ${database} ${table} --no-create-info --set-gtid-purged=off --single-transaction --where="${condition}" --skip-tz-utc > ${file_path}
参数说明如下:
2、将在线表迁移至历史表
- 先进行迁移语句的校验
pt-archiver --source h=${source_host},P=${source_port},u=${source_user},D=${source_database},t=${source_table},A=utf8 --dest h=${dest_host},P=${dest_port},u=${dest_user},D=${dest_database},t=${dest_table},A=utf8 --charset=utf8 --where "create_time < '2020-05-07 00:00:00'" --progress=100000 --txn-size=40000 --limit=40000 --statistics --no-delete --ask-pass --dry-run
- 迁移数据但不进行清除
pt-archiver --source h=${source_host},P=${source_port},u=${source_user},D=${source_database},t=${source_table},A=utf8 --dest h=${dest_host},P=${dest_port},u=${dest_user},D=${dest_database},t=${dest_table},A=utf8 --charset=utf8 --where "create_time < '2020-05-07 00:00:00'" --progress=100000 --txn-size=40000 --limit=40000 --statistics --no-delete --ask-pass --why-quit
- 进行源表数据清除
pt-archiver --source h=${source_host},P=${source_port},u=${source_user},D=${source_database},t=${source_table},A=utf8 --purge --charset=utf8 --where "create_time < '2020-05-07 00:00:00'" --progress=100000 --txn-size=40000 --limit=40000 --statistics --ask-pass --why-quit
以上涉及的参数说明如下: