binlog⽇志的结构⼤概是⻓这样的,它由索引⽂件和binlog⽂件组成,其中binlog事件⼜包含通⽤头、提交头和事件体3个部分组成。
⾸先说说索引⽂件,索引⽂件的每⼀⾏都包含了⼀个binlog⽂件的完整⽂件名(类似host-bin.001),⼀些
命令⽐如flush logs将所有⽇志写⼊磁盘会影响到索引⽂件。
每个binlog⽂件以若⼲个binlog事件组成,以格式描述事件(Format_description)作为⽂件头(上⾯的
binlog图⽚Format_desc事件),以⽇志轮换事件(rotate)作为⽂件尾。
Format_description包含binlog⽂件的服务器信息、⽂件状态的关键信息等。如果服务器关闭或者重
启,则会创建⼀个新的binlog⽂件,同时写⼊⼀个新的format_description。他的格式⼤致如下。
2 binlog-version
string[50] mysql-server version
4 create timestamp
1 event header length
string[p] event type header lengths 1
⽇志轮换事件则包含下⼀个binlog的⽂件名以及开始读取的位置,它由服务器写完binlog后添加到⽂件
尾,轮换事件并不会每次都存在,格式如下。
if binlog-version > 1 {
8 position
}
string[p] name of the next binlog
binlog事件包含若⼲个事务组成的组(group),每个组对应⼀个事务,如果是create alter语句不属于事务语句的话,则他们本身就是⼀个组,每个组要么全部执⾏,要么都不执⾏
网友评论