binlog、redolog 和 undolog区别 ?

一、binlog、redolog 和 undolog区别 ?


在MySQL数据库中,binlog、redolog 和 undolog 都是日志类型文件,但它们各自的作用和实现方式有所不同。


binlog主要用来对数据库进行数据备份、崩溃恢复和数据复制等操作,


redo log 和 undo log 主要用于事务管理,记录的是数据修改操作和回滚操作。


redolog用来做恢复,undolog用来做回滚

崩溃恢复,是指在数据库系统因为某种原因而发生崩溃或非正常关闭后,通过一系列机制和步骤来恢复数据库到一个一致性和可用的状态。

崩溃恢复是数据库管理系统的重要功能,它确保数据库在出现异常情况后能够自动恢复,避免数据丢失或数据库状态不一致的问题。


在MySQL中,redo log和undo log只适用于InnoDB存储引擎,因为要支持事务。而不适用于MyISAM等其他存储引擎。而binlog则适用于所有存储引擎。


二、binlog

binlog是MySQL用于记录数据库中的所有DDL语句和DML语句的一种二进制日志。它记录了所有对数据库结构和数据的修改操作,如insert、update 和 delete 等。

binlog主要用来对数据库进行数据备份、灾难恢复和数据复制等操作 binlog的格式分为基于语句的格式和基于行的格式。


三、Redo Log

Redo Log是MySQL用于实现崩溃恢复 和 数据持久性的一种机制 在事务进行过程中,MySQL会将事务做了什么改动到Redo Log中。

当系统崩溃或者发生异常情况时,MySQL会利用Redo Log中的记录信息来进行恢复操作,将事务所做的修改持久化到磁盘中。


四、Undo Log

Undo Log则用于在事务回滚 或 系统崩溃时撤销(回滚)事务所做的修改当一个事务执行过程中,MySQL会将事务修改前的数据记录到Undo Log中。如果事务需要回滚,

则会从Undo Log中找到相应的记录来撤销事务所做的修改。另外,Undo Log还支持MVCC(多版本并发控制)机制,用于在并发事务执行时提供一定的隔离性。


五、扩展知识

undolog 和 redolog区别

  • 目的:Redo log的目的是为了保证事务的持久性,主要用于崩溃恢复,而 Undo log 的目的是为了保证事务的原子性和一致性,主要用于事务回滚。

  • 记录内容:Redo Log 记录了事务的所有数据更改(这些日志不仅仅记录了数据更改的最终结果,而且还记录了实现这些更改的具体操作)。而 Undo log 记录的是事务执行前的内容。

posted @ 2025-06-04 21:13  jock_javaEE  阅读(52)  评论(0)    收藏  举报