MySQL binlog的三种模式

binlog有三种模式,分别是statement(语句模式)、row(行模式)、mixed(混合模式),通过binlog_format参数来进行控制,下面我们来简单看一下这三种模式。

statement模式:
首先来看一下语句模式,下图是测试数据
初始数据
执行一条update语句

mysql> update from user set name='root' where id>=3;

共修改了三条数据
一共修改了三条数据,我们来看一下binlog的记录内容在这里插入图片描述
可以看到,binlog中记录了我们上面执行的命令。为了保证数据的一致性,有时候还需要记录上下文信息,如下图中截取的binlog日志,以下是我执行的命令:

mysql> set @a=rand();
mysql> insert into user values(6,@a);

binlog不会去记录变量a的赋值语句,但当我执行insert使用到该变量时,binlog会对变量的情况进行记录。
在这里插入图片描述
statement模式下产生的binlog较少,但是存在一些函数会导致发生主从复制时数据不一致的情况。

row模式:
我们将数据修改回初始的状态,然后再次执行相同的update命令修改三行数据,来看一下binlog中记录的内容
在这里插入图片描述
可以看到,我们修改了三行数据,binlog中清晰的记录了每一行数据的具体修改,把什么修改成了什么。但是所产生的binlog要比statement模式多很多。

mixed模式:
mixed模式就是statement模式和row模式的结合,执行语句之后,mysql会自动判断使用什么模式去记录binlog。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值