1.binlog 基础介绍
binlog 文件包含控制事件 :Format_description(文件头) 事件跟 Rotate 事件(文件尾)以及一些事件组,slave 在复制事件的时候,只会完整的复制一个事件
每个 binlog 事件由 4 部分组成:
通用头:包含事件的基本信息,其中最重要的字段的是事件类型和事件的大小
提交头:提交头与特定的事件类型有关,对于不同的事件类型,该字段的存储信息不同。与通用头一样,给定一个 binlog 文件,提交头的大小是相同的,事件类型的大小由 Format_description 事件给出
事件体:事件体存储事件的主要数据,因事件类型不同而异。事件的通用头中列出了事件体的大小和结束位置。
校验和:32位整型数,用于检查事件写入后是否有损坏
2.关于校验和
校验和通过三个选择来控制复制事件
binlog-checksum=type
其中 type 包含:1)CRC32,使用 ISO-3309 CRC-32 校验和;2)NONE,即关闭校验和。默认是 CRC32
master-verify-checksum=boolean
slave-sql-verify-checksum=boolean
如果二进制日志或中继日志损坏,可以使用带有 --verify-binlog-checksum 选项的 mysqlbinlog 发现坏的校验和
mysqlbinlog
--verify-binlog-checksum mysql-bin.000001
3.将语句写入日志
1)写入DML语句
写入 dml 语句,保证表上的锁在释放之前,提交的时候将该语句写入二进制日志,保证对表的修改一致
2)
写入 DDL 语句
DDL 语句影响数据模式,比如创建和销毁临时表的时候,大量的临时表的创建跟销毁会影响系统的性能
3)写入查询