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

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    Web前端基础(1):HTML(一)
    python基础(35):协程
    python基础(34):线程(二)
    python基础(33):线程(一)
    python基础(32):进程(二)
    python基础(31):进程(一)
    python基础(30):黏包、socket的其他方法
    用keychain这个特点来保存设备唯一标识。
    判断iPhone的WiFi是否打开的两种方法 之是否连接上 WiFi
    NSStringCompareOptions
  • 原文地址:https://www.cnblogs.com/tz90/p/14598657.html
Copyright © 2011-2022 走看看