• MySQL复制格式小结


    基于语句级的复制
    binlog=statement
     
    优点:
    (1)binlog文件较小。
    (2)日志是包含用户执行的原始SQL,方便统计和审计。
    (3)出现最早可binlog、兼容较好。
    (4)binlog方便阅读,方便故障修复。
     
    缺点:
    存在安全隐患,可能导致主从不一致。
    对一些系统函数不能准确复制或是不能复制:load file()、uuid()、user()、found rows()、sysdate()。
     
     
    基于行级的复制
    binlog=row
    优点:
    (1)相比statement更加安全的复制格式。
    (2)在某些情况下复制速度更快(SQL复杂、表有主键)。
    (3)系统的特殊函数也可以复制。
    (4)更少的锁。
     
    缺点:
    (1)binary log比较大(MySQL 5.6 支持binlog row image)。
    (2)单语句更新/删除的表执行过多,会形成大量binlog。
    (3)无法从binlog看见用户执行的SQL(MySQL5.6增加一个新的Event binlog_rw_query_log_event记录用户的query)。
     
    基于混合级复制
    1.混个使用ROW和statement格式,对于DDL记录会stement,对于TABLE里的行操作记录为ROW格式。
    2.如果使用innodb表,事务级别使用了read commeitted or read uncommitted 日志级别只能使用row格式。
    3.单在使用row格式中DDL语句还是会记录成statement格式。
    4.mixed格式,那么在以下几种情况会自动将binlog的模式由SBR模式改成RBR。
    5.当DML语句更新一个NDB表时。
    6.当函数中包含UUID()时。
    7.2个及以上包含AUTO_INCREMENT字段的表被更新时。
    8.行任何INSERT DELAYED语句时。
    9.用UDF时。
    10.视图中必须要求使用RBR时,例如创建视图是使用了UUID()函数。
     
    采用哪种复制格式
    生产环境里面全部采用 row格式。
     
  • 相关阅读:
    ButterKnife的使用以及不能自动生成代码问题的解决
    Android事件传递机制
    Java中四种引用类型
    Swiper
    table合并单元格 colspan(跨列)和rowspan(跨行)
    常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全
    解决firefox、chrome不兼容cursor:hand 设置鼠标为手型的方法
    js 验证表单 js提交验证类
    怎么解决浏览器兼容性问题
    JavaScript作用域链
  • 原文地址:https://www.cnblogs.com/liang545621/p/9400863.html
Copyright © 2020-2023  润新知