阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL 二进制日志的结构

209次阅读
没有评论

共计 1306 个字符,预计需要花费 4 分钟才能阅读完成。

MySQL5.0 引入了一个新的 binlog 格式,也就是 binlog format 4,,binlog format 4 是专门为扩展设计的。binlog 事件由 4 部分组成

1 通用头

包含事件的基本信息,其中最重要的字段就是事件类型和时间大小

2 提交头

提交头与特定事件类型有关,对于不同的类型,字段存储的信息不同,但与通用头一样,给定的 binlog 文件中,提交头的大小是相同的,事件类型的大小由 Foramat_description 事件给出

3 事件体

事件头后面就是事件体,大小可变,事件的通用头列出了事件体的大小和结束为止。事件体存储事件的主要数据,因事件类型不同而异,例如,Query 事件的事件体存储查询,而 User_var 事

件存储某个语句的用户变量及其值

4 校验和

从 5.6 开始,如果服务器设置产生检验和的前提,事件末尾就多一个检验和字段,是一个 32 位整型数,用来检查时间写入后是否有损坏

为了保证每个事件的完整性,MySQL5.6 引入了复制的事件的检验和。在写事件的时候,添加一个检验和,然后在读取这些事件的时候,计算这个校验和,并与之前写入的值

进行比较。如果不匹配,在 SLAVE 在应用该事件的时候,停止执行。MySQL5.6 中默认是开启。也可以禁用

通过三个选择项控制复制事件检验和

binlog-checksum=type

表示启用检验和,并告诉服务器用哪种方式计算检验和,有两种,1 CRC32 2 none 关闭检验和,即默认产生检验和

master-verify-checksum=boolean

表示读取二进制的时候,master 是否要验证检验和,也就是说 dump 线程从二进制日志中读取事件后,验证其校验和,无误后在发送给 SLAVE。同理使用 SHOW BINLOG EVENTS 命令也是一样。

如果有任何损坏事件,则抛出一个错误。默认关闭状态

slave-verify-checksum=boolean

表示读取中继日志中,在 SLAVE 数据库上应用事件之前,SLAVE 是否要验证事件的校验和。默认关闭状态

$ client/mysqlbinlog –verify-binlog-checksum master-bin.000001
# at 261
#110406 8:35:28 server id 1 end_log_pos 333 CRC32 0xed927ef2…
SET TIMESTAMP=1302071728/*!*/;
BEGIN
/*!*/;
# at 333
#110406 8:35:28 server id 1 end_log_pos 365 CRC32 0x01ed254d Intvar
SET INSERT_ID=1/*!*/;
ERROR: Error in Log_event::read_log_event(): ‘Event crc check failed!…
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/142322.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1306字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中