工具分享丨分析GreatSQL Binglog神器

这篇具有很好参考价值的文章主要介绍了工具分享丨分析GreatSQL Binglog神器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工具分享丨分析GreatSQL Binglog神器

在GreatSQL中,Binlog可以说是 GreatSQL 中比较重要的日志了,在日常开发及运维过程中经常会遇到。Binlog即Binary Log,二进制日志文件,也叫作变更日志(Update Log)。

详细Binglog日志介绍

Binglog主要应用于数据恢复和数据复制,但是在Binlog中也含有非常多有价值的信息,比如说:

  • 数据修改事件
  • 表结构修改事件
  • 状态修改事件
  • 事务控制事件
  • 管理语句事件
  • ......

事务控制事件涵盖了事务的起始时间、起始位置、结束时间和结束位置。通过这些详细信息,我们能够计算事务的大小,进而评估其是否属于大型事务,以及是否可能引起主从同步的延迟问题,及时发现大事务,可避免复制故障。

简介

本文分享的神器的名字就叫做binlog_summary,出自陈臣老师的手笔,也是开源的Python脚本文件,开源地址

下载

运行此工具需要有Python环境,若没有python环境请自行下载

下载binlog_summary.py脚本,并授权

$ wget https://raw.githubusercontent.com/slowtech/dba-toolkit/master/mysql/binlog_summary.py
$ chmod 755 binlog_summary.py

先用./binlog_summary.py -h查看下帮助

$ ./binlog_summary.py -h
usage: binlog_summary.py [-h] [-f BINLOG_TEXT_FILE] [--new] [-c {tps,opr,transaction}] [--start START_DATETIME] [--stop STOP_DATETIME] [--sort SORT_CONDITION] [-e]
                         [--limit LIMIT]

options:
  -h, --help            show this help message and exit
  -f BINLOG_TEXT_FILE, --file BINLOG_TEXT_FILE
                        Binlog text file, not the Raw binary file
  --new                 Make a fresh start
  -c {tps,opr,transaction}, --command {tps,opr,transaction}
                        Command type: [tps, opr, transaction],tps: transaction per second, opr: dml per table, transaction: show transaction info
  --start START_DATETIME
                        Start datetime, for example: 2004-12-25 11:25:56
  --stop STOP_DATETIME  Stop datetime, for example: 2004-12-25 11:25:56
  --sort SORT_CONDITION
                        Sort condition: time or size, you can use it when command type is transaction
  -e, --extend          Show transaction info in detail,you can use it when command type is transaction
  --limit LIMIT         Limit the number of rows to display

其中参数介绍:

  • -f:Binlog 通过 mysqlbinlog 解析后的文本文件。注意,是文本文件,不是Binlog原始文件。

  • --new:工具输出默认存储在sqlite3数据库中。使用--new可删除旧数据库。分析新binlog时需指定。

  • -c:指定命令的类型。支持的命令类型有:

    • tps:分析实例的TPS信息
    • opr:分析表的操作情况
    • transaction:分析事务信息
  • --start/--stop:指定时间范围

  • --sort:事务排序方式,仅针对-c选择为transaction模式

    • size,按事务大小排序
    • time,按事务的持续时间排序
  • -e:输出事务详细操作信息,仅针对-c选择为transaction模式

  • limit:限制输出的行数。

最佳实践

前置工作

由于工具只支持解析经mysqlbinlog处理后的文本文件,首先需要进行解析转换。

先从GreatSQL数据目录中复制一份需要分析的binlog文件。

$ cp /data/GreatSQL/binlog.000021 ./
$ du -h binlog.000021 
2.0G    binlog.000021

先使用 mysqlbinlog 解析 Binlog

  • 推荐使用参数-v(伪SQL)和--base64-output=decode-rows(不显示Base64编码结果),这样生成的文本文件最小,相应地,binlog_summary工具的解析速度也会更快。
$ mysqlbinlog --base64-output=decode-rows -v binlog.000021 > ./greatsql-bin.000001.txt

解析后的文件大小大概在1.7G左右

$ du -h greatsql-bin.000001.txt            
1.7G    greatsql-bin.000001.txt

分析实例的TPS信息

使用-f指定解析后的文件,-c选择分析TPS信息,--limit选择只显示5行

$ ./binlog_summary.py -f ./greatsql-bin.000001.txt -c tps --limit 5
COMMIT_TIME        TPS                
2024-02-04 14:28:45 1                  
2024-02-04 14:28:56 1                  
2024-02-04 14:28:57 2                  
2024-02-04 14:28:58 1                  
2024-02-04 14:28:59 1

