技术分享 | MySQL binlog 分析工具 analysis_binlog 的使用介绍

程序员真实工作全解析:从需求到上线的完整技术闭环 在软件工程领域,程序员的工作远不止编写代码,而是贯穿软件研发生命周期的系统工程。其核心原理在于将业务需求转化为可执行的技术方案,这需要深入理解系统架构、数据存储、接口设计等基础概念。从技术价值角度看,现代开发实践强调通过自动化工具链和协作流程提升交付效率与质量,这正是DevOps和云原生理念的体现。在实际应用场景中,程序员需要处理从需求分析、技术方案设计、编码实现、代码审查到持续集成部署和系统监控的全链路工作。例如,在实现一个用户积分排行榜功能时,涉及Redis Sorted Set存储选型、消息队列解耦、 阅读详情
AI摘要

本文介绍了一种名为analysis_binlog的开源工具,用于高效分析MySQL的binlog。通过实例展示了如何使用该工具统计各表的DML次数、将binlog转换为SQL,并行解析多个文件,适用于需要批量处理binlog的场景。同时,文章提醒注意内存使用,并提供了工具的使用帮助和潜在问题。

作者:莫善

某互联网公司资深 DBA。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

目 录

一、概述

二、环境信息

三、环境准备

1、centos1

2、centos2

3、centos3

四、测试

1、准备数据

2、flush binlog

3、MySQL 压测

4、解析 binlog

五、总结

一、概述

作为一个 MySQL DBA,查看分析 binlog 是日常工作的一部分。

不知道你是否遇到过这样的需求:一个时间段,各个表的 dml 统计情况。

但,如果 binlog 文件很多呢?又或者负责的业务线比较多,有多个业务都有这种需求呢?

其实需求很简单,只是操作起来有点头疼?

所以,本文就针对这类需求做了一个测试。

如果你在工作中也有类似的烦恼,或者经常需要批量解析 binlog,这篇文章或许对你有帮助。

二、环境信息

三、环境准备

1、centos1

(1)安装 MySQL

hostname
ip a|grep 192
cat /proc/cpuinfo | grep processor
free -m
df -h|grep data
/usr/local/mysql80/bin/mysql -uroot -p1234567890 -h192.168.1.10 -P3306 -e "select version()"

提示:省略安装 MySQL 的步骤。

2、centos2

(1)安装 sysbench

sysbench --version

提示:省略安装 sysbench 的步骤。centos 6 的 yum 可以参照如下操作配置。

备份源文件:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo-backup 

编辑文件:vi /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-6
failovermethod=priority
#baseurl=https://vault.centos.org/6.9/os/x86_64/
baseurl=http://mirrors.sohu.com/centos/6.10/os/x86_64/
gpgcheck=0

清理软件源,重新建立源数据缓存
yum clean all && yum makecache

(2)准备测试脚本

https://gitee.com/mo-shan/script/blob/master/sysbench.sh   #这里获取,或者可以自己写脚本

3、centos3

(1)analysis_binlog

analysis_binlog 是 git 开源项目,可实现高效分析 binlog,现有功能如下:

  • 统计各个表的 dml 次数,表的最后修改时间。

  • 业务表的 binlog to sql。

  • 多个 binlog 文件可并行解析。

# yum –y install git #没有git环境的需要安装git
mkdir -p /data/git && cd /data/git/ && git clone https://gitee.com/mo-shan/analysis_binlog.git
# https://gitee.com/mo-shan/analysis_binlog/tree/master # 安装详情可参考这里

常用参数介绍

--mysqlbinlog-path or –mpath     #mysqlbinlog工具的路径,不指定就使用系统PATH
--binlog-file or -bfile           #binlog文件列表,逗号隔开 
--threads or -w                   #线程数,并行解析binlog。 
--binlog2sql or -sql              #将binlog解析成sql

(2)准备 MySQL

不需要安装 MySQL,但是分析工具依赖 mysqlbinlog 工具,所以需要用同版本的 MySQL 安装包。

四、测试

1、准备数据

利用测试脚本准备五张表,并分别 insert 1w 行的数据。请先创建测试库。

