当前位置: 首页 > news >正文

MySQL的日志系统(redolog、binlog、WAL技术)

MySQL 的日志系统是保证数据一致性和可靠性的核心组件,其中redo logbinlog 和 WAL(Write-Ahead Logging)技术是最重要的组成部分。下面分别介绍它们的作用和关联:

1. Redo Log(重做日志)

  • 作用:确保事务的持久性(Durability),防止 MySQL 崩溃后数据丢失。
  • 原理
    • 当执行写操作(如INSERT/UPDATE)时,InnoDB 引擎会先将修改记录写入 redo log,再更新内存中的数据页(Buffer Pool)。
    • 即使 MySQL 崩溃,重启后可以通过 redo log 恢复未刷写到磁盘的数据页,保证事务已提交的修改不丢失。
  • 特点
    • 属于 InnoDB 存储引擎特有,物理日志(记录 “某个数据页做了什么修改”)。
    • 固定大小(可配置),循环写入(空间满后覆盖旧日志)。
    • 写入速度快,采用顺序 IO。

2. Binlog(二进制日志)

  • 作用:记录所有数据修改操作,用于数据备份、主从复制和数据恢复。
  • 原理
    • 无论使用哪种存储引擎(InnoDB/MyISAM 等),MySQL 服务器层都会记录 binlog。
    • 记录逻辑操作(如 “给 ID=1 的行的 age 字段加 1”),而非物理地址。
  • 特点
    • 追加写入,不会覆盖旧日志(可通过配置自动轮转)。
    • 有三种格式:STATEMENT(记录 SQL 语句)、ROW(记录行的变更)、MIXED(混合模式)。
    • 主从复制中,从库通过读取主库的 binlog 重放操作,实现数据同步。

3. WAL(Write-Ahead Logging,预写日志)技术

  • 核心思想先写日志,再写磁盘
  • 应用场景
    • InnoDB 引擎通过 WAL 技术将 redo log 作为 “预写日志”:事务提交时,先确保 redo log 写入磁盘,再异步将内存中的数据页刷到磁盘(减少随机 IO)。
    • 这样既保证了数据安全性,又提升了写入性能(日志是顺序写入,比随机写磁盘快得多)。

三者关联:事务提交流程

  1. 事务开始,执行修改操作,先在内存中更新数据页(Buffer Pool)。
  2. 生成对应的 redo log(记录物理修改),放入 redo log buffer。
  3. 事务提交时,将 redo log 从 buffer 刷到磁盘(确保持久化)。
  4. 同时,MySQL 服务器层生成 binlog,记录该事务的逻辑操作。
  5. 最后,InnoDB 将 binlog 的位置信息写入 redo log(确保两者同步),事务完成。
  6. 后台线程异步将内存中的数据页刷到磁盘(数据文件)。

总结

  • redo log:保障崩溃恢复,InnoDB 特有,物理日志,循环写。
  • binlog:保障数据备份和主从复制,服务器层通用,逻辑日志,追加写。
  • WAL:通过 “先写日志再写磁盘” 的策略,平衡性能与数据安全性,是 redo log 的核心实现思想。

文章转载自:

http://bU5dIWBU.dbLgm.cn
http://fT6LqKwH.dbLgm.cn
http://71voDMhf.dbLgm.cn
http://o0YZXAkR.dbLgm.cn
http://UKD54D0S.dbLgm.cn
http://YbmfbeR6.dbLgm.cn
http://t8Oe4Gdk.dbLgm.cn
http://VfUEIc60.dbLgm.cn
http://cOQzA8FS.dbLgm.cn
http://Ax3Le47Q.dbLgm.cn
http://drdaUoTX.dbLgm.cn
http://z8aJraci.dbLgm.cn
http://YG1J10VV.dbLgm.cn
http://YD9dldrC.dbLgm.cn
http://LJs0t0p9.dbLgm.cn
http://qXOTRXV4.dbLgm.cn
http://gmRpHdrh.dbLgm.cn
http://Ksoddq1x.dbLgm.cn
http://j3pDsFTM.dbLgm.cn
http://bqw8WCTz.dbLgm.cn
http://rO741TfF.dbLgm.cn
http://ricP5TOh.dbLgm.cn
http://FPjS0MBI.dbLgm.cn
http://N1leUVtY.dbLgm.cn
http://R4rg97Jf.dbLgm.cn
http://vHAXZpit.dbLgm.cn
http://0MnUzhLP.dbLgm.cn
http://IQQ2Pd8m.dbLgm.cn
http://MJXgq7NN.dbLgm.cn
http://hmRltOoW.dbLgm.cn
http://www.dtcms.com/a/383618.html

相关文章:

  • 贪心算法应用:半导体晶圆生产问题详解
  • 按键精灵解决重复性点击
  • 索引-分类
  • webrtc弱网-IntervalBudget类源码分析与算法原理
  • 第20课:数据治理与合规
  • 模型训练中的数据泄露:原理解析与实战防范指南
  • 凌晨0-3点不睡,你熬的不是夜,是人生!
  • [哈希表]966. 元音拼写检查器
  • 密码库的轻量化定制裁剪:技术原理与实践指南
  • Tomcat vs JBoss:轻量级与重型Java服务器对比
  • v-model与-sync的演变和融合
  • Vue的快速入门
  • 26考研——进程与线程(2)
  • Java基础 9.14
  • Node.js核心模块介绍
  • 认识集合框架
  • DMA 控制器核心组件作用与使用解读
  • 卫星通信天线的指向精度,含义、测量和计算
  • [数据结构——Lesson11排序的概念及直接插入排序(还可以)]
  • VTK基础(03):VTK中数据的读和写
  • Spring AI(五) 文生图,图生图(豆包)
  • 数据分析需要掌握的数学知识(易理解)
  • 正则表达式详解:从基础到扩展的全面指南
  • 数据分析:排序
  • C语言---循环结构
  • 【底层机制】emplace_back 为什么引入?是什么?怎么实现的?怎么正确用?
  • 基于LSTM深度学习的电动汽车电池荷电状态(SOC)预测
  • 机器学习周报十三
  • 记录word插入文字/图片,生成新word并转为pdf
  • 【ROS2】Concept(Basic)