MySQL Binlog文件格式解析

MySQL通过Binlog进行主从数据的复制,Binlog是一种二进制格式的文件,理解Binlog二进制格式能够帮助我们进一步理解MySQL的主从复制原理。本文将对Binlog文件格式进行分析。

本文涉及的源码版本和相关参数如下:

  • MySQL Server 5.7.19
  • binlog_format:ROW
  • binlog_row_image:FULL
一、Binlog文件Magic Number:

Binlog文件,前4个字节固定为一个Magic Number,十六进制值为fe62696e,如果一个文件其前4个字节不是这个Magic Number,那么就可以认为其不是一个有效的Binlog文件。

二、Binlog event:

Binlog文件除了最前面的4个字节之外,就是一个一个的event,event包含两个部分,event header和event data。通常event header大小固定,event data大小可变。

event整体结构如下:

+===================+ | event header | +===================+ | event data  | +===================+