pt-archiver

8290阅读 0评论2013-11-27 ning_lianjie
分类:Mysql/postgreSQL

根据官方文档-,选择常用的参数,做了说明.

NAME

pt-archiver 数据归档到表或者文件

SYNOPSIS

Usage

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

Examples

  1. 从线上服务器把数据归档到线下服务器和本地文件
    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)'
    
    
  3. 每1000行提交一次,每2000行打印一个标题显示进度,不删除源表数据,在归档完成后,打印统计信息.
    pt-archiver --source h=127.0.0.1,P=3306,u='xxxx',p='xxxx',D=db,t=tbl \
    --file '/tmp/%D.%t_%Y%m%d%H%i%s.txt' --charset 'utf8' \
    --where "oderTime < '2012-01-01 00:00:00'" --limit 1000 --commit-each \
    --progress 2000 --statistics --no-delete
    

RISKS

在实际应用中,已经证明Percona Toolkit是成熟的工具,但是所有的数据库工具都会给系统带来风险,所以,在使用前,请:

DESCRIPTION

pt-archiver正如这篇文章锁说的
该工具的目标是把线上的老数据转移,在转移过程中,不会对服务器产生任何冲击,同时也不会影响写入和查询.你可以把这些数据写入到另外一台MySQL,或者写到一个文件里面(该可以使用LOAD DATA INFILE语句导入),或者也可以直接做清理.

一些重要的选项,例如--limit, --retries, 和--txn-size

策略:

  1. 找到数据行,顺着索引,找到更多的数据
  2. 以后的每次查询,都不会进行全表扫描;它应该是通过索引,找到所有需要归档的数据.

--source参数,指定数据源
--dry-run参数, 试运行,可以打印出查询计划,看看是否为最坏的查询-全表扫描.

Percona XtraDB Cluster

暂无

OUTPUT

--progress int 后面需要加一个整数,意思是每处理多少行,输出一个标题行.包括当前日期和时间,pt-archiver运行了多少秒,已经归档了多少数据.
--statstics, 显示计时器,以预估所需要的执行时间.

ERROR-HANDLING

pt-archiver工具会尽可能的捕捉信息,并友好的退出.例如:发出一个SIGTERM信号(Ctrl-C),该工具将会捕捉到,并打印一条消息,然后退出.它不会执行-analyze或者-optimize参数,因为这些操作会相当耗时.它会正常执行其他代码,包括after_finish()函数

总而言之,如果pt-archiver遇到错误,它会跳过分析和优化.

OPTIONS

注意:

  1. 至少指定--dest, --file 或者 --purge三个参数中的一个
  2. --ignore and --replace 不能同时指定
  3. --txn-size and --commit-each 不能同时指定
  4. --low-priority-insert and --delayed-insert 不能同时指定
  5. --share-lock and --for-update 不能同时指定
  6. --analyze and --optimize 不能同时指定
  7. --no-ascend and --no-delete 不能同时指定

默认情况下,--dest从--source中复制DSN字符串.即,在同一个MySQL Server上面把数据归档到另外一个表.

如何读取配置文件

  1. 参数
    --dry-run 只打印命令,不执行
    --file 归档到文件
    --limit和--commit-each配合使用,多少行执行一次commit
    --purge 清理
    
  2. /etc/percona-toolkit/pt-archiver.conf
    purge
    limit  = 10
    commit-each
    source = A=utf8,D=test,P=3306,h=127.0.0.1,p=...,t=t1,u=username
    where  = id<515
    
  3. 命令
    pt-archiver --config /etc/percona-toolkit/pt-archiver.conf
上一篇:pt-online-schema-change使用说明(未完待续)
下一篇:How to setup a slave for replication