/usr/local/mysql80/bin/mysql -uroot -p1234567890 -h192.168.1.10 -P3306
create database if not exists mstest; #创建测试库这个库名跟sysbench脚本对应

2、flush binlog

为了测试结果更加直观,建议先 flush MySQL 的 binlog。

/usr/local/mysql80/bin/mysql -uroot -p1234567890 -h192.168.1.10 -P3306
flush binary logs;
show binary logs;

3、MySQL 压测

利用 sysbench 并发十个线程开始压测。

select 操作时不会记录 binlog,为了结果更加直观,本次使用 lua 脚本的是只有写操作。【oltp_update_non_index.lua】
压测时间为 60s,压测结果如下:2860 个 dml,且 2860 个事务。

4、解析 binlog

(1)拷贝 binlog 文件

将需要解析的 binlog 拷贝到分析服务器【centos1 centos3】。本次测试只需要分析【3306-binlog.000011】一个文件。

(2)解析 binlog- 统计 dml

统计各个表的 dml 情况。结果如下:统计到总共有 2860 个 update,2860 个事务。

(3)解析 binlog-binlog2sql

针对各个表可以实现 binlog2sql。

(4)解析 binlog- 并行

并行解析多个文件。

五、总结

本文主要介绍了通过 analysis_binlog 工具解决开篇提出的需求,希望对你有帮助。

analysis_binlog 工具还有很多可选的参数,有兴趣的读者可以通过【–help】查看帮助手册。

analysis_binlog 工具利用内存换取时间,加上可以并行分析多个文件,所以能做到高效解析 binlog,但是这可能也是缺点。不建议在生产环境服务器使用,否则容易将内存打满。

使用 analysis_binlog 工具过程中有任何问题都可以在 git 上给我留言或者也欢迎广大读者提 Issues。

MySQL 进阶:命令行工具 - mysqlbinlog 通过本文的介绍,我们详细解释了的基本用法、高级功能以及注意事项,帮助你更好地管理和优化 MySQL 的二进制日志。希望这些信息能够帮助你在实际项目中提高数据库管理的效率,提升系统的整体表现。如果你有任何疑问或想要分享的经验,欢迎留言交流!😊通过上述内容,我们不仅介绍了的基本命令和选项,还讨论了其在实际应用中的优势和挑战。希望这些信息对你有所帮助,让你在 MySQL 数据库管理的道路上更进一步。😊。 阅读详情

相关推荐

MySQL解析binlog日志文件

上面Binlog的格式为。可以看到,解析出的DML语句被加密了。

Sebastien23的博客 1801

mysqlbinlog工具详解

mysqlbinlog工具详解

weixin_44767199的博客 1881

使用mysqlbinlog工具进行数据恢复

通过查看和导出二进制日志文件,编辑导出的SQL文件,并将其应用到MySQL服务器上,我们可以恢复意外删除或修改的数据。执行上述命令后,mysql命令行工具将读取导出的SQL文件中的SQL语句,并将其应用到MySQL服务器上。这将导致数据恢复过程。接下来,我们需要将特定的二进制日志文件导出到文本文件中,以便进一步处理。请注意,根据您的情况,可能需要在导出的SQL文件中进行大量编辑和调整。上述命令将显示所有可用的二进制日志文件列表,以及相应的日志文件名。替换为您编辑并保存的导出的SQL文件的路径和文件名。

ZaxfSass的博客 344

Zeek MySQL 协议分析:MySQL::commands 命令码映射表全解

