binlog和redolog的区别

binlog(二进制日志)和redolog(重做日志)在MySQL数据库中扮演着不同的角色,服务于不同的目的。以下是它们的主要区别:

Binlog (Binary Log)

  • 作用:binlog主要用于数据恢复、数据复制(主从复制)和审计。它记录了所有改变数据的SQL语句,包括DDL(数据定义语言)和DML(数据操纵语言)语句。
  • 记录内容:binlog记录的是数据库的逻辑变化,它提供了三种日志格式:statement(基于SQL语句的复制)、row(基于行的复制)和mixed(混合模式)。
  • 记录时机:binlog在执行SQL语句时生成,它是语句级别的记录方式,由MySQL的Server层进行记录。
  • 使用场景:binlog常用于数据的备份和恢复,以及主从数据库的同步。

Redolog (Redo Log)

  • 作用:redolog主要用于实现事务的持久性,确保在数据库崩溃后可以恢复未完成的事务,并保证已提交事务的持久性。它确保了事务的ACID特性中的持久性(Durability)。
  • 记录内容:redolog记录的是物理变化,即数据页在磁盘上的实际更改。这使得在崩溃恢复时可以直接应用到数据页上,而无需解析SQL语句。
  • 记录时机:redolog是在InnoDB存储引擎层面操作的,它在事务提交时被写入,是事务级别的记录方式。
  • 使用场景:redolog主要用于保证数据的持久性和一致性,以及在数据库崩溃后的恢复。

其他差异

  • 存储位置:binlog由MySQL Server管理,而redolog是InnoDB存储引擎特有的。
  • 写入方式:binlog可以追加写入,写满一个文件后会创建新文件继续写入,不会覆盖旧日志。redolog是循环写入的,空间固定,写满后会从头开始覆盖旧日志。
  • 可见性:binlog对外部是可见的,可以手动管理和查看。redolog对用户是不可见的,由InnoDB引擎自动管理。
posted @ 2024-06-28 11:37  使用D  阅读(3)  评论(0编辑  收藏  举报