ddddddf 发表于 2018-10-4 06:22:57

解析MySQL binlog --(2)FORMAT_DESCRIPTION_EVENT

  该格式描述事件时binlog version 4中为了取代之前版本的START_EVENT_3事件而引入的。是binlog文件的第一个事件,并在一个binlog文件中仅出现一次。具体定义:

  binlog-version:binlog版本
  mysql-server version:服务器版本
  create timestamp:指明binlog文件的创建时间。如果该binlog是由于切换产生,那么该字段是0
  event header length:189
  event type header lengths:记录所有事件的私有事件头的长度,event的个数定义5.6,5.7为40个,也就是40个字节
  

$ hexdump -Cv mysql-bin.000002 > 2.txt  
$ vi 2.txt
  

  
00000000fe 62 69 6e 46 c4 a4 5a0f 0b 00 00 00 74 00 00|.binF..Z.....t..|
  
0000001000 78 00 00 00 01 00 0400 35 2e 36 2e 32 36 2d|.x.......5.6.26-|
  
0000002064 65 62 75 67 2d 6c 6f67 00 00 00 00 00 00 00|debug-log.......|
  
0000003000 00 00 00 00 00 00 0000 00 00 00 00 00 00 00|................|
  
0000004000 00 00 00 00 00 00 0000 00 00 46 c4 a4 5a 13|...........F..Z.|
  
0000005038 0d 00 08 00 12 00 0404 04 04 12 00 00 5c 00|8.............\.|
  
0000006004 1a 08 00 00 00 08 0808 02 00 00 00 0a 0a 0a|................|
  
0000007019 19 00 01 c8 a1 c5 1962 c4 a4 5a 02 0b 00 00|........b..Z....|
  
0000008000 47 00 00 00 bf 00 0000 08 00 01 00 00 00 00|.G..............|
  
0000009000 00 00 03 00 00 1a 0000 00 00 00 00 01 00 00|................|
  
000000a000 40 00 00 00 00 06 0373 74 64 04 21 00 21 00|.@......std.!.!.|
  
000000b021 00 79 7a 73 00 42 4547 49 4e 30 85 8c ba 62|!.yzs.BEGIN0...b|
  
000000c0c4 a4 5a 13 0b 00 00 002d 00 00 00 ec 00 00 00|..Z.....-.......|
  
000000d000 00 46 00 00 00 00 0001 00 03 79 7a 73 00 02|..F........yzs..|
  

  分析:
  1、开头4个字节binlog magic number:fe 62 69 6e,即.bin
  2、第一个binlog事件是FORMAT_DESCRIPTION_EVENT。
  3、timestamp: 46 c4 a4 5a,即小端显示0x5aa4c446,十进制1520747590,
  $ date -d "@1520747590"
  Sat Mar 10 21:53:10 PST 2018

  binlog解析的时间是:#180310 21:53:10 server>  3、event type:0f,即15
  5、server-id:0b 00 00 00,即小端显示0x00 00 00 0b,即为11

  6、event>  7、next-log pos:78 00 00 00:0x00 00 00 78,120,下一个event的位置,相对文件头位置,和end_log_pos 120一致
  8、flag:01 00;为0X0001那么会在MYSQLBINLOG输出中报一个警告说本binlog没有关闭
  9、binlog version:0400,小端显示及0X0004,和mysqlbinlog中的解析Start: binlog v 4一致
  10、mysql server version:5.6.26-debug-log,剩下的字节0填充
  

00000010                              35 2e 36 2e 32 36 2d|.x.......5.6.26-|  
0000002064 65 62 75 67 2d 6c 6f67 00 00 00 00 00 00 00|debug-log.......|
  
0000003000 00 00 00 00 00 00 0000 00 00 00 00 00 00 00|................|
  
0000004000 00 00 00 00 00 00 0000 00 00
  

  11、create stamp:46 c4 a4 5a,和event头一样
  12、event header length:13,即19字节
  13、event header lengths:array-:0a 0a 0a,表示WRITE_ROWS_EVENT = 30,UPDATE_ROWS_EVENT = 31, DELETE_ROWS_EVENT = 32的私有事件头长度
  

0000005038 0d 00 08 00 12 00 0404 04 04 12 00 00 5c 00|8.............\.|  
0000006004 1a 08 00 00 00 08 0808 02 00 00 00 0a 0a 0a|................|
  
0000007019 19 00 01 c8 a1 c5 19
  

  参考:http://blog.itpub.net/7728585/viewspace-2133189/


页: [1]
查看完整版本: 解析MySQL binlog --(2)FORMAT_DESCRIPTION_EVENT