免费下载网站模版,php项目开发案例源码,wordpress瀑布流图片,济宁网站建设seo记录一下2年前的MySQL大表的归档#xff0c;当时刚到公司#xff0c;发现MySQL的业务核心库#xff0c;超过亿条的有7张表#xff0c;最大的表有9亿多条#xff0c;有37张表超过5百万条#xff0c;部分表行数如下#xff1a; 在测试的MySQL环境 #xff1a; pt-archiv… 记录一下2年前的MySQL大表的归档当时刚到公司发现MySQL的业务核心库超过亿条的有7张表最大的表有9亿多条有37张表超过5百万条部分表行数如下 在测试的MySQL环境 pt-archiver 工具测试200的dev实例5800万条数据纯删除1000万条数据花费约9分多钟。 pt-archiver --source h172.17.0.1,udev_op,ppwd,P3306,Dtest,tcc --statistics --no-check-charset --where id13000000 --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 -ppwd -h172.17.16.126 -P3306 --set-gtid-purgedOFF -t --default-character-setutf8mb4 --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.sqlpt-archiver删除数据 例子 -从库4和5延迟30秒暂停停止删除 pt-archiver --source h172.17.16.12,udba_op,ppwd,P3306,Dde_db,tuser_detail --statistics --no-check-charset --where exam_id in (select exam_id from exam where app_id in (gzdsl)) --limit 100000 --max-lag30 --check-slave-lag udba_op,ppwd,h172.17.16.106,P3306 --check-slave-lag udba_op,ppwd,h172.17.16.4,P3306 --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 h172.17.16.12,udba_op,ppwd,P3306,Dde_db,tgp_mem --statistics --no-check-charset --where sys_user_id in (select sys_user_id from db_bak.t1) --limit 200000 --max-lag20 --check-slave-lag udba_op,ppwd,h172.17.16.106,P3306 --commit-each --progress 3000000 --bulk-delete --primary-key-only --run-time100m --purge2每个表写一个shell文件调度执行 3删除完成后重建表释放表的空间 pt-online-schema-change --alter engineinnodb h172.17.16.78,P3306,ppwd,udev_op,Dsg_bak,tuser_detail --charsetutf8mb4 --no-check-replication-filters --recursion-methodnone --execute