前面的一些章节我们对mysqldump常用命令进行了讲解

这个专题的内容为mysqlbinlog命令的详解

mysqlbinlog是MySQL中用来处理binlog的工具

1. 命令格式

我们使用如下命令来得到二进制日志文件的十六进制内容

shell> mysqlbinlog --hexdump /path/to/log/master-bin.000001
1_2.png

结果如上图,内容以注释符号#开头

2. 命令解析

下面我们根据上图中的内容进行解析

事件(event)描述了数据库内容的状态,包含了数据修改,服务器重启等

以二进制的格式写入日志文件

# at 4 该事件开始的位置(position )为4

190410 10:37:26 代表该事件发生的时间

server id 为 MySQL实例的ID号,同一个复制环境中ID需不一样

end_log_pos为该时间结束的位置为123,即下一个时间开始的位置

接下来分析十六进制的内容

  • position 该event在日志文件中的位置,即4
  • timestamp 代表事件开始的时间
  • type 代表事件类型的代码
  • master id 即生成该事件的主库的server id,在这里为该数据库实例的server id
  • size 为该事件的大小(bytes),即end_position-start_position,即123-4=119
  • master pos 为原始master日志文件中下一个事件的位置,即123,在这里为该数据库
  • flag 为事件标志的值

之后是该事件的具体内容

BINLOG关键字后是该事件的二进制内容,这个后面再说


综上所述,上面内容为该事件

  • 开始位置为4
  • 开始时间为 2019190410 10:37:26
  • 类型代码为15,即FORMAT_DESCRIPTION_EVENT,具体内容看上节
  • server_id为 11141429
  • size为77 即十进制的119
  • 下一个事件的位置为7b,即十进制的123

3. 参考链接

https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog-hexdump.html

好了 十六进制的内容就说到这里,下节内容为查看具体的语句