mysql5.6查看归档_MySQL5.6 使用 pt-archiver 分批删除、归档数据

pt-archiver是一个十分高效的表数据归档工具,归档数据可以分批进行事务处理,减少性能消耗;

如果实例开启了GTID,因为GTID不支持CTAS创建表的语法,可以使用pt-archiver处理;

对于跨实例或者跨服务器的表数据归档,pt-archiver可以运行在目标端服务器,因为生成的临时文件是在工具执行所在的服务器。

对于大表的过期数据的批量删除也可以通过pt-archiver指定选项--purge进行处理。

8509cdfc1ddf

QQ截图20200701150725.png

需要清理的表的信息

mysql> select count(*) from fwk_biz_log;

+----------+

| count(*) |

+----------+

| 4347412 |

+----------+

1 row in set (1.05 sec)

mysql> select count(*) from fwk_biz_log where T_LOG_DATE BETWEEN '2018-08-01' AND '2018-09-01';

+----------+

| count(*) |

+----------+

| 11092 |

+----------+

1 row in set (0.01 sec)

删除数据

将2019-09-01之前的日志删除,查看数据库磁盘使用状态

通过 --drt-run 打印查询需要清除数据的执行语句,确认执行内容

[root@VM_100_3_centos ~]# pt-archiver --source h=10.41.98.234,D=ipcis_cloud,t=fwk_biz_log --user=user --password=pass --purge --where "T_LOG_DATE BETWEEN '2019-09-01' AND '2019-10-01'" --dry-run

SELECT /*!40001 SQL_NO_CACHE */ `n_log_id`,`t_log_date`,`c_log_file`,`c_log_line`,`c_log_thread`,`c_log_level`,`c_log_message`,`c_log_messagea`,`c_log_messageb`,`c_log_messagec` FROM `ipcis_cloud`.`fwk_biz_log` FORCE INDEX(`PRIMARY`) WHERE (T_LOG_DATE BETWEEN '2019-09-01' AND '2019-10-01') AND (`n_log_id` < '29476920') ORDER BY `n_log_id` LIMIT 1

SELECT /*!40001 SQL_NO_CACHE */ `n_log_id`,`t_log_date`,`c_log_file`,`c_log_line`,`c_log_thread`,`c_log_level`,`c_log_message`,`c_log_messagea`,`c_log_messageb`,`c_log_messagec` FROM `ipcis_cloud`.`fwk_biz_log` FORCE INDEX(`PRIMARY`) WHERE (T_LOG_DATE BETWEEN '2019-09-01' AND '2019-10-01') AND (`n_log_id` < '29476920') AND ((`n_log_id` >= ?)) ORDER BY `n_log_id` LIMIT 1

DELETE FROM `ipcis_cloud`.`fwk_biz_log` WHERE (`n_log_id` = ?)

执行删除

删除 2019-09-01 之前的数据

[root@VM_100_3_centos ~]# pt-archiver --source h=10.41.98.234,D=ipcis_cloud,t=fwk_biz_log --user=user --password=pass --purge --where "T_LOG_DATE

[root@VM_100_3_centos ~]#

mysql> select * from fwk_biz_log WHERE T_LOG_DATE

Empty set (0.00 sec)

mysql> select count(*) from fwk_biz_log ;

+----------+

| count(*) |

+----------+

| 4238760 |

+----------+

1 row in set (0.93 sec)

删除 2019-09-01 跟 2019-10-01 之间的数据

[root@VM_100_3_centos ~]# pt-archiver --source h=10.41.98.234,D=ipcis_cloud,t=fwk_biz_log --user=user --password=pass --purge --where "T_LOG_DATE BETWEEN '2019-09-01' AND '2019-10-01'"

[root@VM_100_3_centos ~]#

mysql> select * from fwk_biz_log WHERE T_LOG_DATE

Empty set (0.00 sec)

mysql>

mysql>

mysql> select count(*) from fwk_biz_log ;

+----------+

| count(*) |

+----------+

| 4234534 |

+----------+

1 row in set (1.11 sec)

在腾讯云上验证

8509cdfc1ddf

图片.png

碎片空间增加了,没有解决碎片的问题。

归档数据

将2019-11月的日志归档到 fwk_biz_log_201911表中

创建归档表

归档数据

