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