percona-toolkit 之 【pt-archiver】

 

背景:

        工作上需要删除或则归档一张大表,这时候用pt-archiver可以很好的满足要求,其不仅可以归档数据,还有删除、导出到文件等功能。并且在主从架构当中,可以兼顾从库(一个或则多个)进行归档,避免归档、删除数据时候压力太大,造成从库的延迟。该工具的目标是一个低影响,从表中剔除旧数据,而不会影响OLTP查询。也可以将数据插入到另一个表中,该表不必位于同一服务器上。

使用方法:

pt-archiver [OPTIONS] --source DSN --where WHERE

1)将所有行从oltp_server归档到olap_server并归档到文件:

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

2)从子表中删除行:

pt-archiver --source h=host,D=db,t=child --purge \   --where 'NOT EXISTS(SELECT * FROM parent WHERE col=child.col)'

参数说明:注意:至少需要指定--dest,--file,--purge 其中的一个。

1:--source :指定要归档表的信息,兼容DSN选项。 

复制代码
a:执行查询时要使用的数据库。 b:如果为true,则使用SQL_LOG_BIN禁用binlog。 h:连接的MySQL主机名或IP地址。 D:连接时使用的默认数据库,可以在运行时使用不同的数据库。 t:要被归档、删除、导出的表。 i:进行归档、删除、导出时,被指定使用的索引。 p:连接时使用的MySQL密码。 P:连接时使用的MySQL端口。 S:用于连接的MySQL套接字文件(在Unix系统上)。 u:连接时使用的MySQL用户名。 L:启用LOAD DATA LOCAL INFILE。 A:连接MySQL的默认字符集(SET NAMES)。 F:通过配置文件读取用户名和密码,如配置了〜/ .my.cnf,就会自动连接工具而无需用户名或密码。格式为: [client] user=your_user_name pass=secret
复制代码

2:--dest:指定要归档到的表,兼容DSN选项。

此项指定一个表,pt-archiver将在其中插入从--source归档的行。 它使用与--source相同的参数格式。 大多数缺失值默认为与--source相同的值,因此不必重复--source和--dest中相同的选项。如果--source和--dest的用户名密码不一样,需要单独各自指定,并且注意F和S参数。

3:--analyze:在--source或--dest上运行ANALYZE TABLE。字母's',将分析来源。 如果它包含'd',则将分析目的地。 您可以指定其中一个或两个

--analyze=ds

4:--ascend-first:升序索引优化,提供最左索引(多列主键)的升序。

5:--no-ascend:  不要使用升序索引优化。注意多列主键索引。

6:--ask-pass:连接MySQL时提示输入密码。

7:--buffer:缓冲区输出到--file并在提交时刷新,每次事务提交禁止刷写到磁盘,有操作系统决定刷写。该参数可以提高刷写到文件的性能,但崩溃可能会有数据丢失。

8:--commit-each:控制事务大小,每次提取、归档就提交。禁用--txn-size。

9:

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信