一、Binlog日志格式

根据日志定义的格式不一样,可以分为Statement格式、Row格式或者MIXED格式

mysql5.6----》

| binlog_format | STATEMENT |

mysql5.7---》

| binlog_format | ROW |

理解三种不同的格式

A: Statement格式

说明:基于语句的,记录操作的sql语句

优点:

  • binlog文件大小较小
  • 易于理解,方便阅读
  • 日志中包含原始SQL,方便统计和审计

缺点:

  • 存在安全隐患,可能导致主从不一致
  • 对一些系统函数不能复制,比如sysdate,uuid等
  • 不支持不确定的SQL语句

(以上格式不推荐使用,但是在mysql5.7以前都是默认的格式)

B: Row格式

说明: 记录操作的每一行数据

优点:

  • 相比statement更加安全的复制格式
  • 系统的特殊函数也可以复制
  • 更少的锁
  • 数据一致性高

缺点:

  • binlog 文件会比较大
  • 无法从binlog中看见用户执行的SQL
  • 每个表最好都要有一个主键

(推荐使用)

从mysql5.7之后,默认的格式为Row格式

Table_map: 记录表的元数据信息

ROWS_EVENT分为三种:WRITE_ROWS_EVENT,UPDATE_ROWS_EVENT,DELETE_ROWS_EVENT,分别对应insert,update和delete操作。

[root@node8 m_data]# mysqlbinlog master-bin.000004 -vv

### INSERT INTO `mydb`.`parent`
### SET
### @1=10 /* INT meta=0 nullable=1 is_null=0 */
### INSERT INTO `mydb`.`parent`
### SET
### @1=20 /* INT meta=0 nullable=1 is_null=0 */
### INSERT INTO `mydb`.`parent`
### SET
### @1=30 /* INT meta=0 nullable=1 is_null=0 */

@1表示列1的值

C: MIXED格式

说明:混合使用Row和Statement格式,对DDL记录会使用Statement,对于table里的行操作会记录Row格式

如果是Innodb表,事务级别为Read committed 或者 read uncommitted日志级别只能使用Row格式

(一般不推荐使用Mixed格式)

MySQL之二进制日志的更多相关文章

  1. 如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  2. mysql学习------二进制日志管理

    MySQL二进制日志(Binary Log)   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库( ...

  3. MySQL使用二进制日志恢复数据库

    一.二进制日志简介 MySQL有不同类型的日志,其中二进制文件记录了所有对数据库的修改,如果数据库因为操作不当或其他原因丢失了数据,可以通过二进制文件恢复. 在my.ini文件中设置了log-bin, ...

  4. mysql删除二进制日志文件

    一.RESET MASTER 这个语句可以验证首次配置主机备机是否成功.步骤如下: 1. 启动master和 slave,开启replication (即 复制) 注:replication (复制) ...

  5. mysql使用二进制日志恢复数据

    一.恢复到某个二进制文件 1.开启二进制日志 在mysqld的配置节点下添加如下配置 log-bin="E:/Mysql57BinLog/binlog"(windows下的路径,l ...

  6. MYSQL使用二进制日志来恢复数据

    mysqlbinlog工具的使用,大家可以看MySQL的帮助手册.里面有详细的用, 在这个例子中,重点是--start-position参数和--stop-position参数的使用. ·--star ...

  7. Mysql清理二进制日志的技巧

    1:二进制日志 二进制日志记录了所有的DDL(数据定义语言)语句和DML(数据操作语言)语句,但是不记录包括数据查询的语句.语句以"事件"的形式保存,它描述了数据的更改过程,此日志 ...

  8. mysql学习------二进制日志

    一.什么是二进制日志 1.记录对数据发生或潜在发生更改的sql语句 2.二进制格式保存 3.用途广泛,包括 a.查看数据库变更历史 b.数据库增量备份 c.数据库灾难恢复 d.mysql replic ...

  9. Mysql binlog二进制日志

    Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的实际原sql语句都会被记录在binlog中. 优点:不需要记录每一 ...

  10. mysql根据二进制日志恢复数据/公司事故实战经验

    根据二进制日志恢复 目的:恢复数据,根据二进制日志将数据恢复到今天任意时刻 增量恢复,回滚恢复 如果有备份好的数据,将备份好的数据导入新数据库时,会随着产生二进制日志 先准备一台初始化的数据库 mys ...

随机推荐

  1. sublimerge

    Package Control Messages======================== Sublimerge 3------------ Sublimerge 3 (beta) has ju ...

  2. python中函数的定义、返回值以及参数的简要介绍

    一. 1.函数 定义:def关键字开头,空格之后接函数名称和圆括号(),后面紧跟‘:”. 函数是对功能的封装 语法: def 函数名(形参列表): 函数体(代码块,return) 调用: 函数名(实参 ...

  3. Android 测试-Robolectric,mockito,esspresso

    代码参考:https://github.com/googlesamples/android-testing 解释参考: https://www.jianshu.com/p/5732b4afd12f 官 ...

  4. Git报错:Permission denied (publickey)

    Git在克隆的时候报错.Permission denied (publickey). 报错 Permission denied (publickey) 具体如下: 原因:没有将自己的电脑的SSH ke ...

  5. KM 最大权匹配 UVA 1411/POJ 3565

    #include <bits/stdc++.h> using namespace std; inline void read(int &num) { char ch; num = ...

  6. JAVA的循环结构进阶

    1.什么是二重循环:                        一个循环体内又包含另一个完整的循环结构                     语法:                       ...

  7. 35 | join语句怎么优化?

    在上一篇文章中,我和你介绍了 join 语句的两种算法,分别是 Index Nested-Loop Join(NLJ) 和 Block Nested-Loop Join(BNL). 我们发现在使用 N ...

  8. PHP 调用 shell

    可以使用的命令: popenfpassthrushell_execexecsystem 1.popen resource popen ( string command, string mode ) 打 ...

  9. Bzoj 2733: [HNOI2012]永无乡(线段树+启发式合并)

    2733: [HNOI2012]永无乡 Time Limit: 10 Sec Memory Limit: 128 MB Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己 ...

  10. NetworkX系列教程(1)-创建graph

    小书匠Graph图论 研究中经常涉及到图论的相关知识,而且常常面对某些术语时,根本不知道在说什么.前不久接触了NetworkX这个graph处理工具,发现这个工具已经解决绝大部分的图论问题(也许只是我 ...