介绍
二进制日志,记录对数据发生或潜在发生更改的SQL语句(除了数据查询语句),并以二进制的形式保存在磁盘中。
1.作用: 复制(Master-Slave 主从同步)、恢复和审计。
2.binlog日志的三种模式
STATEMENT、ROW、MIXED
(1) STATEMENT:基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中。
优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁盘IO,提高性能。
缺点:在某些情况下会导致master-slave中的数据不一致( 一些新功能同步可能会有障碍,比如函数、触发器等)。
(2)ROW:基于行的复制(row-based replication, RBR),仅保存记录被修改细节,不记录SQL语句上下文相关信息
优点:记录详细,不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。
缺点:会产生大量的日志,尤其是alter table的时候会让日志暴涨。
(3)MIXED:混合模式复制(mixed-based replication, MBR),以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据