使用以下约定编写事件内容:
除非另有说明,数字以小端序格式写入(最低有效字节优先)。
表示位置或长度的值以字节为单位给出,应该被认为是无符号的。
有些数字被写成包装整数。格式将在本节后面介绍。
字符串被写成不同的格式:
可以将字符串写入固定长度的字段,并在右侧使用空填充(0x00字节)。
可变长度字符串的前面可以有一个长度字段,表示字符串的长度。
一些变长字符串以空结尾;不为外人所知。对单个字符串字段的描述指明了情况。
对于前面有长度字段的以空结束的字符串,长度不包括结束的空字节,除非另有说明。
如果在事件的末尾有一个可变长度的字符串,并且在它之前没有长度字段,那么它的长度可以确定为事件长度减去事件中其他字段的长度。
有些事件使用wrapped Integers,这是一种有效表示无符号整数的特殊格式。包装整数具有存储最多8字节整数的能力,而小整数仍然可以使用1、3或4字节。根据下表,第一个字节的值决定了如何读取该数字。
第一个字节 |
格式 |
0 - 250 |
第一个字节是数字(范围为0-250)。不使用额外的字节。 |
252 |
又使用了两个字节。这个数字的范围是251-0xffff。 |
253 |
又使用了三个字节。该数字的范围是0xffff-0xffffff。 |
254 |
使用了8个字节。数字的取值范围是0xffffff-0xffffffffffffffff。 |
打包整数格式源自MySQL客户端/服务器网络协议中使用的“长度编码二进制”表示。这种表示允许第一个字节值251来表示SQL NULL值,但是251显然没有用于二进制日志中的wrapped Integers。