pt-archiver归档工具的使用详解

之前的percona-toolkit工具集的使用博文里面也写到pt-archiver这个工具的用法,但是不够深入全面。这里补充完善下。

注意:pt-archiver操作的表必须有主键。

查看帮助: perldoc  pt-archiver

 

Specify at least one of "--dest","--file", or "--purge".

下面几个参数都是互斥的,只能选其一

"--ignore"and "--replace" are mutually exclusive.

"--txn-size"and "--commit-each" are mutually exclusive.

"--low-priority-insert"and "--delayed-insert" are mutually exclusive.

"--share-lock"and "--for-update" are mutually exclusive.

"--analyze"and "--optimize" are mutually exclusive.

"--no-ascend"and "--no-delete" are mutually exclusive.

 

常用的参数:

--limit10000       每次取1000行数据用pt-archive处理,Number of rows to fetch and archive per statement.

--txn-size  1000   设置1000行为一个事务提交一次,Number of rows pertransaction.

--where‘id<3000‘   设置操作条件

--progress5000     每处理5000行输出一次处理信息

--statistics       输出执行过程及最后的操作统计。(只要不加上--quiet,默认情况下pt-archive都会输出执行过程的)

--charset=UTF8     指定字符集为UTF8

--bulk-delete      批量删除source上的旧数据(例如每次1000行的批量删除操作)

--bulk-insert      批量插入数据到dest主机 (看dest的general log发现它是通过在dest主机上LOAD DATA LOCAL INFILE插入数据的)

--replace          将insert into 语句改成replace写入到dest库

--sleep120         每次归档了limit个行记录后的休眠120秒(单位为秒)

--file‘/root/test.txt‘

--purge             删除source数据库的相关匹配记录

--header            输入列名称到首行(和--file一起使用)

--no-check-charset  不指定字符集

--check-columns    检验dest和source的表结构是否一致,不一致自动拒绝执行(不加这个参数也行。默认就是执行检查的)

--no-check-columns    不检验dest和source的表结构是否一致,不一致也执行(会导致dest上的无法与source匹配的列值被置为null或者0)

--chekc-interval      默认1s检查一次

--local            不把optimize或analyze操作写入到binlog里面(防止造成主从延迟巨大)

--retries         超时或者出现死锁的话,pt-archiver进行重试的间隔(默认1s)

--no-version-check   目前为止,发现部分pt工具对阿里云RDS操作必须加这个参数

--analyze=ds      操作结束后,优化表空间(d表示dest,s表示source)

默认情况下,pt-archiver操作结束后,不会对source、dest表执行analyze或optimize操作,因为这种操作费时间,并且需要你提前预估有足够的磁盘空间用于拷贝表。一般建议也是pt-archiver操作结束后,在业务低谷手动执行analyze table用以回收表空间。

pt-archiverBug不会迁移max(id)那条数据的解决方法:

参考:http://www.ttlsa.com/mysql/pt-archiver-bug-cannot-migration-max-id-record/

vim/usr/bin/pt-archiver +6285  ,如下:

修改前: $first_sql .= " AND ($col < " . $q->quote_val($val) . ")";

修改后: $first_sql .= " AND ($col <= " . $q->quote_val($val) .")";

删除老数据(单独的删数据操作不用指定字符集)

/usr/bin/pt-archiver \

--source h=localhost,u=root,p=1234,P=3306,D=test,t=t \

--no-check-charset --where ‘a<=376‘ --limit 10000 --txn-size 1000 --purge

复制数据到其他mysql实例,且不删除source的数据(指定字符集)

/usr/bin/pt-archiver \

--source h=localhost,u=root,p=1234,P=3306,D=test,t=t1\

--dest h=192.168.2.12,P=3306,u=archiver,p=archiver,D=test,t=t1_bak \

--progress 5000 --where ‘mc_id<=125‘ \

--statistics --charset=UTF8 --limit=10000 --txn-size 1000 --no-delete

复制数据到其他mysql实例,并删source上的旧数据(指定字符集)

/usr/bin/pt-archiver \

--source h=localhost,u=root,p=1234,P=3306,D=test,t=t1 \

--dest h=192.168.2.12,P=3306,u=archiver,p=archiver,D=test,t=t1_his \

--progress 5000 --where "CreateDate <‘2017-05-01 00:00:00‘ " \

--statistics --charset=UTF8 --limit=10000 --txn-size 1000 --bulk-delete

### 官方文档说明:The normal method isto delete every row by its primary key. Bulk deletes might be a lot faster.They also

mightnot be faster if you have a complex WHERE clause.

复制数据到其他mysql实例,不删除source数据,但是使用批量插入dest上新的数据(指定字符集)

/usr/bin/pt-archiver \

--source h=localhost,u=archiver,p=archiver,P=3306,D=test,t=t1 \

--dest h=192.168.2.12,P=3306,u=archiver,p=archiver,D=test,t=t1_his \

--progress 5000 --where "c <‘2017-05-01 00:00:00‘ " \

--statistics --charset=UTF8 --limit=10000 --txn-size 1000 --no-delete  --bulk-insert

### 测试用的一张只有3列元素的表,共计9万行数据。使用bulk-insert用时7秒钟。而常规insert用时40秒。

