二十二、二进制日志记录方式

二进制日志记录方式

DDL: 数据库定义语言
DCL: 数据库控制语言
DML: 数据库操纵语言

对于DDL记录的是sql语句,如CREATE、ALTER、DROP等;
对于DCL记录的是sql语句,如设置或更改数据库用户或角色权限的语句等;
对于DML记录的是已提交的事务,如如SELECT、UPDATE、INSERT、DELETE等;

三种记录方式

SBR模式
以sql语句形式记录到日志中。

RBR模式
行模式,记录数据行的变化,生产中常用。

MBR
混合模式,由mysql自己决定使用什么模式。

三种记录模式的用法

$ vim /etc/my.cnf
[mysqld]
...
binlog_format=statement #可选值还有row,mixed

面试题:SBR和RBR什么区别?怎么选择?
SBR模式:可读性较强,对于范围更新语句记录的日志量少,但是可能会出现记录不准确的情况
RBR模式: 可读性较弱,对于范围更新语句记录的日志量较大,会记录行数据变化,但不会出现记录错误
生产环境中主要使用RBR模式,因为对数据要求准确率高,也是默认模式。

SBR模式说明
因为SBR模式记录的是sql语句到日志中,所以对于范围更新操作,例如如下述操作,只会记录一条sql语句,但RBR模式下记录的是id>5所有数据行变化的内容,所以日志量会很大。

mysql> update test set name='zs' where id>5;

SBR模式记录不准确的情况如下

#now()函数记录的是执行sql语句时的当前时间,如果记录到日志中再通过日志恢复就是日志恢复的时间
insert into test values(1,'zs',now());

学习来自:老男孩深标DBA课程 第六章 日志管理

posted @ 2021-03-14 11:20  努力吧阿团  阅读(120)  评论(0编辑  收藏  举报