一、binlog file的構(gòu)成
(1)binlog file的大致構(gòu)成
這個(gè)問(wèn)題其實(shí)之前也回答過(guò),但是很不深入。這次,我會(huì)深度探索它,首先我們扒一扒官方的說(shuō)法;
http://dev.mysql.com/doc/internals/en/binlog-file.html
這塊就說(shuō)了一句話:binlog file是由binlog file header和binlog events構(gòu)成的,至于binlog file header其實(shí)就是0xfe62696e。換言之,binlog file先寫了個(gè)0xfe62696e,然后后面跟著許多binlog event 。官方的文檔還是很給力的,我們可以打開(kāi)任意一個(gè)binlog file,以16進(jìn)制形式打開(kāi),開(kāi)頭就是0xfe62696e。
(2)binlog events的組織方式
許多binlog event是否存在著自己的組織方式呢?答案是肯定的,跟在binlog file header后面的一般先是Binlog::FORMAT_DESCRIPTION_EVENT,這是第4版本的binlog event的開(kāi)頭,這個(gè)會(huì)在本文的"二、binlog events的構(gòu)成"中詳細(xì)提到。
緊接著一般是事務(wù)性的binlog events,要強(qiáng)調(diào)的是,在binlog file里所有的update, delete, insert語(yǔ)句都是存在于一組事務(wù)性的binlog event。
事務(wù)性的binlog events的格式如下(SQL代表任一SQL語(yǔ)句,當(dāng)然一般只包含select,update, delete, insert語(yǔ)句,不包括ddl語(yǔ)句):
sql語(yǔ)句形式 | statement格式 | row格式 |
/ |
網(wǎng)友評(píng)論 |