binlog详解、以及与redo log的区分对比

0、前言

        binlog作为二进制日志,重要且应用广泛,本文主要介绍binlog的具体使用。此外,binlog与redo log都有类似“恢复”的功能,本文将介绍两种日志具体有何区别。

1、binlog梗概

        binlog即binary log,二进制日志文件,也叫作变更日志(update log)。
        它记录了数据库所有执行的 DDL 和 DML 等数据库更新事件的语句,但是不包含没有修改任何数据的语句(如数据查询语句select、 show等)。

        binlog主要应用场景:
        一是用于 数据恢复
        二是用于 数据复制

 2、如何使用

         我们知道,binlog是用于恢复数据的,实际上,binlog日志里记录的是具体的sql命令,恢复的时候是通过具体的Pos标号来进行恢复的:例如

 

         此外,binlog的写入机制,类似于redo log的刷盘策略。

3、redo log与binlog的对比

  •         redo log是属于innoDB层面,binlog属于MySQL Server层面的,这样在数据库用别的存储引擎时可以达到一致性的要求。
  •         redo log是物理日志,记录该数据页更新的内容;binlog是逻辑日志,记录的是这个更新语句的原始逻辑
  •         redo log是循环写,日志空间大小固定;binlog是追加写,是指一份写到一定大小的时候会更换下一个文件,不会覆盖。
  •         binlog可以作为恢复数据使用,主从复制搭建,redo log作为异常宕机或者介质故障后的数据恢复使用。

        解释: binlog记录的是SQL语句,是逻辑日志;而redo log实际记录的是修改操作对数据的影响,包括对哪些数据进行了什么样的修改,而不是直接记录数据本身或 SQL 语句。
        比如,当执行一个 INSERT 操作时,redo log 记录的就是这个操作所对应的修改信息,包括被插入的表、插入的数据、行号等。当 MySQL 服务器在执行 COMMIT 操作时,会将 redo log 中此事务对应的修改信息同步到磁盘中的数据文件中,这样就能保证数据的完整性和一致性。
        通常来讲,redo log 组成部分包括事务 ID、操作类型(插入、更新、删除)、操作对象(表名、行号)、操作前后的数据值等。这些信息可以用于在出现异常情况时,恢复所有已经提交的事务,并使恢复之后的数据库与宕机前的数据库保持一致。因此,redo log是物理日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好奇的7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值