pt-archiver常用参数:

--limit 1000       每次取1000行数据用pt-archive处理SELECT /*!40001 SQL_NO_CACHE */ FORCE INDEX(`PRIMARY`) FROM WHERE ORDER BY `id` LIMIT 1000
--txn-size  2000   2000行是一个事务
--where ‘id<1000‘   设置操作条件
--progress 5000     每处理5000行输出一次处理信息
--statistics       输出执行过程及最后的操作统计。(只要不加上--quiet,默认情况下pt-archive都会输出执行过程的)
--charset=UTF8     指定字符集为UTF8
--bulk-delete      批量删除source上的旧数据DELETE FROM  WHERE  LIMIT 1000
--bulk-insert      批量插入数据到dest主机 LOAD DATA LOCAL INFILE  INTO TABLE
--replace          将insert into 语句改成replace写入到dest库
--sleep 1         每次归档了limit个行记录后的休眠1秒
--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-archiver使用:
/usr/bin/pt-archiver --source h=127.0.0.1,u=test,p=‘test’,D=‘test’,t=t1 --dest h=127.0.0.1,u=test,p=‘test’,D=‘test’,t=t1_old --where “id <= 10000” --limit=1000 --txn-size 2000 --progress 5000 --charset=utf8 --sleep 2 --no-version-check --bulk-delete --bulk-insert

数据库general日志:

