MySQL核心业务大表归档过程

embedded/2024/11/13 9:26:25/

      记录一下2年前的MySQL大表的归档,当时刚到公司,发现MySQL的业务核心库,超过亿条的有7张表,最大的表有9亿多条,有37张表超过5百万条,部分表行数如下:

       

      在测试的MySQL环境  :

      pt-archiver 工具,测试200的dev实例,5800万条数据,纯删除1000万条数据,花费约9分多钟。  

  pt-archiver --source h=172.17.0.1,u=dev_op,p='pwd',P=3306,D=test,t=cc  --statistics --no-check-charset --where " id<=13000000" --limit 60000   --commit-each 
--progress 1000000 --bulk-delete --primary-key-only --purge

    和研发,产品讨论如何删除这些大表的没用的数据,确定后,是删除部分没有续约和不合作客户的数据,这些企业的id,由产品部门确认后,给了给列表。

 查询后,这些大表都有比较大的数据行数删除,最大的9亿多条表可以删除出2.3亿条数据,如何备份和删除这2.3亿条数据?

      1,使用腾讯云的数据迁移工具,把整个表备份后,通过pt-archiver 工具删除。 大表不适用

     这样备份可以批量进行,删除可以慢慢删除,小表备份可以,但是对于大表,就多备份了6,7亿条数据。占用空间

      2,可以使用mysqldump工具通过查询备份删除的数据,在通过pt-archiver 工具删除。 小表不适用

     千万级别以下小表就比较麻烦。对于亿级别以上的大表就比较好,如下:    

-- 导出单表
mysqldump -udba_op -p'pwd'  -h172.17.16.126 -P3306 --set-gtid-purged=OFF -t --default-character-set=utf8mb4  --skip-lock-tables  de_db  exam_detail  --where=" exam_id in (select exam_id from  exam   where app_id in (select app_id from bak.t_app_2022)) " >/data1/ex.sql-- 在备份MySQL还原
source /data1/ex.sql

   pt-archiver删除数据:

   例子: -从库4和5延迟30秒,暂停停止删除   

pt-archiver --source h=172.17.16.12,u=dba_op,p='pwd',P=3306,D=de_db,t=user_detail  --statistics --no-check-charset --where " exam_id in (select exam_id from  exam   where app_id in ('gzdsl'))" --limit 100000  --max-lag=30 --check-slave-lag  u=dba_op,p='pwd',h=172.17.16.106,P=3306 --check-slave-lag  u=dba_op,p='pwd',h=172.17.16.4,P=3306 --commit-each --progress 3000000 --bulk-delete --primary-key-only --purge
--primary-key-only  指定进行DELETE清除时最有效,因为只需读取主键一个字段而无需读取行所有字段
--purge 指定执行的删除操作
--limit 100000 每次删除10万行,可以根据情况调整
--dry-run 打印查询需要清除数据的执行语句,做好确认之后再执行

最后处理:

 1,对于9亿条的数据,修改pt脚本,确定执行最长时间--run-time和延迟时间20秒,减少对系统的影响,类似修改如下:
pt-archiver --source h=172.17.16.12,u=dba_op,p='pwd',P=3306,D=de_db,t=gp_mem  --statistics --no-check-charset --where " sys_user_id in  (select sys_user_id from db_bak.t1)  " --limit 200000  --max-lag=20 --check-slave-lag  u=dba_op,p='pwd',h=172.17.16.106,P=3306  --commit-each --progress 3000000 --bulk-delete --primary-key-only --run-time=100m  --purge

        2,每个表写一个shell文件,调度执行

        3,删除完成后,重建表释放表的空间      

pt-online-schema-change  --alter " engine=innodb  " h=172.17.16.78,P=3306,p='pwd',u=dev_op,D=sg_bak,t=user_detail --charset=utf8mb4 --no-check-replication-filters --recursion-method=none --execute

http://www.ppmy.cn/embedded/136457.html

相关文章

Webserver(5.4)项目整体

目录 http_conn.hhttp_conn.cpplocker.hmain.cppthreadpool.h编译并创建线程池 http_conn.h #ifndef HTTPCONNECTION_H #define HTTPCONNEVTION_H #include<sys/epoll.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<signa…

day07(单片机)中断

目录 中断 基本概念 中断的意义 中断处理过程(背过) 中断体系结构 NVIC 1&#xff09;管理中断事件&#xff08;清除、挂起&#xff09; 2&#xff09;支持中断向量化处理&#xff08;向量表&#xff09; 3&#xff09;支持中断嵌套 &#xff08;优先级&#xff09; E…

【AI抠图整合包及教程】Meta SAM2:引领图像和视频分割技术的新纪元

在人工智能的浪潮中&#xff0c;Meta公司再次以Segment Anything Model 2&#xff08;SAM 2&#xff09;引领了图像和视频分割技术的新纪元。SAM 2的发布不仅为计算机视觉领域的研究和发展注入了新的活力&#xff0c;还预示着这一技术将在多个行业中找到广泛的应用场景。这一创…

InfluxDB性能优化指南

1. 引言 1.1 InfluxDB的简介与发展背景 InfluxDB是一个开源的时间序列数据库&#xff08;TSDB&#xff09;&#xff0c;由InfluxData公司开发&#xff0c;专门用于处理高频率的数据写入和查询。其设计初衷是为物联网、应用程序监控、DevOps和实时分析等场景提供一个高效的存储…

HTML CSS H5C3样式语句汇总20241105

样式语句汇总&#xff1a; ----------------------------------样式设置------------------------------------ 盒子&#xff1a; border: 1px solid #000; 设置边框粗细、实线、颜色&#xff1b; margin: 0 auto; 盒子居中&#xff08;顺时针&#xff09;上0、右自适、下0、…

量化交易系统开发-实时行情自动化交易-Okex行情交易数据

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来聊聊基于Okex交易所API获取行情数…

广义主从同步问题

广义主从同步问题&#xff08;Generalized Master-Slave Synchronization Problem&#xff09;通常涉及两个或多个动态系统&#xff0c;其中一个系统作为“主系统”&#xff08;master system&#xff09;&#xff0c;而其他系统作为“从系统”&#xff08;slave systems&#…

深入探讨Java中的File类

深入探讨Java中的File类 在Java编程中&#xff0c;文件和目录的操作是非常常见的需求&#xff0c;java.io.File 类则提供了对文件和目录进行操作的多种方法。虽然 File 类本质上并不提供对文件内容的读取和写入功能&#xff0c;但它是管理文件路径、判断文件状态、创建文件及目…