zoukankan      html  css  js  c++  java
  • MySQL 二进制日志的结构

    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*/;
  • 相关阅读:
    堆与堆排序
    利用openssl进行RSA加密解密
    [转载]编辑器圣战
    七月底的小结
    计算机是怎么样工作的?
    Linux进程地址空间之初探:一
    微软2013暑期实习笔试回忆
    微软编程之美资格赛
    微软编程之美初赛
    rootkit:实现隐藏进程
  • 原文地址:https://www.cnblogs.com/olinux/p/6631549.html
Copyright © 2011-2022 走看看