binlog、redolog和undolog

binlog、redolog和undolog

前提

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

理解

binlog、redolog和undolog 都是 MySQL 数据库中的日志文件。

binlog(归档日志)用于记录对数据库所做的更改操作,例如 INSERT、UPDATE 和 DELETE 等语句,以便进行数据备份和恢复操作。它也是基于语句的复制和行级复制的核心技术。

redolog(重做日志)是记录所有修改过的数据页,并把这些修改操作顺序地记录下来。它用于提供事务的持久性,并确保事务提交后数据一定被写入到磁盘。Redo Log 可以重新执行事务进行恢复。

undolog(撤销日志)主要用于支持事务回滚操作。当事务执行过程中需要进行回滚时,数据库引擎会根据相应的 undo log 记录来恢复事务执行前的状态。Undolog 用于保证 ACID 特性中的事务原子性和隔离性。

综上所述,binlog、redolog 和 undolog 都是 MySQL 数据库中的重要日志文件,它们分别记录数据库的更改操作事务的持久性事务回滚操作,以确保数据库的正确性和一致性。

作用

Binlog的作用

  • 数据恢复:Binlog允许在数据丢失或损坏的情况下进行数据恢复,通过重放Binlog中的操作,可以还原数据库状态。
  • 主从复制:Binlog用于实现主从复制,通过将主数据库的Binlog同步到从数据库,从而实现数据复制。

Redo Log的作用

  • 崩溃恢复:Redo Log用于崩溃恢复,即在数据库异常关闭后,通过Redo Log中的记录将数据库还原到一致状态。
  • 高性能写入:Redo Log的特性允许高性能的写入操作,因为它可以追加写入而不需要随机I/O。

Undo Log的作用

  • 事务回滚:Undo Log记录了事务执行前的数据,允许在事务回滚时还原数据。
  • MVCC实现:MySQL使用Undo Log来实现多版本并发控制(MVCC),允许不同事务之间的隔离性。

如何一起工作?

这三个日志组件通常一起工作,以确保数据库的一致性和可恢复性。当执行一个事务时,MySQL按以下步骤工作:

  1. 事务的更改首先记录到Undo Log,以便在需要时回滚事务。
  2. 然后,事务的更改被写入Redo Log,以确保即使在系统崩溃时,数据不会丢失。
  3. 最后,数据的更改被写入数据库表。
相关推荐
HackTwoHub3 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
l1t3 小时前
DeepSeek总结的DuckLake构建基于 SQL 原生表格式的下一代数据湖仓
数据库·sql
KmSH8umpK4 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第八篇
数据库·redis·分布式
TDengine (老段)4 小时前
从施工监测到运营预警,桥科院用 TDengine 提升桥梁数据管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
S1998_1997111609•X5 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
KmSH8umpK6 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第七篇
数据库·redis·分布式
BU摆烂会噶7 小时前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain
l1t8 小时前
DeepSeek总结的DuckLake 入门
数据库
Joseph Cooper8 小时前
RAG 与 AI Agent:智能体真的需要检索增强生成吗?
数据库·人工智能·ai·agent·rag·上下文工程
light blue bird8 小时前
主子端台二分法任务汇总组件
前端·数据库·.net·桌面端winform