导出数据到文件:

/usr/bin/pt-archiver \

--source h=10.0.20.26,u=root,p=1234,P=3306,D=test,t=t \

--file ‘/root/test.txt‘ \

--progress 5000 --where ‘a<12000‘ \

--no-delete --statistics --charset=UTF8 --limit=10000 --txn-size 1000

导出数据到文件并删除数据库的相关行:

/usr/bin/pt-archiver \

--source h=10.0.20.26,u=root,p=1234,P=3306,D=test,t=t \

--file ‘/root/test.txt‘ \

--progress 5000 --where ‘a<12000‘ \

--statistics --charset=UTF8 --limit=10000 --txn-size 1000 --purge

时间: 2024-12-14 18:06:19

pt-archiver归档工具的使用详解的相关文章

(总结)Web性能压力测试工具之WebBench详解

PS:在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相同.面对这些问题,我们只能尽量去想方设法去模拟.所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数. Webbench是知名的网站压力测试工具,它是由Lionbridge公司(h

第130讲:Hadoop集群管理工具DataBlockScanner 实战详解学习笔记

第130讲:Hadoop集群管理工具DataBlockScanner 实战详解学习笔记 DataBlockScanner在datanode上运行的block扫描器,定期检测当前datanode节点上所有的block,从而在客户端读到有问题的块前及时检测和修复有问题的块. 它有所有维护的块的列表,通过对块的列表依次的扫描,查看是否有校验问题或错误问题,它还有截流机制. 什么叫截流机制?DataBlockScanner扫描时会消耗大量的磁盘带宽,如果占用磁盘带宽太大,会有性能问题.所以它会只占用一小

Protobuf 文件生成工具 Prototool 命令详解

Protobuf 文件生成工具 Prototool 命令详解 简介 Prototool 是 Protobuf 文件的生成工具, 目前支持go, php, java, c#, object c 五种语言包的生成. 详情参考Github: https://github.com/uber/prototool docker 方式使用 prototool 工具 使用方式 // prototool 的使用 docker run --rm -v $(pwd):/work "uber/prototool&quo

交叉编译工具链(详解)

1.嵌入式开发模型-交叉开发 在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机是执行编译.链接嵌入式软件的计算机:目标机是运行嵌入式软件的硬件平台. 在宿主机执行编译的流程如下: 2.交叉编译工具链详解 参考: http://www.crifan.com/files/doc/docbook/cross_compile/release/html/cross_compile.html 3.制作交叉编译工具 参考: http://www.crifan.com/files/doc/docbook/c

【UML 建模】在线UML建模工具 ProcessOn 使用详解

总结 : -- 推荐理由 : 最近从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款可以在线使用的 UML 工具, 用起来发现还不错, 推荐给大家; -- 工具地址 : https://www.processon.com/ ; 一. UML 使用流程 1. 创建 UML 图 创建 UML 图 : 点击主页的右上角的 "+" 按钮, 即可弹出创建页面; -- 创建按钮 : -- 创建页面 : -- 选择模板 :

IO测试工具之fio详解

目前主流的第三方IO测试工具有fio.iometer和Orion,这三种工具各有千秋. fio在Linux系统下使用比较方便,iometer在window系统下使用比较方便,Orion是oracle的IO测试软件,可在没有安装oracle数据库的情况下模拟oracle数据库场景的读写. 如下是在Linux系统上采用fio工具来对SAN存储进行的IO测试. 1.安装fio 在fio官网下载fio-2.1.10.tar文件,解压后./configure.make.make install之后就可以使

从技巧、案例和工具入手,详解性能优化怎么做

颜圣杰,.NET平台软件工程师,对DDD领域驱动设计感兴趣,目前在研究ABP框架,热爱写作与分享. 最近一段时间系统新版本要发布,在beta客户测试期间,暴露了很多问题,除了一些业务和异常问题外,其它都集中在性能上.有幸接触到这些性能调优的机会,这里跟大家归纳交流一下. 性能优化是一个老生常谈的问题了,典型的性能问题如页面响应慢.接口超时,服务器负载高.并发数低,数据库频繁死锁等.而造成性能问题又有很多种,比如磁盘I/O.内存.网络.算法.大数据量等.我们可以大致把性能问题分为四个层次:代码层次

Web 性能压力测试工具之 Siege 详解

Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力.可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行.siege可以从您选择的预置列表中请求随机的URL.所以siege可用于仿真用户请求负载,而ab则不能.但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多. Siege官网:http://www.joedog.org/Siege下载:http://www.joedog.org/pub

ARM开发工具软件命令详解---嵌入式回归第三篇

先从bootloader开始,因为暂时目前这些都会是裸机程序相关! 本人这里是VMwarm10.0上安装的红帽linux虚拟机.从下面的截图中可以看出 裸机开发流程: 这里先做第三步(第一步第二步已提供好),感受总结一下ARM裸机开发需要哪些工具,用到的时候再详细介绍. 要做第三步,首先要安装交叉编译器! 找到安装包,解压到根目录下(解压后边加上 -C  /) 这里交叉工具链会自动解压到根目录下的 /usr/local/arm/ 目录下面 但是这时候还不能直接在任意目录下使用arm-linux-