当前位置:   article > 正文

MySQL binlog三种模式

MySQL binlog三种模式

1.statement 

statement 记录的是sql语句。比如一条sql,update table_user set age =20 where id between 1 and 100。这条sql会更新100条数据,但是statement 模式下只会记录这条sql语句。

优点:不需要记录数据的变化,减少了bin log文件大小,减少IO负担。

缺点:会导致主从不一致的情况。mysql主从基于binlog,如果master节点的sql包含now()、uuid()等动态函数,会导致主从不一致。例如:update table_user set user_id=uuid() where id =1, uuid() 在从节点重放时又会生成新的uuid,从而导致主从数据不一致。

2.row

row基于行的复制,会清晰记录每条数据被修改的详细情况,保证了数据的一致性。比如一条sql,update table_user set age =20 where id between 1 and 100。这条sql会更新100条数据,那row模式就会在binlog记录100条update语句。

优点:会清晰记录每条数据被修改的详细情况,保证了数据的一致性

缺点:row格式的缺点在于比较占用空间,比如更新十万行数据,那么row格式将会把10万数据记录下来。

3.mixed

对于DDL(数据库定义语言CREATE、ALTER等)只对SQL语句进行记录,对DML( INSERT、DELETE、UPDATE、SELECT语句)操作则会进行判断,如果判断会造成主从不一致,就会采用row格式记录,反之则用statement格式记录

优点:既节省空间,又提高数据库性能,保证数据同步时的一致性。

缺点:无法对误操作数据进行单独恢复。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/681515
推荐阅读
相关标签
  

闽ICP备14008679号