首页  

MYSQL binlog_format     所属分类 mysql 浏览量 728
mysql复制三种方式
基于SQL语句的复制(statement-based replication, SBR)
基于行的复制(row-based replication, RBR)
混合模式复制(mixed-based replication, MBR)
对应的3种 binlog 格式  STATEMENT ROW MIXED

STATEMENT模式(SBR)
每一条修改数据的sql语句会记录到binlog中
优点是并不需要记录每一条sql语句和每一行的数据变化,减少binlog日志量,节约IO,提高性能
主从版本可以不一样,从服务器版本可以比主服务器版本高

缺点是在某些情况下会导致master-slave中的数据不一致
如 sleep()函数  last_insert_id() 以及user-defined functions(udf)等会出现问题


ROW模式(RBR)

不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了
而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题
缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨


MIXED模式(MBR)
STATEMENT  ROW 两种模式的混合使用
一般的复制使用STATEMENT模式保存binlog
对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,
根据执行的SQL语句选择日志保存方式


binlog复制配置 // 默认 statement,建议使用 mixed binlog_format = MIXED log-bin = /data/mysql/mysql-bin.log // binlog 过期清理时间 expire_logs_days = 7 // binlog 每个日志文件大小 max_binlog_size = 100m // binlog 缓存大小 binlog_cache_size = 4m // binlog 最大缓存大小 max_binlog_cache_size = 512m

上一篇     下一篇
idea 当前文件查找 快捷键失效

云原生设计理念

mysql主从复制

ElasticJob 简介

git 本地创建新分支并push

容器技术简介