天天看點

mysql binlog日志(二) FORMAT_DESCRIPTION_EVENT、XID_EVENT等

本節介紹幾種常用的binlog event。

FORMAT_DESCRIPTION_EVENT: 該事件是binlog檔案的第一個事件。描述了版本資訊、各種類型event的post_header的長度、checksum算法。對應的格式如下:

               内容                                offset:length

         // binlog_version                           0:2             

         // server_version                          2:50

         // create_time                             52:4

         // event_type_header_len           16:1                     : event header部分的長度,V4版本固定是19

         // event post header len              每種事件長度占1個位元組,事件總共有ENUM_END_EVENT種

       //  checksum_alg                          1                          :checksum算法,如果配置為BINLOG_CHECKSUM_ALG_CRC32,event的footer部分為4位元組的checksum值。否則event的footer為0位元組

XID_EVENT: 在事務Commit的時候會産生該事件。在崩潰恢複的時候,會讀取最新的binlog檔案中的xid_event,将prepared狀态的事務的xid和binlog中的xid進行比對,如果存在對應的binlog xid,送出。否則進行復原。進而實作redo和binlog的一緻性。

        該事件pay_load為8個位元組的xid

ROTATE_EVENT: 當日志檔案達到大小限制或者flush logs,産生該事件。該事件存儲了下個event的binlog file name和pos

          具體格式: post-header: 8位元組      postion           

                             payLoad:    字元串:檔案名

STOP_EVENT: 當伺服器關閉或者slave機器執行reset slave的時候産生該事件。

           該事件post-header和payLoad都為空

繼續閱讀