MySQL中binlog、redolog与undolog的不同之处解析

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.

在MySQL数据库中,binlog(二进制日志)、redolog(重做日志)和undolog(回滚日志)是三种不同类型的日志文件,它们各自承担着不同的角色以确保数据库的数据一致性和恢复能力。

Binlog (二进制日志)

Binlog是MySQL用来进行数据复制和恢复操作的一个重要组件。它记录了所有修改了数据库状态的语句,比如INSERT、UPDATE、DELETE等。这些记录是以事件形式存储,并且按照它们被执行的顺序来进行记录。
主要用途:

  • 主从复制:通过binlog实现数据在主从服务器之间同步。
  • 点对点恢复:如果需要将数据库回滚到某个特定时间点,可以使用binlog中存储的事件来实现。

特性:

  • 存储格式为二进制。
  • 可配置为按需刷新到磁盘。
  • 可以设置过期时间自动清理旧文件。

Redo Log (重做日志)

Redo Log属于InnoDB存储引擎特有,并且对于保证事务持久性至关重要。当一个事务被提交时,在事务所做更改真正写入表之前,这些更改会先写入到redolog中。如果系统发生故障导致未将内存中修改过但未持久化到磁盘上数据丢失,则可以通过redo log来重新执行这些操作确保数据不会丢失。

主要用途:

  • 故障恢复: 在系统奔溃后使用redo log重新执行那些已经提交但尚未写入硬盘上永久表空间文件里面去得变更操作。

特性:

  • 循环写入方式管理空间。

Undo Log (回滚日志)

Undo Log也是InnoDB引擎专有,在处理事务时非常关键。当进行INSERT、UPDATE或DELETE等操作时, InnoDB会生成相应undo log信息, 该信息能够撤销最近一次修改或者在并发情况下提供旧版本读(即MVCC)所需信息.

主要用途:

  • 提供MVCC: 在多版本并发控制下支持读已提交(Read Committed)和可重读(Repeatable Read)两种隔离级别.
  • 支持DML语句撤销: 如果一个事务需要被回滚, undo log就包含了所有必须应用于数据库以还原原始状态前所作出变化得反向操作.

特性:

  • 存放在共享表空间内部.

总结:

三者各司其职:

  1. BinLog负责记录所有影响数据变动得SQL语句序列, 主从同步与备份还原依赖此机理.
  2. RedoLog确保交易具备ACID属性里面D即Durability永久属性: 即使出现系统奇突然断电情况也能够根据RedoLog完成交易前已经标记为commit状态交易相关影响内容再次刷新至硬盤保存起來.
  3. UndoLog则负责维护多版本并发控制与支援用户层面上可能触及得rollback行为.

每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.

目录
相关文章
|
20天前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
56 6
|
3月前
|
存储 SQL 关系型数据库
MySQL的Redo Log与Binlog机制对照分析
通过合理的配置和细致的管理,这两种日志机制相互配合,能够有效地提升MySQL数据库的可靠性和稳定性。
124 10
|
3月前
|
存储 SQL 关系型数据库
MySQL 核心知识与索引优化全解析
本文系统梳理了 MySQL 的核心知识与索引优化策略。在基础概念部分,阐述了 char 与 varchar 在存储方式和性能上的差异,以及事务的 ACID 特性、并发事务问题及对应的隔离级别(MySQL 默认 REPEATABLE READ)。 索引基础部分,详解了 InnoDB 默认的 B+tree 索引结构(多路平衡树、叶子节点存数据、双向链表支持区间查询),区分了聚簇索引(数据与索引共存,唯一)和二级索引(数据与索引分离,多个),解释了回表查询的概念及优化方法,并分析了 B+tree 作为索引结构的优势(树高低、效率稳、支持区间查询)。 索引优化部分,列出了索引创建的六大原则
|
3月前
|
存储 SQL 关系型数据库
MySQL 核心知识与性能优化全解析
我整理的这份内容涵盖了 MySQL 诸多核心知识。包括查询语句的书写与执行顺序,多表查询的连接方式及内、外连接的区别。还讲了 CHAR 和 VARCHAR 的差异,索引的类型、底层结构、聚簇与非聚簇之分,以及回表查询、覆盖索引、左前缀原则和索引失效情形,还有建索引的取舍。对比了 MyISAM 和 InnoDB 存储引擎的不同,提及性能优化的多方面方法,以及超大分页处理、慢查询定位与分析等,最后提到了锁和分库分表可参考相关资料。
|
5月前
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
214 23
|
10月前
|
存储 SQL 关系型数据库
mysql 的ReLog和BinLog区别
MySQL中的重做日志和二进制日志是确保数据库稳定性和可靠性的关键组件。重做日志主要用于事务的持久性和原子性,通过记录数据页的物理修改信息来恢复未提交的事务;而二进制日志记录SQL语句的逻辑变化,支持数据复制、恢复和审计。两者在写入时机、存储方式及配置参数等方面存在显著差异。
205 6
|
8月前
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
642 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
|
6月前
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
7月前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
146 16
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
1609 4

推荐镜像

更多