MySQL下bin-log的三种模式(ROW、Statement、Mixed)
MySQL的bin-log日志备份有三种模式,分别是: ROW、Statement、Mixed 一、Row 基于行的复制(row-based replication,RBR) 日志中会记录成每一行数据被修改成的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value,不会有sql多表关联的情况。 优点: 在row模式下,bin-log中可以不记录执行的sql语句的上下文相关信息,仅仅需要记录哪一条记录被修改了,修改成什么信样了,所以row的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现在某些特定情况下的存储过程和function,以及trigger的调用和处罚无法被正确问题。 缺点:在row模式下,所有执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容。 二、Statement 基于SQL语句的复制(statement-based replication,SBR) 每一条会修改数据的sql都会记录到master的binlog中,slave在的时候sql进程会解析成和原来master端相同的sql再执行。 优点: 在Statement模式下首先就是解决了row模式下的缺点,不需要记录记录每一行日志的变化,减少了bin-log日志量,节省了I/O以及存储资源,提高性能