技术分享 | MySQL binlog 日志解析

作者: admin 分类: 公众号存档            2 次浏览 发布时间: 2020-08-10 21:57

【转载声明】本文为转载文章,原作者「xuty」,版权归原作者所有。 原文链接:https://mp.weixin.qq.com/s/r-WMijUqwSQL_dlphp9Sjw

公众号:杨建荣的学习笔记 · 作者:xuty · 发布:2020-08-10 21:57:01 · 原文链接

作者:xuty

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


很多时候,当我们的业务数据产生了不正常的变化,但却无法得知这类操作是在哪里进行,并且如何进行,单单从程序当面排查很费力。那么就需要通过分析数据库日志来得到历史执行 SQL,根据 SQL 执行逻辑来确认代码位置,进而确认是否是 BUG,亦或是误操作等。

一 、binlog 简介

binlog 是 MySQL Server 层记录的二进制日志文件,用于记录 MySQL 的数据更新或者潜在更新(比如 DELETE 语句执行删除而实际并没有符合条件的数据),select 或 show 等不会修改数据的操作则不会记录在 binlog 中。

通常在 binlog_format =  ROW 的环境下,我们可以通过 binlog 获取历史的 SQL 执行记录,前提是必须开启 binlog_rows_query_log_events 参数(默认关闭,建议开启),该参数可以通过 rows_query_event 事件记录原始的 SQL,如果不开启的话,则只能获取 SQL 对应的行数据。

二、binlog 解析

由于 binlog 是二进制文件,所以无法直接使用文本打开,需要使用对应的解析工具才可以查看具体内容。

2.1 show binlog events

show binlog events 方式可以解析指定 binlog 日志,但不适宜提取大量日志,速度很慢,不建议使用。

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注