这里TPS是根据事务的提交时间进行统计的。获取如此精细TPS信息通常需要通过Binlog来实现,一般的监控手段难以达到如此精细的水平

当然,也可以对TPS进行排序,只需要加上管道和sort。

  • k:对第三列排序
  • n:是按照数值(默认是字符)的大小进行排序
  • r:进行逆序排序
$ ./binlog_summary.py -f ./greatsql-bin.000001.txt -c tps --limit 5 | sort -k 3 -n 
COMMIT_TIME        TPS                
2024-02-04 14:28:45 1                  
2024-02-04 14:28:56 1                  
2024-02-04 14:28:58 1                  
2024-02-04 14:28:59 1                  
2024-02-04 14:28:57 2

分析表的操作情况

如果要分析表操作情况,需要-c选择opr功能模式,NUMS是执行次数,DML_TYPE是执行SQL的类型

$ ./binlog_summary.py -f ./greatsql-bin.000001.txt -c opr --limit 5
TABLE_NAME         DML_TYPE           NUMS               
test_db.idx_test   INSERT             10000001           
aptest.sys_user    INSERT             1002000            
test_db.t1         INSERT             524288             
aptest.sys_dept    INSERT             101000             
aptest.sys_user    DELETE             1000

分析Binlog中的大事务

$ ./binlog_summary.py -f ./greatsql-bin.000001.txt -c transaction --sort size --limit 5
TRANS_NAME         BEGIN_TIME         COMMIT_TIME        BEGIN_LOG_POS      COMMIT_LOG_POS     DURATION_TIME      SIZE               
t21                2024-02-05 16:14:32 2024-02-05 16:23:53 14319911           869025248          561                854705337          
t33                2024-02-20 16:02:41 2024-02-20 16:08:21 913362031          1425529317         340                512167286          
t32                2024-02-20 16:01:37 2024-02-20 16:02:06 881773547          913361946          29                 31588399           
t31                2024-02-20 16:00:14 2024-02-20 16:00:15 871100835          881773462          1                  10672627           
t20                2024-02-04 14:29:43 2024-02-04 14:29:43 7163617            14319264           0                  7155647

其中,各个参数解析如下

  • TRANS_NAME:事务编号
  • BEGIN_TIME:事务开始时间
  • COMMIT_TIME:事务提交时间
  • BEGIN_LOG_POS:事务的开始位置点
  • COMMIT_LOG_POS:事务的结束位置点
  • DURATION_TIME:事务的持续时间,单位秒。其中,DURATION_TIME = COMMIT_TIME - BEGIN_TIME
  • SIZE:事务的大小,单位字节,其中,SIZE = COMMIT_LOG_POS - BEGIN_LOG_POS

拿到事务的大小,可以粗略地判断这个Binlog中是否存在大事务。如果要进一步分析事务中包含哪些操作,需加上–extend,如:

$ ./binlog_summary.py -f ./greatsql-bin.000001.txt -c transaction --sort size --extend --limit 5
TRANS_NAME      BEGIN_TIME           COMMIT_TIME          BEGIN_LOG_POS   COMMIT_LOG_POS  DURATION_TIME   SIZE
t21             2024-02-05 16:14:32  2024-02-05 16:23:53  14319911        869025248       561             854705337
├──             test_db.idx_test                          INSERT          10000000
t33             2024-02-20 16:02:41  2024-02-20 16:08:21  913362031       1425529317      340             512167286
├──             aptest.sys_user                           INSERT          1000000
t32             2024-02-20 16:01:37  2024-02-20 16:02:06  881773547       913361946       29              31588399
├──             aptest.sys_dept                           INSERT          100000
t31             2024-02-20 16:00:14  2024-02-20 16:00:15  871100835       881773462       1               10672627
├──             aptest.tap_dept_tax                       INSERT          1000
t20             2024-02-04 14:29:43  2024-02-04 14:29:43  7163617         14319264        0               7155647
├──             test_db.t1                                INSERT          262144

性能

实测分析一个2G的Binlog,大概分析时间是2分半,也不慢

$ time python binlog_summary.py -f ./greatsql-bin.000001.txt --new -c transaction --sort size --extend --limit 5
......结果不展示
154.86s user 2.26s system 99% cpu 2:37.47 total

参考阅读

  • Binlog分析利器-binlog_summary.py
  • binlog_summary.py源码

Enjoy GreatSQL 😃

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

工具分享丨分析GreatSQL Binglog神器

