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
容器技术简介