mysql二进制日志以及其对复制的影响

37 篇文章 2 订阅

mysql的日志类型

二进制日志

记录了所有对Mysql数据库的修改事件,包括增删改查事件和对表结构的修改事件

基于段的格式

binlog_format=STATEMENT

该格式日志记录量相对较小,节约磁盘及网络I/O

只对一条记录修改或者插入,row格式所产生的日志量小于段产生的日志量

必须记录上下文信息,保证语句在从服务器上执行结果和在主服务器上相同,有可能出现主从不一致

基于行的日志格式

binlog_format=ROW

可以避免MySQL复制中出现的主从不一致问题

对于一条修改了10000条数据的sql语句

基于段的日志格式只会记录这个SQL语句

基于行的日志会有10000条记录分别每一行的数据修改

优点

使MySQL主从复制更加安全

对每一行数据的修改比基于段的复制高效

误操作而修改了数据库中的数据,同事无备份时可以通过分析二进制日志,对日志中记录的数据修改操作做反向处理的方式达到恢复数据的目的

缺点

记录日志量较大

binlog_row_image = [FULL(默认)|MINIMAL|NOBLOB]

混合日志格式

binlog_format=MIXED

特点

根据SQL语句有系统在基于段和基于行的日志格式中进行选择

数据量的大小有所执行的SQL语句决定

MYSQL二进制日志格式对复制的影响

基于SQL语名的复制(SBR)

优点

  • 生成的日志量少,节约网络传输I/O
  • 并不强制要求主从数据库的表定义完全相同

缺点

  • 对于非确定型事件,无法保证主从复制数据的一致性
  • 对于存储过程,触发器,自定义函数进行的修改可能造成数据不一致
  • 相比于季宇航的复制方式,在从上执行时需要更多的表锁

基于行的复制(RBR)

优点

  • 可以应用于任何SQL的复制包括非确定函数,存储过程等
  • 可以减少数据库锁的使用

缺点

  • 要求主从数据库的表结构相同,否则可能会中断复制
  • 无法在从上单独执行触发器

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值