一、binlog file的構成
(1)binlog file的大致構成
這個問題其實之前也回答過,但是很不深入。這次,我會深度探索它,首先我們扒一扒官方的說法;
http://dev.mysql.com/doc/internals/en/binlog-file.html
這塊就說了一句話:binlog file是由binlog file header和binlog events構成的,至于binlog file header其實就是0xfe62696e。換言之,binlog file先寫了個0xfe62696e,然后后面跟著許多binlog event 。官方的文檔還是很給力的,我們可以打開任意一個binlog file,以16進制形式打開,開頭就是0xfe62696e。
(2)binlog events的組織方式
許多binlog event是否存在著自己的組織方式呢?答案是肯定的,跟在binlog file header后面的一般先是Binlog::FORMAT_DESCRIPTION_EVENT,這是第4版本的binlog event的開頭,這個會在本文的"二、binlog events的構成"中詳細提到。
緊接著一般是事務性的binlog events,要強調的是,在binlog file里所有的update, delete, insert語句都是存在于一組事務性的binlog event。
事務性的binlog events的格式如下(SQL代表任一SQL語句,當然一般只包含select,update, delete, insert語句,不包括ddl語句):
sql語句形式 | statement格式 | row格式 |
/ |
延伸閱讀
![]() 我想了解如何學習 |