【SQL】binlog 和 redo log 的区别

在 MySQL 中,binlog(二进制日志)和 redo log(重做日志)是两个不同的日志系统,它们在数据库系统中具有不同的作用和功能。下面是它们的主要区别:

1. 作用和功能

  • Binlog(二进制日志)

    • 作用:记录对数据库执行的所有更改操作,如 INSERT、UPDATE、DELETE 等。
    • 功能:主要用于数据复制(Replication)和恢复。通过读取和重放二进制日志,可以将主服务器上的数据变更同步到从服务器上,实现主从复制。
  • Redo log(重做日志)

    • 作用:记录每个事务对数据库进行的修改,但不记录 SELECT 查询。
    • 功能:用于保证数据库事务的持久性和并发控制。当数据库发生崩溃或异常关闭时,通过重做日志可以将尚未写入磁盘的数据重放到磁盘上,从而恢复数据的一致性。

2. 数据记录方式

  • Binlog

    • 记录对象:记录的是逻辑变更,即 SQL 语句的逻辑内容。
    • 记录时机:在事务提交后生成。
  • Redo log

    • 记录对象:记录的是物理变更,即数据页的物理修改。
    • 记录时机:在事务进行中,对数据进行修改时就会生成重做日志,然后在事务提交时将其写入磁盘。

3. 存储位置和结构

  • Binlog

    • 存储位置:存储在磁盘上的二进制日志文件中,通常在主服务器上生成。
    • 结构:由多个二进制日志文件组成,每个文件包含一系列日志事件。
  • Redo log

    • 存储位置:存储在磁盘上的重做日志文件中,通常在数据库的数据目录下。
    • 结构:由多个重做日志文件组成,每个文件包含多个日志记录块。

4. 使用场景

  • Binlog

    • 主要用于数据复制和增量备份。
    • 可以通过二进制日志实现主从复制,将数据同步到多个 MySQL 实例中,用于读写分离和数据冗余。
  • Redo log

    • 主要用于恢复数据库的一致性。
    • 在数据库崩溃或非正常关闭时,通过重做日志可以将未写入磁盘的数据重放到磁盘上,确保事务的持久性和数据库的一致性。

总结

binlogredo log 是 MySQL 数据库中的两种重要日志系统,它们分别用于数据复制和恢复操作。理解它们的区别和作用有助于合理配置和管理数据库,确保数据库系统的高可用性和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值