MySQL之二进制日志
一、Binlog日志格式 根据日志定义的格式不一样,可以分为Statement格式、Row格式或者MIXED格式 mysql5.6----》 | binlog_format | STATEMENT | mysql5.7---》 | binlog_format | ROW | 理解三种不同的格式 A: Statement格式 说明:基于语句的,记录操作的sql语句 优点: binlog文件大小较小 易于理解,方便阅读 日志中包含原始SQL,方便统计和审计 缺点: 存在安全隐患,可能导致主从不一致 对一些系统函数不能复制,比如sysdate,uuid等 不支持不确定的SQL语句 (以上格式不推荐使用,但是在mysql5.7以前都是默认的格式) B: Row格式 说明: 记录操作的每一行数据 优点: 相比statement更加安全的复制格式 系统的特殊函数也可以复制 更少的锁 数据一致性高 缺点: binlog 文件会比较大 无法从binlog中看见用户执行的SQL 每个表最好都要有一个主键 (推荐使用) 从mysql5.7之后,默认的格式为Row格式 Table_map: 记录表的元数据信息 ROWS_EVENT分为三种:WRITE_ROWS_EVENT,UPDATE_ROWS_EVENT,DELETE_ROWS_EVENT,分别对应insert,update和delete操作。