在 Zeek 的 MySQL 协议分析中,客户端发出的每个命令都会被解析为一个数值型命令码(command code),而日志中却需要呈现可读的命令名称。本文围绕 `base/protocols/mysql/consts.zeek` 中的 `MySQL::commands` 常量表展开,完整梳理 MySQL 协议 0x00–0x1f 共 32 个命令码的名称映射、未知命令的兜底处理,并结合 [sc

gitblog_00784的博客 491

MySQL二进制日志(binlog)解析工具

binlog2parser.py是一款MySQL二进制日志(binlog)解析工具,支持mysql5.6/5.7。- binlog2parser.json文件配置日志文件对应的数据库连接信息,用于解析列名。- 支持日期、POS点、库、表过滤,SQL类型进行过滤。- 通过binlog文件生成DML语句。- 通过binlog文件生成回滚语句。

3450

mysql-binlog-analyzer:MySQL Binlog分析器

MySQL Binlog分析器 此应用程序显示binlog提取文件中的用法。 这使用正则表达式来显示用法。 (c)使用Symfony命令创建此服务 怎么跑 使用命令行: php index.php analyzer 调用命令上的可选设置文件名: php index.php analyzer file.csv 预习 贡献 永远欢迎捐款! 执照 在法律的范围内已放弃了此作品的所有版权以及相关或邻近的权利。

SSHRD_Script隐藏玩法:在SSH Ramdisk中把TrollStore装进系统App

SSHRD_Script 是一款在 checkm8 设备上创建并启动 SSH Ramdisk 的开源 Shell 脚本,它的隐藏玩法是:在 Ramdisk 会话里把 TrollStore 直接装进系统 App(如 Tips),把一次性的 Ramdisk 变成常驻可用的"TrollFirmware"。本文带你从创建到注入,完整走通这个流程。 ## 为什么要在 SSH Ramdisk 里装 Trol

gitblog_00462的博客 664

OnlyOffice Docker部署踩坑实录:解决Nginx反向代理导致的editor.bin下载失败

本文详细解析了在Docker中部署OnlyOffice时,因Nginx反向代理配置不当导致editor.bin下载失败的常见问题。通过分析问题根源,提供了从Nginx代理配置、Docker网络设置到OnlyOffice容器内部调整的完整解决方案,并分享了实战调试技巧与性能优化建议,帮助用户彻底解决这一部署难题。

wine的专栏 523

rea 上手指南:3 条命令装好逆向分析 CLI,5 分钟跑通第一条分析

REA 是一个逆向分析 CLI,把 App 运行时行为、JavaScript/Electron 应用和原生二进制统一塞进终端。它既能由人直接敲命令,也能以 MCP 服务器(Model Context Protocol,让 AI 智能体调用外部工具的协议)接给 AI 智能体。装好并跑通一条分析后,你能用 `rea doctor --json` 随时自诊断。 [![rea 在 Hopper 中分析原

gitblog_00029的博客 623

DexProtector内存态匿名段检测绕过与dex重组技术

Dex文件是Android应用的核心执行单元,其结构规范(如header_item、class_def_item、code_item)决定了运行时加载与解析的底层逻辑。DexProtector通过将dex数据拆解为多个无文件名、受保护的内存匿名段(如[anon:dp_header]、[anon:dp_code]),规避传统基于文件特征或标准加载路径的检测机制。该策略依赖Android mmap内存管理与ART虚拟机对dex结构的刚性要求,形成可被观测的布局规律。理解其内存态组织原理,结合权限/大小/命名/内

weixin_30855761的博客 688

2022年电赛F题23年电赛D题-信号调制度测量装置说明中提到带通采样定律。

另外,当对于一个频率很高的射频信号采样时,如果采样频率设的太低,对提高采样量化的信噪比是不利的。低通采样定理在《信号与系统》教材中进行了详细的讨论,但未对带通信号的采样定理进行描述,国内樊昌信和曹丽娜老师编写的《通信原理》第10章第2小节有所描述,但没有详细的公式推导,容易给初学者产生超过该最低采样频率即不会产生频谱混叠的假象。故采样频率没选好,就会使周期性频谱搬移过程中造成频谱混叠,既然频谱和原信号的频谱对不上了,故就无法无失真恢复原信号了,总之,频域波形不出现重叠是无失真传输的重要保障。

qq_64919823的博客 2181

Codex-X 破甲提示词完整指南:两种注入模式怎么选 + 从启用到验证不踩坑

你给 Codex 挂的破甲提示词,真的生效了吗?上周一个新人往 `AGENTS.md` 里补了行破甲指令,手一抖把受管区块标记弄丢,Codex 直接无视整份指令文件。更尴尬的是他说不清当时到底挂没挂成功——问模型,对方只会打官腔。手改配置文件做提示词注入,错一行就全盘皆输,事后还难以自证。下面这套流程,就是为了解决"改不动、验不了"这两个问题。 ## 十秒定位:Codex-X 替你干什么,模式怎

gitblog_01429的博客 764

使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间

在泊松回归模型中,我们通常关注的是自变量对事件发生率的影响,而事件密度比(Incidence Rate Ratio,IRR)可以帮助我们理解不同自变量对事件发生率的相对影响。在本文中,我们将使用R语言来获取泊松回归模型所有系数的事件密度比的95%置信区间。通过以上步骤,我们可以使用R语言获取泊松回归模型所有系数的事件密度比的95%置信区间。为了获取事件密度比的置信区间,我们将使用。使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间。

BugCrusher的博客 1264

Vitess v24.0.0 版本详解:窗口函数下推、Binlog 流式传输与结构化日志全面落地

本文以 [changelog/24.0/24.0.0/summary.md](https://link.gitcode.com/i/fd778a4edbe840e5c247d046bc57643e) 为骨架,系统梳理 Vitess v24.0.0 的 Major Changes 与 Minor Changes:包括窗口函数下推、视图路由规则、USE 语句定向 Tablet、VTGate Binlo

gitblog_00960的博客 394

【Unity实战100例】Unity循环UI界面切换卡片功能

功能包括:可以设置半径,高度,速度,元素数量用户可以根据自己的实际需求接入 制作思路:创建每个元素对应的虚拟点,通过旋转管理这些虚拟点,然后把旋转信息和位置信息同步给实际的元素

纯技术流日常开发商业开发记录总结等 7717

SolidWorks软件二次开发:使用C#进行SolidWorks二次开发

SolidWorks 提供的 API(应用程序编程接口)允许开发者使用多种编程语言(如 C#、VB.NET 等)来控制和扩展 SolidWorks 的功能。API 架构基于 COM(组件对象模型),这意味着开发者可以通过引用 SolidWorks 的类型库来访问其对象模型。SolidWorks 的对象模型包括了从文档、零件、装配体到特征、草图等所有 SolidWorks 中可操作的对象。

kkchenjj的博客 3213

Hive+MySQL+HBase+R协同分析用户行为全链路

用户行为分析是大数据领域的核心应用场景,其本质是通过多技术组件协同,完成从原始日志采集、清洗聚合、实时标签更新到统计归因的端到端数据闭环。Hive凭借列式存储与批处理能力承担海量离线日志的ETL任务;MySQL以ACID和B+树索引保障高并发OLTP查询的毫秒级响应;HBase依托LSM树与灵活RowKey设计实现用户画像的毫秒级随机读写;R则利用其统计生态优势完成相关性检验、逻辑回归与可解释可视化。这一技术组合并非工具堆砌,而是由数据时效性、一致性与业务语义共同驱动的架构选择。本文聚焦电商、内容平台等典型

weixin_33805992的博客 313

手机银行应用架构设计

网上银行借助互联网、移动通信网络等技术向客户提供金融服务,易受到通讯层面的安全威胁,金融机构应从通讯协议、安全认证、通信链路安全等层面,采取措施有效应对相关风险。网上银行系统服务器端提供网上银行应用服务和核心业务处理功能,金融机构应充分利用物理环境、通信网络、计算环境等领域的防护技术,在攻击者和受保护的资源间建立多道严密的安全防线。 网上银行除直接向用户提供金融服务外,也可能与外部机构开展业务合作。在网上银行系统设计、开发、部署和运营过程中,应充分考虑外部机构的系统可能存在的安全风险,并针对各类风险进行有效

银行信息系统应用架构详解 4828

力量点堆错了想改敏捷?ER Save Editor:改属性、加装备、管进度,一篇讲透

力量堆到 80 想换敏捷流,重开一周?ER Save Editor 是艾尔登法环的免费开源图形化存档修改器,支持 PC `.sl2` 与 PlayStation Save Wizard 导出的 `.txt` 存档。 ## 一、准备:`.sl2` 与 `.txt` 存档怎么导入 PC 存档就是 `.sl2` 文件,直接拖进窗口。PS 存档多一步:原始 `.sav` 打不开,先用 Save Wiz

gitblog_01128的博客 89

【信号与系统】Multisim 仿真信号合成与分解

软件 Multisim 进行方波信号的产生、分解和合成,观察信号波形的分解与合成,加深对信号频谱的理解。

AXYZdong的博客 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux服务器入侵应急响应实战:MySQL数据库安全排查与日志分析指南

在信息安全领域,应急响应是处理安全事件的核心流程,其核心在于快速定位、遏制和恢复。从技术原理上看,攻击者常通过系统漏洞、弱口令或应用层注入等方式入侵服务器,其中数据库往往是关键目标。Linux系统日志和MySQL日志记录了丰富的操作痕迹,通过关联分析这些日志,可以追溯攻击路径、识别恶意行为并评估影响范围。这项技术的价值在于,它不仅能在事件发生后提供取证依据,更能帮助运维和安全人员构建主动防御体系,提前发现潜在风险。在实际应用场景中,无论是应对SSH暴力破解、Webshell植入,还是数据库权限滥用,系统性的

weixin_33966095的博客 504

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PhotoCraft 的 zh-CN 为什么命中简体而不是繁体?3091 行翻译表到测试门禁的本地化拆解

PhotoCraft 界面上的每一条简体中文提示,都出自 [zh-hans.tsv](https://link.gitcode.com/i/51b781a367b23dbd110e904b4614f900) 这份 3091 行的翻译表。读完这篇,你能用手动或编程两种方式把界面切到 zh-hans,搞清楚 `zh-CN` 这类系统标签为何必然落在简体,还会用仓库命令验证翻译没有腐化。想查全局机制看

gitblog_01071的博客 290

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MySQLTuner-perl 复制链路深度巡检指南:Phase VII 现代复制与 GTID 治理指标全解析

本文围绕 [roadmap_phase_vii_replication.md](https://link.gitcode.com/i/a3bcb430014e97c1ac1bc5ad4ae21894) 中的 Phase VII 规格说明,系统梳理 MySQLTuner-perl 面向现代复制架构(GTID、并行应用线程、半同步、多源通道、binlog 压缩与缓存)设计的六大巡检指标。文章既完整呈现

gitblog_00749的博客 692

MySQL用户行为分析实战:从数据清洗到RFM分层

数据分析是现代业务决策的重要基础,而结构化查询语言SQL则是操作关系型数据库的核心工具。在用户行为分析场景中,通过SQL对海量日志进行清洗、聚合与建模,可以高效提取浏览量、转化漏斗、用户分层和留存率等关键指标。本文以百万级电商行为数据为例,讲解如何利用MySQL完成从建表、导入、清洗到RFM分层与留存分析的完整流程,并分享索引优化与性能调优的实践经验。无需依赖Python或Spark,MySQL即可支撑中小规模用户行为分析,为数据分析和运营决策提供低成本、高复用的解决方案。

weixin_30595035的博客 155

GitHub520 教程:改一个 hosts 文件,5 分钟修好 GitHub 图裂和加载慢

打开 GitHub 仓库,头像和截图一张张裂开、页面半天白屏?这篇文章带你用 GitHub520 解决这两个问题:不装任何软件,只改本地一个 hosts 文件,把 40 多个 GitHub 相关域名指向访问更快的 IP。全程 5 分钟,跟做 3 步,最后逐项自查确认生效。 ## 开始之前:30 秒确认你能动手 - 你的设备有管理员(sudo)权限;Android 需要 root、iOS 需要越

gitblog_00567的博客 168

7种图类型1套引擎:drawio-ai-kit布局预设选型完整决策表(pipeline到mesh)

**drawio-ai-kit** 是教 AI 正确绘制 draw.io 图表的开源工具包:声明式布局引擎 + 结构校验器 + 视觉自检。它的核心设计是"先选图类型,再画图"——7 种图类型(diagram type)各绑定一套**布局预设**(方向、连线拐角、走线策略、分组方式),覆盖从 pipeline 数据流到 mesh 多账户连通的常见架构场景。这篇文章给出一张可以直接抄的**选型决策表*

gitblog_00280的博客 403
上一篇: 故障分析 | Redis 内存碎片率太低该怎么办?
下一篇: 故障分析 | 没安装 validate_password 插件,为什么会有密码策略?
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值