如何通过binlog定位大事务?(2)
如何通过binlog定位大事务
至此,我们已经基本实现了通过解析一个 binlog 文件,从而拿到对应的 GTID、事务开始和结束时间、事务开始和结束的 POS、对应的 DML 语句数量统计。
为了不重复执行解析命令,我们可以将其封装为脚本,作为日常运维工具使用。
最终效果展示
[root@localhost ~]$ sh parse_binlog.sh /opt/sandboxes/rsandbox_5_7_35/master/data/mysql-bin.000003 2
2023-12-12 15:15:40 [WARNING] 开始解析BINLOG: /opt/sandboxes/rsandbox_5_7_35/master/data/mysql-bin.000003
2023-12-12 15:15:53 [WARNING] TRANS_SIZE: 0.00161743MB
2023-12-12 15:16:06 [INFO] GTID: 00020236-1111-1111-1111-111111111111:362779
2023-12-12 15:16:06 [INFO] START_TIME: 2023-12-12 15:14:35
2023-12-12 15:16:06 [INFO] END_TIME: 2023-12-12 15:14:35
2023-12-12 15:16:06 [INFO] TRANS_START_POS: 362096066
2023-12-12 15:16:06 [INFO] TRANS_END_POS: 362097697
2023-12-12 15:16:06 [INFO] 该事务的DML语句及相关表统计:
1 ### INSERT INTO `sbtest`.`sbtest100`
1 ### DELETE FROM `sbtest`.`sbtest100`
2 ### UPDATE `sbtest`.`sbtest100`
2023-12-12 15:16:06 [WARNING] TRANS_SIZE: 0.00161648MB
2023-12-12 15:16:25 [INFO] GTID: 00020236-1111-1111-1111-111111111111:505503
2023-12-12 15:16:25 [INFO] START_TIME: 2023-12-12 15:15:36
2023-12-12 15:16:25 [INFO] END_TIME: 2023-12-12 15:15:36
2023-12-12 15:16:25 [INFO] TRANS_START_POS: 603539112
2023-12-12 15:16:25 [INFO] TRANS_END_POS: 603540742
2023-12-12 15:16:25 [INFO] 该事务的DML语句及相关表统计:
1 ### INSERT INTO `sbtest`.`sbtest100`
1 ### DELETE FROM `sbtest`.`sbtest100`
1 ### UPDATE `sbtest`.`sbtest100`
1 ### UPDATE `sbtest`.`sbtest87`
通过上述结果可以看到,这种解析方式是基于事务的大小进行排序的,有时我们还可能需要从时间维度进行排序,通过大致相同的思路写脚本也可以实现,这里提供一个开源的工具 my2sql。
my2sql可指定 rows 和 time 进行过滤,在 mode 为 file 且 work-type 为 stats 时,连接任意一个 MySQL 实例(无需原库)均可对 binlog 中的事务进行解析。
# 统计指定 binlog 中各个表的 DML 操作数量(不加 row 和 time 限制)
[root@localhost ~]$ mkdir tmpdir
[root@localhost ~]$ ./my2sql -user root -password xxx -host 127.0.0.1 -port 3306 -mode file -local-binlog-file ./mysql-bin.005375 -work-type stats -start-file mysql-bin.005375 -output-dir ./tmpdir
# 按照事务的行数倒序排序
[root@localhost ~]$ less tmpdir/biglong_trx.txt | sort -nr -k 6 | less
# 按照事务的执行时间倒序排序
[root@localhost ~]$ less tmpdir/biglong_trx.txt | sort -nr -k 7 | less
# 输出示例(binlog starttime stoptime startpos stoppos rows duration tables)
mysql-bin.005375 2023-12-12_16:04:06 2023-12-12_16:16:59 493014756 582840954 123336 53 [test.t1(inserts=61668, updates=0, deletes=0) test.t2(inserts=61668, updates=0, deletes=0)]
以上IT袋网网介绍的如何通过binlog定位大事务?的经验介绍,您知道和解决您袋问题了吗?
相关阅读
-
SAN存储区域网络的优缺点有哪些
如果想了解SAN存储区域网络的优缺点有哪些的电脑小知识,请看下面详细的介绍。 SAN优点 SAN(存储区域网络)的确具有许多优点,尤其是在速度、性能和可扩展性方面。 高速和高性能: SAN采
-
免费b2b网站注册流程 申请网站注册的过程
小编为网友们解答免费b2b网站注册流程和申请网站注册的过程方面的讲解,接下来一起来看看吧。 关于注册国外免费B2B网站,可能很多业务员会觉得很鸡肋,但是也有很多人在问关于如何注册
-
swiper.min.js.map访问404解决办法
我们在做网站的时候,大部分人都是用的别人的模板或者仿站模板,不经意间按F12,控制台里面显示:swiper.min.js.map Status Code:404 Not Found ,那么我们如何解决这个问题呢?下面IT袋小编就给大
-
什么是http/2 http2.0与http1.1的区别
很多人在检测https站点等级的时候,有一项就是http2是否支持,那么到底什么是什么是http/2,它与与http1.1和1.0的区别又是什么呢?下面ITDAI博主来给大家介绍下http2.0的好处有哪些! 一、什么是


