zoukankan      html  css  js  c++  java
  • 二十二、二进制日志记录方式

    二进制日志记录方式

    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课程 第六章 日志管理

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    WordCount结对项目
    第一周作业:一些感想
    第一次作业
    Spring Cloud 微服务实战笔记
    解决jest处理es模块
    领域驱动设计(DDD:Domain-Driven Design)
    测试
    whistle
    日记(2018-11-07)
    ubuntu中使用机密数据Secrets
  • 原文地址:https://www.cnblogs.com/tz90/p/14598657.html
Copyright © 2011-2022 走看看