pt-archiver工具其实就是用来清理,归档数据用的

一.归档前的准备
需要配置client字符集为utf-8,如果你用了utf-8的编码,防止归档数据为乱码
[client]
default-character-set=utf8

二.使用场景
1、清理线上过期数据
2、清理过期数据,并把数据归档到本地归档表中,或者远端归档服务器
3、两张表之间的数据不完全相同,希望合并。此时加上–ignore或–replace选项,可以轻松实现
4、导出线上数据,到线下数据作处理

三.参数

  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上面把数据归档到另外一个表.

  • –analyze
    在数据归档完成后,执行ANALYZE TABLE命令.d是在目的端执行,s是在源端执行.

    --analyze=ds
    
  • –ascend-first
    只使用第一列为升序的索引.
  • –ask-pass
    交互模式输入密码
  • –buffer
    指定–file参数时,提供缓冲功能.性能可能会提高(5-15)%
    风险: 在归档大事务的时候,如果发生宕机,可能会造成数据丢失.
  • –bulk-delete
    用单独的sql语句,每次删除一个块的数据.可以加快删除的速度.不推荐使用.
    正常情况下,是根据主键,一行一行的删除.
  • –[no]bulk-delete-limit
    为–bulk-delete参数添加limit选项
  • –bulk-insert
    使用”LOAD DATA INFILE”方式代替INSERT方式写入.
  • –charset
    指定字符集,例如

    --charset 'utf8'
    
  • –[no]check-charset
    默认开启,检查连接的字符集与表的字符集是否一致.
  • –[no]check-columns
    检查source和dest是否具有相同的列(不减查列的顺序,数据类型等).如果不同,则报错退出.
  • –check-interval
    默认1s
    如果指定了–check-slave-lag 参数,那么每秒都会检查从库的延迟情况(帐号要有权限连接从库).
  • –check-slave-lag
    指定一个从库的DSN串,检查复制延迟的情况,如果大于–max-lag,就会暂停归档.
  • –columns
    指定归档的列(用逗号分割),写入文件和目的库表.
    注意: 没有指定列,在原表也会被删除.也就说,未选择列的数据,就会丢失.
  • –commit-each
    配合–limit参数,一组一组的归档数据
  • –config
    参考下面的”如何读取配置文件”
  • –delayed-insert
    增加DELAYED属性
  • –dry-run
    不做任何操作,只打印要执行的查询语句.
  • –file
    归档到文件,文件内容相当于是SELECT INTO OUTFILE语法导出的数据,文件名可以增加时间戳和库名:

    %d    Day of the month, numeric (01..31)
    %H Hour (00..23)
    %i Minutes, numeric (00..59)
    %m Month, numeric (01..12)
    %s Seconds (00..59)
    %Y Year, numeric, four digits %D Database name
    %t Table name

    例如

    --file '/var/log/archive/%Y-%m-%d-%D.%t'
    
  • –for-update
    为SELECT语句增加FOR UPDATE属性
  • –header
    在归档文件的第一行加入列名.注意,在LOAD DATA INFILE时,别写入多余的数据.
  • –high-priority-select
    增加HIGH_PRIORITY 修饰符
    See http://dev.mysql.com/doc/en/select.html for details.
  • –limit
    默认值1
    指定每次归档多少行.
  • –local
    执行OPTIMZE或者ANALYZE语句时,不写binlog,只在本地执行.
  • –low-priority-delete
    Adds the LOW_PRIORITY modifier to DELETE statements.
    See http://dev.mysql.com/doc/en/delete.html for details.
  • –low-priority-insert
    Adds the LOW_PRIORITY modifier to INSERT or REPLACE statements.
    See http://dev.mysql.com/doc/en/insert.html for details.
  • –max-lag
    默认是1s, 从库延迟超过这个设置值就会自动暂停.
  • –no-ascend
    不使用顺序索引优化
  • –no-delete
    不在source上面删除归档数据
  • –optimize
    归档完成后,执行 OPTIMIZE TABLE
  • –pid
    指定pid文件
  • –progress
    每隔多少行,打印一次信息.
  • –purge
    只删除,不做归档.可以省略–file和–dest选项
  • –quiet
    不打印任何输出
  • –replace
    在dest端,使用REPLACE INSERT语句
  • –retries
    遇到超时或死锁时,重试的次数.默认是1次
  • –run-time
    运行多长时间后退出.
    可以指定如下后缀,如果没有后缀,默认是秒

    s=seconds, m=minutes, h=hours, d=days
    
  • –sentinel
    默认路径: /tmp/pt-archiver-sentinel
    如果这个文件存在,则直接退出.
  • –set-vars
    可以设置mysql的变量,多个变量用逗号分割.

    --set-vars wait_timeout=500
    
  • –skip-foreign-key-checks
    禁用外键检查,相当于执行了 SET FOREIGN_KEY_CHECKS=0
  • –sleep
    指定两次SELECT语句的sleep时间.默认是没有sleep的.
    如果指定commit-each参数,commit和flush会在sleep之前发生.
  • –stop
    创建一个哨兵文件,停止正在运行的pt-archiver进程.例如session1正在执行归档操作,然后我用session2创建一个哨兵文件,那么session1的操作会立刻停止.
  • –txn-size
    指定每个事务的行数.
  • –where (重要)
    指定归档数据的过滤条件.
  • –why-quit
    打印退出的原因,归档数据正常完成的除外.

四.示例

1.归档到数据库

