【MySQL】binlog日志有三种模式

binlog日志有三种模式

1)ROW(row-basedreplication,RBR):

日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。

优点:

能清楚记录每一个行数据的修改继节,能完全实现主从数据同步和数据的恢复。而且不会出现某些特定情况下存储过程或function无法被正确复制的问题。

缺点:

批量操作,会产生大量的日志,尤其是alter table会让日志量暴涨。

2)STATMENT (statement-based replication,SBR):

记录每一条修改数据的SQL语句(批量修改时,记录的不是单条SQL语句,而是批量修改的SQL语句事件),slave在复制的时候SQL进程会解析成和原来master端执行过的相同的SQL再次执行。简称SQL语句复制。

优点:

日志量小,减少磁盘IO,提升存储和恢复速度。

缺点:

在某些情况下会导致主从数据不一致,比如last_insert_id0、now0等函数。

3)MIXED (mixed-based replication,MBR):

以上两种模式的合使用,一般会使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择写入模式

企业场景如何选择binlog的模式

1.如果生产中使用MySQL的特殊功能相对少(存储过程、触发器、函数)。选择默认的语句模式Statement.

2如果生产中使用MySQL的特殊功能较多的,可以选择Mixed模式。

3.如果生产中使用MySQL的特殊功能较多,又希望数据最大化一致,此时最好Row 模式,但是要注意,该模 式的binlog日志量增长非常快

猜你喜欢

转载自blog.csdn.net/wenchun001/article/details/131598672