[root@VM_100_3_centos ~]# pt-archiver --source h=10.41.98.234,D=ipcis_cloud,t=fwk_biz_log --dest h=10.41.98.234,D=ipcis_cloud,t=fwk_biz_log_201912 --user=user --password=pass --where "T_LOG_DATE BETWEEN '2019-12-01' AND '2020-01-01'" --limit 1000 --commit-each

查看归档结果

mysql> select * from fwk_biz_log_201912 limit 1;

+----------+---------------------+---------------------+------------+--------------+-------------+---------------+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+

| N_LOG_ID | T_LOG_DATE | C_LOG_FILE | C_LOG_LINE | C_LOG_THREAD | C_LOG_LEVEL | C_LOG_MESSAGE | C_LOG_MESSAGEA | C_LOG_MESSAGEB | C_LOG_MESSAGEC |

+----------+---------------------+---------------------+------------+--------------+-------------+---------------+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+

| 24872794 | 2019-12-01 18:57:41 | PayServiceImpl.java | 458 | svc-#233642 | INFO | 签约申请 | applySign | {"payType":"2","dataSrc":"66","signature":"3fc5094c38f20aaf6ce9a3d56e9ad27b","bankCode":"ICBC","accountType":"00","accountNo":"6222081812002930000","accountName":"小明","idType":"8","id":"110000199102058366","tel":"18511991009"} | |

+----------+---------------------+---------------------+------------+--------------+-------------+---------------+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+

1 row in set (0.00 sec)

mysql> select * from fwk_biz_log limit 1;

+----------+---------------------+------------------------+------------+--------------+-------------+------------------------------------------------------+-----------------------+----------------+----------------+

| N_LOG_ID | T_LOG_DATE | C_LOG_FILE | C_LOG_LINE | C_LOG_THREAD | C_LOG_LEVEL | C_LOG_MESSAGE | C_LOG_MESSAGEA | C_LOG_MESSAGEB | C_LOG_MESSAGEC |

+----------+---------------------+------------------------+------------+--------------+-------------+------------------------------------------------------+-----------------------+----------------+----------------+

| 25256968 | 2020-01-01 00:00:01 | PolicyServiceImpl.java | 1994 | svc-#899 | INFO | 更新到期保单状态Wed Jan 01 00:00:00 CST 2020 | UpdateExpirePlyStatus | ListCPkgNos:[] | |

+----------+---------------------+------------------------+------------+--------------+-------------+------------------------------------------------------+-----------------------+----------------+----------------+

1 row in set (0.00 sec)

mysql> select count(*) from fwk_biz_log_201912;

+----------+

| count(*) |

+----------+

| 6435 |

+----------+

1 row in set (0.00 sec)

--limit

type: int; default: 1

每个片段(statement)查询和归档的行数设置。

限制每个SELECT statements查询归档的行数。默认是 1 。提升Limit限制可以更高效,但是如果你想通过设置很多行来减少归档次数需要慎重考虑。这可能会导致其他查询的问题,取决于存储引擎,事务隔离级别,以及配置项比如 "--for-update"。

--txn-size

type: int; default: 1

每个事务的行数。

指定每个事务处理的行数。0 关闭transactions altogether。在 pt-archiver 处理这些行后,它提交 "--source" 和 "--dest" (如果有的话),并且刷新"--file"配置的文件。

这个参数对性能很重要。如果你正在归档一个正在运行的服务器,比如大量OLTP任务的服务器,你需要在 transaction size 和 commit overhead 权衡。大的事务可能会导致更多锁和死锁,小的事务会导致更频繁的提交。为了提供建议参数,这里做了个小测试。在个人PC的MySQL实例上,归档到文件或其他表。设置值为500,性能约为每千行2秒。 设置为0关闭transactions,开启autocommit,性能降低到每千行38秒。

如果你不是事务存储引擎归档,或者归档到事务存储引擎,你可以关闭 transactions ,这样pt-archiver就不会 commit了。

--commit-each

提交每次查询归档 (disables "--txn-size")。

在每个归档后、下个查询前(在sleep前,如果配置 了"--sleep"),提交事务,刷新 "--file" 。

禁用"--txn-size"; 使用 "--limit" 来控制"--commit-each"的事务内容数量。

