一、binlog简介
mysql-binlog是MySQL数据库最重要的二进制日志,它记录了所有的DDL和DML((除了数据查询语句),以事件形式记录,还包含语句所执行消耗的事件。binlog主要应用于主从复制和数据恢复。
binlog主从复制主要有三个步骤
第一步:master在每次准备提交事务完成数据更新前,将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log event,简称event)
第二步:slave启动一个I/O线程来读取主库上binary log中的事件,并记录到slave自己的中继日志(relay log)中。
第三步:slave还会起动一个SQL线程,该线程从relay log中读取事件并在备库执行,从而实现备库数据的更新。
二、binlog的格式
binlog的格式也有三种:STATEMENT、ROW、MIXED 。
1、STATMENT模式:基于SQL语句的复制(statement-based replication, SBR),只记录修改SQL语句。
优点:日志文件小,节约IO。
缺点:准确性差,对一些系统函数不能准确复制或不能复制,如now()、uuid()等