2020-05-27T19:02:58.677725+08:00       44 Connect   test@127.0.0.1 on test using TCP/IP
2020-05-27T19:02:58.678219+08:00      44 Query set autocommit=0
2020-05-27T19:02:58.678600+08:00      44 Query /*!40101 SET NAMES "utf8"*/
2020-05-27T19:02:58.678830+08:00      44 Query SHOW VARIABLES LIKE 'wait\_timeout'
2020-05-27T19:02:58.679671+08:00      44 Query SET SESSION wait_timeout=10000
2020-05-27T19:02:58.679825+08:00      44 Query SELECT @@SQL_MODE
2020-05-27T19:02:58.679969+08:00      44 Query SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'*/
2020-05-27T19:02:58.680072+08:00      44 Query SELECT VERSION()
2020-05-27T19:02:58.680160+08:00      44 Query SHOW VARIABLES LIKE 'character_set_server'
2020-05-27T19:02:58.680586+08:00      44 Query SELECT version()
2020-05-27T19:02:58.680752+08:00      44 Query SHOW VARIABLES LIKE 'version%'
2020-05-27T19:02:58.681307+08:00      44 Query SHOW ENGINES
2020-05-27T19:02:58.681615+08:00      44 Query SHOW VARIABLES LIKE 'innodb_version'
2020-05-27T19:02:58.682256+08:00      44 Query show variables like 'innodb_rollback_on_timeout'
2020-05-27T19:02:58.682708+08:00      44 Query /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */
2020-05-27T19:02:58.682821+08:00      44 Query USE `test`
2020-05-27T19:02:58.682922+08:00      44 Query SHOW CREATE TABLE `test`.`t1`
2020-05-27T19:02:58.683363+08:00      44 Query /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */
2020-05-27T19:02:58.684008+08:00      45 Connect   test@127.0.0.1 on test using TCP/IP
2020-05-27T19:02:58.684145+08:00      45 Query set autocommit=0
2020-05-27T19:02:58.684272+08:00      45 Query /*!40101 SET NAMES "utf8"*/
2020-05-27T19:02:58.684374+08:00      45 Query SHOW VARIABLES LIKE 'wait\_timeout'
2020-05-27T19:02:58.684781+08:00      45 Query SET SESSION wait_timeout=10000
2020-05-27T19:02:58.684868+08:00      45 Query SELECT @@SQL_MODE
2020-05-27T19:02:58.684950+08:00      45 Query SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'*/
2020-05-27T19:02:58.685017+08:00      45 Query SELECT VERSION()
2020-05-27T19:02:58.685093+08:00      45 Query SHOW VARIABLES LIKE 'character_set_server'
2020-05-27T19:02:58.685477+08:00      45 Query SELECT version()
2020-05-27T19:02:58.685603+08:00      45 Query SHOW VARIABLES LIKE 'version%'
2020-05-27T19:02:58.686152+08:00      45 Query SHOW ENGINES
2020-05-27T19:02:58.686434+08:00      45 Query SHOW VARIABLES LIKE 'innodb_version'
2020-05-27T19:02:58.686970+08:00      45 Query show variables like 'innodb_rollback_on_timeout'
2020-05-27T19:02:58.687402+08:00      45 Query /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */
2020-05-27T19:02:58.687480+08:00      45 Query USE `test`
2020-05-27T19:02:58.687558+08:00      45 Query SHOW CREATE TABLE `test`.`t1_old`
2020-05-27T19:02:58.687746+08:00      45 Query /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */
2020-05-27T19:02:58.688011+08:00      44 Query SHOW VARIABLES LIKE 'wsrep_on'
2020-05-27T19:02:58.688409+08:00      44 Query SHOW VARIABLES LIKE 'wsrep_on'
2020-05-27T19:02:58.688976+08:00      44 Query SHOW VARIABLES LIKE 'version%'
2020-05-27T19:02:58.689442+08:00      44 Query SHOW ENGINES
2020-05-27T19:02:58.689701+08:00      44 Query SHOW VARIABLES LIKE 'innodb_version'
2020-05-27T19:02:58.690342+08:00      44 Query SELECT MAX(`id`) FROM `test`.`t1`
2020-05-27T19:02:58.691268+08:00      44 Query SELECT /*!40001 SQL_NO_CACHE */ `id`,`name`,`age` FROM `test`.`t1` FORCE INDEX(`PRIMARY`) WHERE (id <= 10000) AND (`id` < '1315290') ORDER BY `id` LIMIT 1000
2020-05-27T19:02:58.698625+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.700068+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.701400+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.702703+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.703993+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.705501+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.706896+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.708276+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.709726+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.711106+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.712624+08:00      45 Query LOAD DATA LOCAL INFILE '/tmp/lg8DHtw3rqpt-archiver' INTO TABLE `test`.`t1_old`CHARACTER SET utf8(`id`,`name`,`age`)
2020-05-27T19:02:58.721487+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:58.721721+08:00      44 Query DELETE FROM `test`.`t1` WHERE (((`id` >= '3'))) AND (((`id` <= '1999'))) AND (id <= 10000) LIMIT 10002020-05-27T19:02:59.726814+08:00     44 Query SELECT /*!40001 SQL_NO_CACHE */ `id`,`name`,`age` FROM `test`.`t1` FORCE INDEX(`PRIMARY`) WHERE (id <= 10000) AND (`id` < '1315290') AND ((`id` >= '1999')) ORDER BY `id` LIMIT 1000
2020-05-27T19:02:59.728508+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.729870+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.731177+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.732483+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.733773+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.735062+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.736375+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.737719+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.739009+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.740291+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.741722+08:00      45 Query LOAD DATA LOCAL INFILE '/tmp/8zGRE5N7wbpt-archiver' INTO TABLE `test`.`t1_old`CHARACTER SET utf8(`id`,`name`,`age`)
2020-05-27T19:02:59.750087+08:00      44 Query SELECT 'pt-archiver keepalive'
2020-05-27T19:02:59.750286+08:00      44 Query DELETE FROM `test`.`t1` WHERE (((`id` >= '2000'))) AND (((`id` <= '3506'))) AND (id <= 10000) LIMIT 1000
2020-05-27T19:03:03.871591+08:00           44 Query     SELECT /*!40001 SQL_NO_CACHE */ `id`,`name`,`age` FROM `test`.`t1` FORCE INDEX(`PRIMARY`) WHERE (id <= 10000) AND (`id` < '1315290') AND ((`id` >= '9552')) ORDER BY `id` LIMIT 1000
2020-05-27T19:03:03.872785+08:00           44 Query     SELECT 'pt-archiver keepalive'
2020-05-27T19:03:03.874139+08:00           44 Query     SELECT 'pt-archiver keepalive'
2020-05-27T19:03:03.875467+08:00           44 Query     SELECT 'pt-archiver keepalive'
2020-05-27T19:03:03.876763+08:00           44 Query     SELECT 'pt-archiver keepalive'
2020-05-27T19:03:03.878223+08:00           44 Query     SELECT 'pt-archiver keepalive'
2020-05-27T19:03:03.878915+08:00           45 Query     LOAD DATA LOCAL INFILE '/tmp/k0S6LnOY0Ept-archiver' INTO TABLE `test`.`t1_old`CHARACTER SET utf8(`id`,`name`,`age`)
2020-05-27T19:03:03.883104+08:00           44 Query     SELECT 'pt-archiver keepalive'
2020-05-27T19:03:03.883261+08:00           44 Query     DELETE FROM `test`.`t1` WHERE (((`id` >= '9553'))) AND (((`id` <= '10000'))) AND (id <= 10000) LIMIT 1000
2020-05-27T19:03:04.885979+08:00           44 Query     SELECT /*!40001 SQL_NO_CACHE */ `id`,`name`,`age` FROM `test`.`t1` FORCE INDEX(`PRIMARY`) WHERE (id <= 10000) AND (`id` < '1315290') AND ((`id` >= '10000')) ORDER BY `id` LIMIT 1000
2020-05-27T19:03:04.886893+08:00           45 Query     commit
2020-05-27T19:03:04.890389+08:00           44 Query     commit
2020-05-27T19:03:04.893221+08:00           44 Quit

pt-archiver步骤总结:

pt-archiver步骤原理:
--limit=1000 ,--bulk-delete ,--bulk-insertSELECT /*!40001 SQL_NO_CACHE */ FORCE INDEX(`PRIMARY`) FROM WHERE ORDER BY `id` LIMIT 1000LOAD DATA LOCAL INFILE  INTO TABLE DELETE FROM  WHERE  LIMIT 1000--limit=1000 ,--bulk-delete SELECT /*!40001 SQL_NO_CACHE */ FORCE INDEX(`PRIMARY`) FROM WHERE ORDER BY `id` LIMIT 1000INSERT INTO VALUES DELETE FROM  WHERE  LIMIT 1000