技术交流群:

微信:扫码添加GreatSQL社区助手微信好友,发送验证信息加群

工具分享丨分析GreatSQL Binglog神器文章来源地址https://www.toymoban.com/news/detail-843198.html

到了这里,关于工具分享丨分析GreatSQL Binglog神器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 13款开源图片制作神器分享

    往期回顾: 最全vue3开源管理系统汇总 如何用低代码的思路设计文字描边渐变组件 高效设计企业营销系统的3种方案复盘 从0到1教你搭建前端团队的组件系统(高级进阶必备) 前端项目重构的深度思考和复盘 对于许多用户来说,开源和免费的图像编辑器是一个经济实惠且功能

    2024年02月04日
    浏览(87)
  • 效率神器!神级ChatGPT浏览器插件分享

    大家好,我是卷了又没卷,薛定谔的卷的AI算法工程师「陈城南」~ 担任某大厂的算法工程师,带来 最新的前沿AI知识和工具 ,欢迎 大家交流 ~,后续我还会分享更多 AI 有趣工具和实用玩法 ,包括AI相关技术、ChatGPT、AI绘图等。 公众号「陈城南」或 加「cchengnan113」备注AI交流

    2024年02月07日
    浏览(40)
  • 5款办公神器软件推荐:提高效率,享受分享

    给大家分享一些优秀的软件工具,是一件让人很愉悦的事情,今天继续带来5款优质软件。 PicGo是一款图床管理工具,可以快速上传图片到各种图床,并生成链接。你可以使用PicGo来管理你的图片资源,或者作为Markdown编辑器的辅助工具。PicGo支持多种图床,如七牛云、腾讯云、

    2023年04月19日
    浏览(51)
  • 6款超好用AI写作神器,写作效率秒拔高! #经验分享#人工智能#知识分享

    在当今信息爆炸的时代,写作成为了人们表达思想、分享知识和传递情感的重要方式之一。对于很多人来说,写作并非易事。我们会陷入困境,无法找到灵感,我们会苦恼于语言表达的准确性,还有时候我们可能遭遇到了创作瓶颈,随着科技的进步和人工智能技术的发展,

    2024年04月15日
    浏览(51)
  • 盘点一款手机Python编程神器——AidLearning(免费分享)

    如果你是个对编程比较感兴趣或者正走在这条康庄大道上的技术宅,那我强烈向你推荐以下神器,对于没资金买电脑的人来说是一个福音,因为它实在是太优秀了,那么它是什么?一起来看看吧~ 领取方式: 【下载和安装】 1、让我们一起来看下吧,直接上图。 第一眼看到是

    2024年02月07日
    浏览(34)
  • 秘密是如何被泄露的?自建文件分享神器HFS

    近年来,随着互联网技术的飞速发展,我们对于互联网的依赖也日益增加。利用互联网这种高效便捷的工具,我们可以随时随地进行文件的传输、图片的分享以及与他人的交流。然而,看似安全的聊天窗口,其实背后是庞大的互联网算力在维持运作,我们的每个行为,都会在

    2024年02月01日
    浏览(58)
  • 【网安神器篇】——hydra爆破工具

    作者名:Demo不是emo  主页面链接: 主页传送门 创作初心: 舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭: 不要让时代的悲哀成为你的悲哀 专研方向: 网络安全,数据结构 每日emo: 折磨

    2023年04月08日
    浏览(114)
  • 【实用工具 】免费OCR神器-ShareX

    ShareX 严格意义上来讲,ShareX并不是纯粹的OCR工具,反而,称其为截图工具更为合适,我在前面一篇介绍截图工具时曾经提到过ShareX。 地址 设定默认字体为中文,否则OCR识别一直是英文 选择快捷动作

    2024年01月18日
    浏览(129)
  • 【网安神器篇】——WPScan漏洞扫描工具

    作者名:Demo不是emo  主页面链接: 主页传送门 创作初心: 舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭: 不要让时代的悲哀成为你的悲哀 专研方向: 网络安全,数据结构 每日emo: 联系

    2024年02月03日
    浏览(64)
  • 【网安神器篇】——系统指纹探测工具finger

    作者名:白昼安全 主页面链接: 主页传送门 创作初心: 以后赚大钱 座右铭: 不要让时代的悲哀成为你的悲哀 专研方向: web安全,后渗透技术 每日鸡汤: 我不想停下,因为这次出发的感觉太好了 Finger 定位于一款红队在大量的资产中存活探测与重点攻击系统指纹探测工具

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包