一、FORMAT_DESCRIPTION_EVENT
1、FORMAT_DESCRIPTION_EVENT的作用
本Event是binary log的第一个Event。这个Event比较简单,因为它携带的数据都是固定的,没有可变部分。其中包含了binary log的版本信息、MySQL的版本信息、Event_header的长度、以及每个Event type的固定部分的长度。
下面信息将会保存在从库的内存中:
- 在从库的内存中保存主库的信息,这个变量是Master_info.mi_description_event。
queue_event函数中case binary_log::FORMAT_DESCRIPTION_EVENT部分。
- 将从库的relay log的FORMAT_DESCRIPTION_EVENT记录为和主库相同,即更新Relay_log_info.rli_description_event。
Format_description_log_event::do_apply_event函数中如下片段:
/* Save the information describing this binlog */
copy_crypto_data(*rli->get_rli_description_event());
const_cast<Relay_log_info *>(rli)->set_rli_description_event(this);
至少下面几个地方都会读取其中的信息:
- 每次SQL线程应用Event的时候会获取Event_header的长度和相应Event固定部分的长度。
- IO线程启动的时候检测版本,参考函数get_master_version_and_clock。
- 将信息写入到relay log的开头的FORMAT_DESCRIPTION_EVENT中。
它一定出现在binary log开头,位置固定为‘#4’。
网友评论