Binlog、Redo 和 Undo 的概念与区别

目录

Binlog(Binary Log)

Redo Log(重做日志)

Undo Log(回滚日志)

Binlog 与 Redo Log 和 Undo Log 的区别


Binlog(Binary Log)

    Binlog,即二进制日志,是MySQL数据库中的一个二进制文件,主要用于记录数据库中所有的DDL(Data Definition Language)和DML(Data Manipulation Language)语句,用于实现数据的复制和恢复。

  • 产物:
    • 二进制日志文件:记录了数据库变更的所有操作,用于复制和恢复。
    • 索引文件:记录了所有binlog文件的列表。

Redo Log(重做日志)

    Redo Log是InnoDB存储引擎特有的日志文件,主要用于记录对数据库的修改操作,以保证在系统崩溃时能够重做这些操作以恢复数据库的一致性。

  • 产物:
    • 重做日志文件:包含了事务提交后需要持久化到磁盘的所有修改操作。

Undo Log(回滚日志)

   Undo Log同样是InnoDB存储引擎特有的日志文件,它记录了数据修改前的状态,用于在事务执行失败或者执行回滚操作时恢复数据到修改前的状态。

  • 产物:
    • 回滚日志文件:包含了数据修改前的原始状态信息,用于数据的回滚。

Binlog 与 Redo Log 和 Undo Log 的区别

  1. 目的不同:

    • Binlog用于复制和数据恢复,主要用于主从复制和数据备份场景。
    • Redo Log用于崩溃恢复,确保事务的持久性。
    • Undo Log用于事务的原子性和一致性,支持回滚操作。
  2. 记录内容不同:

    • Binlog记录的是逻辑日志,即实际执行的SQL语句。
    • Redo Log记录的是物理日志,即对页的物理修改操作。
    • Undo Log记录的是逻辑日志,用于记录数据的旧版本,以便回滚。
  3. 使用方式不同:

    • Binlog在MySQL层实现,所有存储引擎都可以使用。
    • Redo Log和Undo Log是InnoDB存储引擎特有的机制。
  4. 日志格式不同:

    • Binlog可以有多种格式,如statement-based、row-based或mixed。
    • Redo Log通常是固定大小的文件,循环写入。
    • Undo Log是随事务产生而动态变化的。

了解这些日志文件的作用和区别对于数据库的维护、优化和故障恢复至关重要。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值