pt-archiver --source h=127.0.0.1,D=test,t=table1,u=root,p=123456 --dest h=127.0.0.1,D=test,t=table2,u=root,p=123456 --where 'id<10000' --no-check-charset --no-delete --limit=1000 --commit-each --progress 2000 --statistics

2.只清理数据

pt-archiver --source h=127.0.0.1,D=test,t=table1,u=root,p=123456 --where 'id<10000' --purge --limit=1 --no-check-charset

3.只把数据导出到外部文件,但是不删除源表里的数据
pt-archiver --source h=127.0.0.1,D=test,t=table1,u=root,p=123456 --where '1=1' --no-check-charset --no-delete --file="/tmp/archiver.dat"

pt-archiver使用的更多相关文章

  1. maven repo plugin archiver

    Failure to transfer org.apache.maven:maven-archiver:pom:2.4.1 from http://repo1.maven.org/xxx was ca ...

  2. PX 和PT的区别

    字体大小的设置单位,常用的有2种:px.pt.这两个有什么区别呢? 先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点: pt就是point,是印刷行业常用单位,等于1/72英 ...

  3. css中单位px、pt、em和rem的区别

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px :像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS ...

  4. 快速安装Percona pt工具

    yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-Time-HiRes perl-IO-Socket-SSLwget http://pk ...

  5. ((uchar*)(Img1->imageData + Img1->widthStep*pt.y))[pt.x] 的 具体含义

    widthstep是指图像每行所占的字节数. 主要要和width区别: width是表示图像的每行像素数,widthStep指表示存储一行像素需要的字节数. 在OpenCV里边,widthStep必须 ...

  6. ORA-00257 archiver error 处理思路

    1.首先查下oerr给出的简要说明 2.查询V$RECOVERY_AREA_USAGE信息 3.根据实际空间剩余情况先适当增加归档目录的大小,保证先恢复业务 4.查看备份是否存在问题 1.首先查下oe ...

  7. 一则奇怪的案例处理:ORA-00257: archiver error. Connect internal only, until freed

    前天,业务反应数据库不能连接 在操作系统通过字符串尝试登陆数据库报:ORA-00257: archiver error. Connect internal only, until freed 解决思路 ...

  8. Android中的dp, px, pt

    定义: px是像素,表示屏幕显示的最小元素单位 pt是磅数,一磅等于1/72英寸,一般用来作为字体的单位使用 问题: px和pt不使用于手机,因为同样的px在高低分辨率的手机上显示的比例不同 解决办法 ...

  9. css中font-size的单位总结:px、em、pt

    px:基于像素的单位.像素是一种有用的单位,因为在任何媒体上都可以保证一个像素的差别确实是可见的.em :一般用来测量长度的通用单位(例如元素周转的页边空白和填充),当用于指定字体大小时,em单位是指 ...

  10. 今天早上刚刚碰到的一个问题oracle数据归档已满,只能进行内部连接,ORA-00257 archiver error. 错误的处理方法

    archive log 日志已满ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法1. 用sys用户登录  sq ...

随机推荐

  1. JS 中没有按地址(引用)传递,只有按值传递

    很多人,包括我,受书本知识消化不彻底的影响,认为 JS 中参数有两种传递方式:数字.字符串等按值传递:数组.对象等按地址(引用)传递.对此种观点,我们要谨慎. var v1 = [] var v2 = ...

  2. MapReduce类型与格式(输入与输出)

    一.输入格式 (1)输入分片记录 ①JobClient通过指定的输入文件的格式来生成数据分片InputSplit: ②一个分片不是数据本身,而是可分片数据的引用: ③InputFormat接口负责生成 ...

  3. 如何破解mac版UltraEdit?

    Rodolfo教你如何破解UtralEdit? 第一步:去官网下载原载,先运行一次: 第二步:在终端里执行下面代码就可以破解完成!printf '\x31\xC0\xFF\xC0\xC3\x90' | ...

  4. js随机数

    引子:    在写程序间突然需要用到随机数,于是用到了js的Math.random随机函数,生成指定范围内的随机数,根据网上流传的写法生成指定范围内的随机数如下 function random(min ...

  5. 解决Delphi图形化界面的TEdit、TLable等组件手动拖拽固定大小,但是编译之后显示有差别的情况

    经常遇到这样的情况,在我们使用Delphi的可视化工具进行UI设计的时候,我们拖拽TEdit或者Label组件,并且在可视化界面上设置它们的长.宽 但是当我们编译和运行程序的时候,却发现真正显示出来的 ...

  6. [JAVA] BlockingQueue学习

    有点时间,巩固巩固下基础知识:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤 ...

  7. WebRTC APM音频处理流程概述

    本文主要介绍WebRTC的APM. 现在主要介绍一下audio_processing.h. 首先插入了几个类,这些都是audio_processing的核心模块. class AudioFrame; ...

  8. 简单的后台json,前台解析 操作

    后台: List<PageData> KeyWords=plantDefDetailCSAService.findKeyWords(pd); JSONArray array = new J ...

  9. 激活Windows 8.1 RTM原来如此简单

    日前,Windows 8.1 RTM各种版本已经在坊间泄露开来,许多迫不及待的用户也开始跃跃欲试,但可能有人会疑惑,Windows 8.1RTM该如何激活?其实,它远比你想象的要简单. 实际上,Win ...

  10. 网友分享 调用dll的语音朗读 不能变速,不好

    调用   speeker.dll   这个文件被本人 放在文件里面,若有人需要可以 联系我 需要 mfc100ud.dll msvcr100d.dll 注:可以用D7 自带的ActiveX 里面的控件 ...