相关文章推荐
失眠的荒野  ·  使用参数使视图更具交互性 - Tableau·  昨天    · 
慷慨大方的毛巾  ·  MySQL学习笔记:Group ...·  昨天    · 
眼睛小的消防车  ·  python网络请求失败_Python ...·  1 年前    · 
豪气的枕头  ·  Electron App 在 MacOS ...·  1 年前    · 
高大的眼镜  ·  其实俺不想换电脑的_苹果_棋谱_支持·  2 年前    · 
善良的烤地瓜  ·  Android-代码设置图片大小及位置_Vi ...·  2 年前    · 
Code  ›  pt-archiver 归档表到文件 - 墨天轮
t1 select
https://www.modb.pro/db/569692
爱旅游的遥控器
1 年前
  • 学习
    • 课程中心
      推荐优质内容、热门课程
    • 学习路径
      预设学习计划、达成学习目标
    • 知识图谱
      综合了解技术体系知识点
    • 课程库
      快速筛选、搜索相关课程
    • 视频学习
      专业视频分享技术知识
    • 电子文档
      快速搜索阅览技术文档
  • 文档
  • 工具
    • SQLRUN
      在线数据库即时SQL运行平台
    • 数据库在线实训平台
      实操环境、开箱即用、一键连接
    • Oracle巡检
      简单两步,查看报告分析
    • AWR分析
      上传AWR报告,查看分析结果
    • SQL格式化
      快速格式化绝大多数SQL语句
    • SQL审核
      审核编写规范,提升执行效率
    • PLSQL解密
      解密超4000字符的PL/SQL语句
    • OraC函数
      查询Oracle C 函数的详细描述
    • Bethune X
      数据库智能监控巡检平台,90天试用
  • 暂无图片
    • 数据库
    • 云计算
    • 数据产品
    • 中间件
    • 操作系统
    • 芯片
  • 我的订单
  • 登录后可立即获得以下权益
    免费培训课程
    收藏优质文章
    疑难问题解答
    下载专业文档
    签到免费抽奖
    提升成长等级
    立即登录
    登录 注册
      • 登录 注册
    • 首页
    • 资讯
    • 数说
    • 活动
    • 大会
    • 课程
    • 文档
    • 排行
    • 问答
    • 云市场
    • 我的订单
    暂无图片
    觉得内容不错?
    一键收藏 方便随时查看
    暂无图片
    暂无图片
    微信扫码
    复制链接
    新浪微博
    分享数说
    暂无图片
    采集到收藏夹
    分享到数说
    首页 / pt-archiver 归档表到文件

    pt-archiver 归档表到文件

    huayumicheng 2022-11-29
    372

    1、 pt-archiver 用途

    1、清理线上过期数据;
    2、导出线上数据,到线下数据作处理;
    3、清理过期数据,并把数据归档到本地归档表中,或者远端归档服务器。

    2、安装pt-archiver

    yum install perl-DBD-MySQL perl-DBI perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-CPAN perl-IO-Socket-SSL  perl-Time-HiRes  perl-TermReadKey  -y 
    rpm -ivh percona-toolkit-3.3.1-1.el7.x86_64.rpm 

    3、新建测试表,导入数据

    注意:pt-archiver操作的表必须有主键
    CREATE TABLE `t1` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `row_create_time` datetime DEFAULT CURRENT_TIMESTAMP,
      `row_lastupdate_time` datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8mb4;
    mysql> select count(*) from t1;
    +----------+
    | count(*) |
    +----------+
    |   667648 |
    +----------+
    mysql> select round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) as size_MB from information_schema.TABLES where TABLE_SCHEMA='mydb' and table_name='t1'; +---------+ | size_MB | +---------+ | 26.56 | +---------+

    4、归档数据到文件

    --场景1-1:全表归档,不删除原表数据,归档到文件
    [root@mysql4 ~]# pt-archiver --source h=192.168.100.23,P=3306,u=test,p='123456',D=mydb,t=t1  --no-check-charset --file=/tmp/archive.save --where '1=1' --progress 10000 --limit=10000 --txn-size 10000 --statistics --no-safe-auto-increment --no-delete
    --summary
    Started at 2022-05-07T21:00:53, ended at 2022-05-07T21:01:05
    Source: D=mydb,P=3306,h=192.168.100.23,p=...,t=t1,u=test
    SELECT 667648
    INSERT 0
    DELETE 0
    Action          Count       Time        Pct
    select             68     0.4924       4.10
    commit             67     0.0082       0.07
    print_file     667648    -1.7458     -14.53
    other               0    13.2583     110.37
    [root@mysql4 ~]# ls -lh /tmp/archive.save 
    -rw-r--r-- 1 root root 30M May  7 21:01 /tmp/archive.save
    --加载文件到数据库
    mysql> load data local infile "/tmp/archive.save" into table mydb.t1;
    Query OK, 667648 rows affected (3.01 sec)
    Records: 667648  Deleted: 0  Skipped: 0  Warnings: 0
    --场景1-2:id<1001,不删除原表数据,归档到文件
    [root@mysql4 ~]# pt-archiver --source h=192.168.100.23,P=3306,u=test,p='123456',D=mydb,t=t1  --no-check-charset --file=/tmp/archive.save --where 'id<1001' --progress 10000 --limit=10000 --txn-size 10000 --statistics --no-safe-auto-increment --no-delete
    TIME                ELAPSED   COUNT
    2022-05-07T21:22:10       0       0
    2022-05-07T21:22:10       0     682
    Started at 2022-05-07T21:22:10, ended at 2022-05-07T21:22:10
    Source: D=mydb,P=3306,h=192.168.100.23,p=...,t=t1,u=test
    SELECT 682
    INSERT 0
    DELETE 0
    Action          Count       Time        Pct
    select              2     0.0014      10.80
    commit              1     0.0004       2.88
    print_file        682    -0.0002      -1.21
    other               0     0.0110      87.53

    --场景1-3:id>=1 and id<10001,不删除原表数据,归档到文件 [root@mysql4 ~]# pt-archiver --source h=192.168.100.23,P=3306,u=test,p='123456',D=mydb,t=t1 --no-check-charset --file=/tmp/archive.save --where 'id>=1 and id<10001' --progress 10000 --limit=10000 --txn-size 10000 --statistics --no-safe-auto-increment --no-delete TIME ELAPSED COUNT 2022-05-07T21:26:24 0 0 2022-05-07T21:26:24 0 7081 Started at 2022-05-07T21:26:24, ended at 2022-05-07T21:26:24 Source: D=mydb,P=3306,h=192.168.100.23,p=...,t=t1,u=test SELECT 7081 INSERT 0 DELETE 0 Action Count Time Pct select 2 0.0057 5.10 commit 1 0.0004 0.35 print_file 7081 0.0001 0.07 other 0 0.1061 94.48

    5、常用参数

    
    --常用参数
    --where 'id<3000'	设置操作条件
    --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主机 (看dest的general log发现它是通过在dest主机上LOAD DATA LOCAL INFILE插入数据的)
    
     
    推荐文章
    失眠的荒野  ·  使用参数使视图更具交互性 - Tableau
    昨天
    慷慨大方的毛巾  ·  MySQL学习笔记:Group By是否允许SELECT非聚合列_mysql group by 非聚合列
    昨天
    眼睛小的消防车  ·  python网络请求失败_Python POST请求失败,[Errno 10054]远程主机强行关闭了现有连接...-CSDN博客
    1 年前
    豪气的枕头  ·  Electron App 在 MacOS 下 申请摄像头及麦克风权限踩坑指南 - 掘金
    1 年前
    高大的眼镜  ·  其实俺不想换电脑的_苹果_棋谱_支持
    2 年前
    善良的烤地瓜  ·  Android-代码设置图片大小及位置_Vivinia_Vivinia的博客-CSDN博客
    2 年前
    今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
    删除内容请联系邮箱 2879853325@qq.com
    Code - 代码工具平台
    © 2024 ~ 沪ICP备11025650号