该配置项常用,作为配置 "--limit" 和 "--txn-size" 同样值的缩略写法。 但是更重要的是,它避免了在查询很多行的时候,事务一直在运行。比如,设想从一个非常大的表的开始位置归档旧数据,配置"--limit" 1000 和 "--txn-size" 1000。 在一次归档1000行后,pt-archiver查找最近的999行然后归档,然后执行下一个SELECT来获取更多行。这会扫描剩下的表空间,但是没有获取更多行。它长时间保持开启事务,仅用来判断任务是否结束了。可以使用 "--commit-each" 参数来避免这些问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Microsoft宣布将停止支持多个 .NET Framework版本

Microsoft 宣布&#xff0c;使用传统的、不安全的安全哈希算法1&#xff08;SHA-1&#xff09;签名的多个 .NET 框架版本将在明年停止支持。据 .NET 首席工程经理 Jamshed Damkewala 表示&#xff0c;.NET 框架 4.5.2、4.6 和 4.6.1 将在 2022 年 4 月 26 日后停止支持&#xf…

算法有偏见?总比人类识别强吧!

在讨伐算法导致的偏见和产生的作用时&#xff0c;更重要的问题是&#xff1a;与完全没有使用算法的情况相比是怎样的&#xff1f;我们应该比较算法的缺陷与人类的缺陷&#xff0c;而不是简单地询问算法是否存在缺陷。一场革命正在悄然进行。这场革命与大部分新闻报道中出现的人…

通过Dapr实现一个简单的基于.net的微服务电商系统(八)——一步一步教你如何撸Dapr之链路追踪

Dapr提供了一些开箱即用的分布式链路追踪解决方案&#xff0c;今天我们来讲一讲如何通过dapr的configuration来实现非侵入式链路追踪的目录&#xff1a;一、通过Dapr实现一个简单的基于.net的微服务电商系统二、通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架…

21副酷炫的动图让你了解各种数学概念

数学是很难的科学&#xff0c;但因为它是科学家用数学来解释宇宙的语言&#xff0c;我们无可避免的要学习它。看看下面的这些GIF动图&#xff0c;它们提供了视觉的方式来帮助你理解各种数学技巧。1椭圆的画法2杨辉三角问题(Pascal triangles)解法3使用“FOIL”轻松的解决二项式…

VMware 虚拟机(linux)增加根目录磁盘空间

今天查看学校的监控报修系统&#xff0c;不能访问了&#xff01;&#xff01;&#xff01;系统运行很慢&#xff0c;用top命令查看发现内存使用率90%&#xff0c;用"df -h ”查看“/”目录使用率已达到80%&#xff0c;导致系统运行很慢。我用以下方法扩大根目录磁盘空间。…

网关Ocelot功能演示完结,久等了~~~

前言关于网关(Ocelot)的分享&#xff0c;还遗留一些功能没演示呢&#xff0c;接着来聊聊&#xff1b;这次重点针对网关Ocelot使用缓存、集成Polly做服务治理、集成IdentityServer4做认证授权来详细说说&#xff1b;如果对上一篇感兴趣&#xff0c;点这里(网关Ocelot功能演示安排…

数学课本上的几大变态

数学课本上的几大变态数据与算法之美用数据解决不可能长按扫码关注

牛逼顿的一生:当智商高到一定程度,情商就不重要了

牛顿老师在科学圈里曾经很有权势&#xff0c;被女王封了爵位成了贵族&#xff0c;人称牛爵爷&#xff0c;官至皇家造币局局长兼皇家学会会长。如果阿尔伯特没有辞了以色列总统的话和他有一拼。说他有权势并不仅是官大&#xff0c;主要是贡献大。如果17世纪就有诺贝尔奖的话&…

趣味图解+源码分析,轻松吃透Linux

如今的软件开发行业&#xff0c;服务器端市场基本被 Linux 系统占领了。移动端中的 Android 系统是基于 Linux 内核开发的&#xff0c;那些很火的虚拟化、消息队列、云计算、大数据等技术&#xff0c;都默认支持 Linux 操作系统。而对软件工程师来说&#xff0c;也几乎一定会遇…

java 发送tcp_Java TCP发送与接收