pt-archiver可能存在的问题:
大量测试发现,源库的批量查询和目标库的批量插入有先后顺序
大量测试发现,目标库的批量插入和源库的批量删除,并无先后顺序。

pt-archiver遇到的坑:
load data长时间 system lock
不支持utf8mb4

pt-archiver详解相关推荐

  1. pytorch模型(.pt)转onnx模型(.onnx)的方法详解(1)

    1. pytorch模型转换到onnx模型 2.运行onnx模型 3.比对onnx模型和pytorch模型的输出结果 我这里重点是第一点和第二点,第三部分  比较容易 首先你要安装 依赖库:onnx ...

  2. Android常用计量单位详解(px,in,mm,pt,dp,dip,sp)

    Android常用计量单位详解(px,in,mm,pt,dp,dip,sp) 在传统PC软件开发中经常以像素为单位设计计算机用户界面.例如,定义一个宽度为300像素的表单字段,列之间的间距为5个像素, ...

  3. DELPHI 中 Window 消息大全使用详解

    Window 消息大全使用详解 导读: Delphi是Borland公司的一种面向对象的可视化软件开发工具. Delphi集中了Visual C++和Visual Basic两者的优点:容易上手.功能 ...

  4. ORB-SLAM2代码/流程详解

    ORB-SLAM2代码详解 文章目录 ORB-SLAM2代码详解 1. ORB-SLAM2代码详解01_ORB-SLAM2代码运行流程 1 运行官方Demo 1.2. 阅读代码之前你应该知道的事情 1 ...

  5. 【C++】C++对象模型:对象内存布局详解(C#实例)

    C++对象模型:对象内存布局详解 0.前言 C++对象的内存布局.虚表指针.虚基类指针解的探讨,参考. 1.何为C++对象模型? 引用<深度探索C++对象模型>这本书中的话: 有两个概念可 ...

  6. H.264 基础及 RTP 封包详解

    一. h264基础概念 1.NAL.Slice与frame意思及相互关系 1 frame的数据可以分为多个slice. 每个slice中的数据,在帧内预测只用到自己slice的数据, 与其他slice ...

  7. 【OpenCV 4开发详解】点集拟合

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  8. 【OpenCV 4开发详解】窗口交互操作

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  9. vuepdf转换html,Vue网页html转换PDF(最低兼容ie10)的思路详解

    Vue网页html转换PDF(最低兼容ie10)的思路详解 发布时间:2020-10-16 13:05:09 来源:脚本之家 阅读:95 作者:冷藏封 HTML转PDF: 1.页面底层实现--Vue: ...

  10. jboss7 应用详解_COMSOL Multiphysics多物理场仿真技术与应用光电专题线上培训

    在工程实际中,很多多物理场耦合作用下的实验缺少开展条件,且无具体的理论指导设计,必须采用数值仿真的方法来研究和测评.COMSOL Multiphysics具有高效的计算性能和独特的多物理场全耦合分析能 ...

最新文章

  1. 一篇关于java变量定义的文章
  2. python爬虫教程i-Python 爬虫速成教程,还有35个实战项目送给你!
  3. python创建新文件-Python创建文件和追加文件内容实例
  4. 用python画常密度轮廓线,如何使用Matplotlib在极坐标中绘制具有等高线密度线的散点图?...
  5. 口罩热销卖断货,有的商家却坐地涨价,中国青年报:电商不该借机发疫情财...
  6. Ubuntu中zabbix 4.2.6监控postgresql数据库
  7. 如何在Linux中符号链接文件? [关闭]
  8. Docker离线安装教程(Centos7) 转帖
  9. 关于Ext checkboxfiled 获取值为 on的解决办法
  10. 手持式频谱分析仪TFN FMT650频谱分析 干扰分析 干扰定位 地图覆盖
  11. eps、emf等图片格式转换
  12. 客户端第二次连接失败,SYN包发了,没有收到服务端回 SYN+ACK ,SYN包被丢弃了
  13. word2010中插入脚注和尾注
  14. 第三十章 被动语态
  15. 医院信息系统源码 HIS源码
  16. 【云IDE】取次花丛懒回顾
  17. GYM 2015 ACM Syrian Collegiate Programming Contest
  18. 键盘上F1~F12各个功能键的作用
  19. 用QQ群推广网站的方法
  20. 学习GAN必须阅读的10篇论文

热门文章

  1. 计算机游戏锁怎么打开,键盘锁住了怎么解锁_解锁键盘步骤操作一览
  2. vue、js onSelect事件 获取选中的值
  3. ps 制作gif动图以及一些问题
  4. 起点中文网乘“盛大”之势打通产业供应链
  5. HTML 后台管理页面布局
  6. js实现手机横竖屏事件
  7. 美国计算机专业工资排名,美国大学薪酬概况及毕业生薪资排名前50的学校
  8. 日历时间选择 开始时间到结束时间
  9. 图灵奖得主都写过哪些书?
  10. 2022,程序员的出路在哪里?