binlog是SQL层的功能。记录的是变更SQL语句,不记录查询语句。
记录SQL语句种类
DDL :原封不动的记录当前DDL(statement(语句)方式)。 DCL :原封不动的记录当前DCL(statement(语句)方式)。 DML :只记录已经提交的事务DML
DML三种记录方式
binlog_format(binlog的记录格式)参数影响 (1)statement(5.6默认)SBR(statement based replication) :语句模式原封不动的记录当前DML。 (2)ROW(5.7 默认值) RBR(ROW based replication) :记录数据行的变化(用户看不懂,需要工具分析) (3)mixed(混合)MBR(mixed based replication)模式 :以上两种模式的混合
SBR与RBR模式的对比
STATEMENT:可读性较高,日志量少,但是不够严谨 ROW :可读性很低,日志量大,足够严谨 update t1 set xxx=xxx where id>1000 ? -->一共500w行 row模式怎么记录的日志? 为什么row模式严谨? id name intime这张表,数据插入操作insert into t1 values(1,'zs',now()) 我们建议使用:row记录模式