解析一个binlog
mysqlbinlog -v mysql-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;# at 4
#240402 17:28:13 server id 4294967295 end_log_pos 123 CRC32 0x64dbff7b Start: binlog v 4, server v 5.7.33-log created 240402 17:28:13 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;# at 123
#240402 17:28:13 server id 4294967295 end_log_pos 154 CRC32 0xb537fbe7 Previous-GTIDs
# [empty]# at 1183
#240408 15:48:36 server id 4294967295 end_log_pos 1248 CRC32 0x0745b44d GTID last_committed=5 sequence_number=6 rbr_only=no
SET @@SESSION.GTID_NEXT= 'bb4b388c-e113-11ee-ba3f-fa163e8de5fc:6'/*!*/;
# at 1248
#240408 15:48:36 server id 4294967295 end_log_pos 1363 CRC32 0x985fdfb2 Query thread_id=5466 exec_time=1 error_code=0
SET TIMESTAMP=1712562516/*!*/;
create table t1 (id int,name varchar(11))
/*!*/;
# at 1363
#240408 15:48:54 server id 4294967295 end_log_pos 1428 CRC32 0x50762f78 GTID last_committed=6 sequence_number=7 rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'bb4b388c-e113-11ee-ba3f-fa163e8de5fc:7'/*!*/;
# at 1428
#240408 15:48:54 server id 4294967295 end_log_pos 1500 CRC32 0x36404378 Query thread_id=5466 exec_time=0 error_code=0
SET TIMESTAMP=1712562534/*!*/;
BEGIN
/*!*/;
# at 1500
#240408 15:48:54 server id 4294967295 end_log_pos 1548 CRC32 0xec159bba Table_map: `test`.`t1` mapped to number 165
# at 1548
#240408 15:48:54 server id 4294967295 end_log_pos 1593 CRC32 0x5e82e487 Write_rows: table id 165 flags: STMT_END_FBINLOG '
ZqETZhP/MAAAAAwGAAAAAKUAAAAAAAEABHRlc3QAAnQxAAIDDwILAAO6mxXs
ZqETZh7/LQAAADkGAAAAAKUAAAAAAAEAAgAC//wBAAAABGphY2uH5IJe
'/*!*/;
### INSERT INTO `test`.`t1`
### SET
### @1=1
### @2='jack'
# at 1593
#240408 15:48:54 server id 4294967295 end_log_pos 1624 CRC32 0x315287b3 Xid = 152849
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
逐段分析
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;# at 4
#240402 17:28:13 server id 4294967295 end_log_pos 123 CRC32 0x64dbff7b Start: binlog v 4, server v 5.7.33-log created 240402 17:28:13 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
FORMAT_DESCRIPTION_EVENT 记录mysql版本号,binlog版本,创建时间等信息,是第一个事件
# at 123
#240402 17:28:13 server id 4294967295 end_log_pos 154 CRC32 0xb537fbe7 Previous-GTIDs
# [empty]
PREVIOUS_GTIDS_LOG_EVENT 代表已经分配的GTID集
# at 1183
#240408 15:48:36 server id 4294967295 end_log_pos 1248 CRC32 0x0745b44d GTID last_committed=5 sequence_number=6 rbr_only=no
SET @@SESSION.GTID_NEXT= 'bb4b388c-e113-11ee-ba3f-fa163e8de5fc:6'/*!*/;
GTID_LOG_ENEVT 在开启GTID的情况下,每个事务都会分配一个GTID值
# at 1248
#240408 15:48:36 server id 4294967295 end_log_pos 1363 CRC32 0x985fdfb2 Query thread_id=5466 exec_time=1 error_code=0
SET TIMESTAMP=1712562516/*!*/;
create table t1 (id int,name varchar(11))
/*!*/;
QUERY_EVENT:DDL操作,statement下的DML操作,begin操作
# at 1363
#240408 15:48:54 server id 4294967295 end_log_pos 1428 CRC32 0x50762f78 GTID last_committed=6 sequence_number=7 rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'bb4b388c-e113-11ee-ba3f-fa163e8de5fc:7'/*!*/;
GTID_LOG_ENEVT 在开启GTID的情况下,每个事务都会分配一个GTID值
# at 1428
#240408 15:48:54 server id 4294967295 end_log_pos 1500 CRC32 0x36404378 Query thread_id=5466 exec_time=0 error_code=0
SET TIMESTAMP=1712562534/*!*/;
BEGIN
/*!*/;
QUERY_EVENT:DDL操作,statement下的DML操作,begin操作
# at 1500
#240408 15:48:54 server id 4294967295 end_log_pos 1548 CRC32 0xec159bba Table_map: `test`.`t1` mapped to number 165
# at 1548
#240408 15:48:54 server id 4294967295 end_log_pos 1593 CRC32 0x5e82e487 Write_rows: table id 165 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=1
### @2='jack'
ROW_EVENT 插入数据
# at 1593
#240408 15:48:54 server id 4294967295 end_log_pos 1624 CRC32 0x315287b3 Xid = 152849
COMMIT/*!*/;
XID_EVENT 记录COMMIT操作
详细字段说明
sequence_number: 事务编号,全局唯一。
last_committed: 上组事务中最后提交的那个事务的编号。
rbr_only=yes ROW格式下生成的
thread_id 执行该事件的线程id
Query 代表query_log event
exec_time=0 表示执行时间单位秒
error_code=0 表示错误码
240408 15:48:54: 事件的开始执行时间
server id 4294967295 生成该事务的server_id
end_log_pos 1548 事件的结束位置点
CRC32 0xec159bba 事件完整性校验机制
Table_map ROW格式下的ROW_EVENT的前一个事件,用于描述表的内部ID和列的数据类型
Table_map WRITE_ROW_EVENT 表示insert操作