MySQL binlog协议之建立从库流程

@心欲无痕  July 25, 2019

MySQL binlog 协议

什么是 MySQL binlog 协议?其实 MySQL binlog协议 就是作用于 MySQL主库与从库之间同步数据的一套规范。任何实现了这套机制的服务端都可以同 MySQL Master主库进行数据同步,下面我们来一起瞧瞧这一套协议规范。

MySQL binlog协议流程

这里我们不介绍 MySQL客户端和服务端之间的通信协议哦,只介绍binlog这块,如果后面有时间的话,就讲讲这块。下面我们开始 binlog协议的步骤:

首先 从库需要往 MySQL 主库发送一条指令让主库允许slave进行复制,得到 主库的允许操作的回应后,从库发送 SHOW MASTER STATUS 获取当前最新的binlog日志位置和文件名,以及获取checksum(目前版本CRC32校验),然后我们就可以发送 COM_BINLOG_DUMP指令了,发送完成后,主库就会源源不断的将日志数据发送过来,下面的流程就是解析binlog数据了,好了,我们看下具体的流程如下图:

binlog_protocol.png

其实流程很是简单,难点在于协议的解析,这块难点有两个,第一个就是字节流顺序,第二个就是协议的版本之间兼容性问题

  • 字节流顺序

MySQL协议中的都是小端字节流顺序,也就是说先接受的数据放在后面,或者换句话说,如果是整数的数据的话,先收到的是个位数部分,然后是高位部分

  • 版本兼容性

由于MySQL版本到现在为止,经过了好几个版本,而且为了兼容导致了很多的字段取值有变化,而且为了压缩内存,高效利用字节,导致了很多的解析的难点,不过后面我面一一介绍。


添加新评论