MySQL 核心模块揭秘 | 06 期 | 事务提交之前,binlog 写到哪里?

本文详细介绍了MySQL中binlog的日志生成、解析过程,特别是trx_cache(事务缓存)的结构和工作原理,以及事务执行时binlog如何写入缓存以保证连续性。特别关注了INSERT操作产生的binlogevent和trx_cache的使用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

1. 准备工作

参数配置:

binlog_format = ROW
binlog_rows_query_log_events = OFF

创建测试表:

CREATE TABLE `t_binlog` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `i1` int DEFAULT '0',
  `str1` varchar(32) DEFAULT '',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

示例 SQL:

BEGIN;

INSERT INTO `t_binlog` (`i1`, `str1`)
VALUES (100, 'MySQL 核心模块揭秘');

COMMIT;

2. 解析 binlog

执行示例 SQL 之后,我们可以用下面的命令解析事务产生的 binlog 日志:

cd <binlog 日志文件目录>

mysqlbinlog binlog.000395 \
  --base64-output=decode-rows -vv

解析 binlog 日志之后,我们可以得到 4 个 binlog event。

按照这些 binlog event 在 binlog 日志文件中的顺序,简化之后的内容如下:

  • Query_log_event
# at 1233
# Query	thread_id=8
BEGIN
  • Table_map_log_event
# at 1308
Table_map: `test`.`t_binlog` mapped to number 95
  • Write_rows_log_event

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值