Percona Toolkit

2019-10-12 Views

简介

Percona Toolkit是Percona技术人员开发和使用的高级开源命令行工具的集合,旨在执行各种MySQL和MongoDB服务器和系统任务。

安装

yum install perl perl-IO-Socket-SSL perl-Time-HiRes #安装依赖包

wget percona.com/get/percona-toolkit.tar.gz #下载压缩包

tar xzvf percona-toolkit-2.1.1.tar.gz #解压

cd percona-toolkit-2.1.1 #进入目录

perl Makefile.PL #生成对应文件

#开始安装
make
make test
make install

pt-archiver --version #查看版本,看看是否安装成功
pt-archiver 3.0.10

使用

参数介绍

  • --source

    源数据库

  • --dest

    归档数据库

  • DSN 参数(注意不能有空格,否则会报错)

    • h 主机
    • P(大写) 端口
    • u 用户名
    • p(小写) 密码
    • D 数据库名
    • t 表名
  • --where

    查询条件

  • --limit 10000

    每次取1000行数据给pt-archive处理

  • --txn-size 1000

    设置1000行为一个事务提交一次

  • --progress 5000

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

  • --statistics

    结束的时候给出统计信息:开始的时间点,结束的时间点,查询的行数,归档的行数,删除的行数,以及各个阶段消耗的总的时间和比例,便于以此进行优化。只要不加上--quiet,默认情况下pt-archive都会输出执行过程的

  • --charset=UTF8

    指定字符集为UTF8,字符集需要对应当前库的字符集来操作

  • --no-delete

    表示不删除原来的数据,注意:如果不指定此参数,所有处理完成后,都会清理原表中的数据

  • --bulk-delete

    批量删除source上的旧数据

  • --bulk-insert

    批量插入数据到dest主机,要配合limit和txn-size一起才能使用 (看dest的general log发现它是通过在dest主机上LOAD DATA LOCAL INFILE插入数据的)

  • --purge

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

  • --local

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

  • --analyze=ds

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

  • --ignore

    忽略重复的记录

  • --replace

    覆盖重复的记录

示例

# 不同mysql实例间的归档
pt-archiver --source h=,P=,u=,p=,D=,t= --dest h=,P=,u=,p=,D=,t= --where 'id>=1' --limit=10000 --txn-size 10000 -no-delete

问题&解决方法

Can't locate Digest/MD5.pm in @INC (@INC contains:

yum -y install perl-Digest-MD5

Can't locate ExtUtils/MakeMaker.pm in @INC

yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

最后一行无法归档

  • 这是pt-archiver的一个BUG

cd /usr/local/percona-toolkit/percona-toolkit-3.0.10/bin # 进入安装目录

vi pt-archiver
:/AND ($col # 找到这一句
$first_sql .= ” AND ($col <= ” . $q->quote_val($val) . “)”; # 将$col < 改成 $col <=

△