IP地址&#xff1f;端口号&#xff1f;主机名&#xff1f;什么是Socket?什么是UDP&#xff1f;什么是TCP&#xff1f;UDP和TCP区别&#xff1f;以上问题请自行百度&#xff0c;有标准解释&#xff0c;此处不再赘述&#xff0c;直接上干货&#xff01;实例&#xff1a;发送端&a…

从零维到十维空间

事情是这样的&#xff0c;这周我给学生讲3dmax的课。为了让学生了解三视图我就顺便科普了一下什么是零维、一维、二维、三维空间。讲完不过瘾&#xff0c;感觉一支粉笔一块黑板讲维度是一件很爽的事情&#xff0c;那么.........接下来请同学们打开脑洞&#xff0c;看我用一支笔…

如何更好使用多线程

说到线程相信很多开发人员都会认为只要使用了多线程技术服务性能就会提高很多&#xff0c;但涉及过渡使用问题就很少人去了解。在使用上更多是了解是创建&#xff0c;使用&#xff0c;销毁或使用线程池之类的。但这些资料更多是如何使用线程&#xff0c;但对于应用怎样针对性规…

前端又一本升级版图书上市了,听说比第一版还好看

哇&#xff01;听说《Node.js实战&#xff08;第2版&#xff09;》来了&#xff1f;没错&#xff01;这本让读者久等了的书&#xff0c;终于上市啦&#xff01;最近的升级版图书还是很多的&#xff0c;但是小伙伴对这本的期待值依旧不减&#xff01;毕竟第一版在豆瓣上获得了 8…

人气TOP|当红炸子鸡「小明机器人」,出道走花路啦

在全球新一轮技术革命的时代背景下&#xff0c;越来越多的企业走上了数字化之路。伴随着企业对数字化转型的持续关注&#xff0c;各行各业对“数字化员工”即RPA&#xff08;机器人流程自动化&#xff0c;Robotic Process Automation&#xff09;的需求也越发旺盛&#xff0c;都…

MFC和Win32之三___CGdiObject类和windows Gdi对象

小结&#xff1a; 前面讲到的windows窗口对象&#xff0c;在windows下用句柄来代表之&#xff0c;并且用了一个数据结构WNDCLASS&#xff08;窗口类&#xff09;来描述之。同理&#xff0c;windows的Gdi对象也有一些句柄来代表之&#xff08;比如hPen等&#xff09;&#xff0c…

java io流 教程_Java基础教程:IO流与文件基础

Java:IO流与文件基础说明&#xff1a;本章内容将会持续更新&#xff0c;大家可以关注一下并给我提供建议&#xff0c;谢谢啦。走进流什么是流流&#xff1a;指的是从源到目的地的字节的有序序列。在Java中&#xff0c;可以从其中读取一个字节序列的对象称作 输入流&#xff0c;…

用数学模型向你解释离婚

A Mathematical Model of Sentimental Dynamics Accounting for Marital Dissolution解释离婚的情感动力学数学模型背景西方社会的离婚是普遍存在的。它提出了重大的科学和社会学问题&#xff0c;不管是理论上还是解决方式上。学者和问题处理专家认为存在一种情感关系热力学第二…

记一次 .NET医疗布草API程序 内存暴涨分析

一&#xff1a;背景 1. 讲故事我在年前写过一篇关于CPU爆高的分析文章 再记一次 应用服务器 CPU 暴高事故分析 &#xff0c;当时是给同济做项目升级&#xff0c;看过那篇文章的朋友应该知道&#xff0c;最后的结论是运维人员错误的将 IIS 应用程序池设成 32bit 导致了事故的发生…

自已做的第一个autoconf程序(不断完善中)

2019独角兽企业重金招聘Python工程师标准>>> 1、先写个简单的main函数&#xff0c;并按如下目录结构存放&#xff1a; timesync-- |--conf |--include |--lib |--src 2、在最上层目录下&#xff0c;执行autoscan&#xff0c;生成configure.scan&#xff0c;并改名为…

轻松看懂机器学习十大常用算法

通过本篇文章大家可以对ML的常用算法形成常识性的认识。没有代码&#xff0c;没有复杂的理论推导&#xff0c;仅是图解&#xff0c;介绍这些算法是什么以及如何应用&#xff08;例子主要是分类问题&#xff09;。以后有机会再对单个算法做深入地解析。今天的算法如下&#xff1…