MySQL数据库binlog解析

binlog是由MySQL数据库server层对数据库修改操作的记录,写入binlog时根据提交的顺序写入,binlog用于数据库主从复制、归档、备份恢复。其中,binlog是由一个个event组成的,不同的SQL语句对应不同的event,要了解binlog,就需要先了解binlog中都包含哪些event。

首先,我们开启一个新的binlog来进行验证。

查看当前数据库的binlog。

刷新binlog,重新生成一个新的binlog文件。

刷新36这个binlog后,暂时不进行任何写入操作,先看下全新的binlog里面包含哪些内容。

解析binlog,mysqlbinlog --no-defaults -vv mysql-bin-3306.000036

从解析后的日志中可以看出来,binlog是从"at 4"开始的,第一个event说明了binlog的格式、创建时间等,即FORMAT_DESCRIPTION_EVENT。第二个event是从"at 123"开始的,记录了Previous-GTIDS,描述前面所有binlog包含的gtid set,即PREVIOUS_GTIDS_LOG_EVENT。

现在我们向数据库中插入一条数据,来看下binlog是如何更新的。

此时,再解析binlog,查看内容。

从上面图片上可以看到,执行了一条insert语句后,新增加了"at 194"、"at 259" 、"at 331"、"at 380"、"at 423"这5个event。

"at 194"描述了下一个gtid号,但由于测试数据库没有开启gtid模式,因此描述为匿名gitd,即Anonymous_GTID_EVENT,如果开启了gtid mode,则对应的event会是GTID_EVENT。

"at 259"描述了时间戳TIMESTAMP、线程号pseudo_thread_id、sql_mode、客户端字符集character_set_client等信息,并且包含了begin语句,代表了事务开始,即QUERY_EVENT,该event会在事务的第一个dml语句的第一行数据被修改之后生成,一般是一个事务对应一个QUERY_EVENT。

"at 331"描述了insert语句的表emp在数据库中映射的id号,每个表有唯一的一个id号,且当MySQL实例重启、执行flush tables命令后,该table_id号会变化,并不是固定不变,该event称之为MAP_EVENT。

"at 380"才是真正记录insert语句内容的event,即WRITE_EVENT。该event用于记录insert语句插入的行数据。

"at 423"从图片上可以看出来,代表"commit"语句,代表着上面的insert事务结束,称之为XID_EVENT。

我们对上面的binlog内容进行总结,每生成一个新的binlog,至少包含2个event,第一个是FORMAT_DESCRIPTION_EVENT,第二个是PREVIOUS_GTIDS_LOG_EVENT。当执行了DML语句或者DDL语句之后,则会先生成GTID_EVENT或者Anonymous_GTID_EVENT,接着是QUERY_EVENT、MAP_EVENT以及对应的WRITE_EVENT/DELETE_EVENT/UPDATE_EVENT,最后是对应事务commit语句的XID_EVENT。

相关推荐
weixin_460443562 小时前
考试监控大屏为什么不能直接查数据库?WebSocket、Redis与实时数据聚合架构设计
数据库·redis·在线考试系统·培训考试系统·煤矿培训考试系统·煤矿在线考试系统·宏远培训考试系统
风哥2号2 小时前
数据库教程FGMT02‑生产环境Linux+Oracle19c安装配置与项目实战
linux·数据库·ffmpeg
九皇叔叔7 小时前
【第二章】Redis基础入门:Redis是什么、为什么快以及核心特性详解
数据库·redis·缓存
莫陌尛.7 小时前
Docker MySQL 删表卡死、执行超时(MDL锁阻塞)问题复盘与根治方案
mysql·docker·容器
云和恩墨7 小时前
删库不跑路,回滚极速触达——zData S“旁路日志”持续保护原理深剖
数据库
MetaLite7 小时前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
Wang's Blog9 小时前
Java框架快速入门: Spring Security+OAuth2之元注解简化权限表达式
java·数据库·spring
毕业设计7039 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
蓝速科技11 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
QYR-分析11 小时前
重轨受电弓行业深度报告:市场格局、技术迭代与发展前景
大数据·数据库·人工智能