MySql 三大日志(redolog、undolog、binlog)详解

news2025/5/9 23:54:35

在这里插入图片描述![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/aa730ab3f84049638f6c9a785e6e51e9.png


1. redo log:“你他妈别丢数据啊!”

干啥的?
这货是InnoDB的“紧急备忘录”。比如你改了一条数据,MySQL怕自己突然断电嗝屁了,数据没存到硬盘上,所以它先把你的操作草草写个纸条(redo log),回头再慢慢往硬盘里塞。

咋工作的?

  • 写数据时:你改数据,先扔到内存的Buffer Pool里(内存快啊!),但内存一断电就凉了。所以InnoDB立马在redo log buffer里记一笔:“用户xxx在xx时间把id=1的数据从100块改成了200块”。
  • 提交事务时:这纸条(redo log)会被刷到硬盘的ib_logfile文件里(这就是持久化)。哪怕这时候MySQL崩了,重启后也能拿着这纸条把没存完的数据补上。

为啥叫redo?
因为它是“重做日志”——万一数据没存完,就按这日志重新搞一遍,保证数据不丢。
吐槽:这货就是个“备胎”,平时不显山露水,关键时刻(比如崩溃恢复)才出来擦屁股。


2. undo log:“我他妈还能反悔!”

干啥的?
这货是“后悔药”。比如你改了一条数据,结果突然想撤回(ROLLBACK),或者别人在读旧版本数据(MVCC),就靠undo log把数据倒带回去

咋工作的?

  • 改数据前:InnoDB会先把旧数据复制一份,存到undo log里,比如“id=1的数据原本是100块”。
  • 回滚时:直接拿undo log里的旧数据覆盖回去,假装啥都没发生。
  • 持久化?:undo log也会写到硬盘(ibdata或.ibd文件),因为MySQL崩了也得能回滚啊!

吐槽:这玩意儿就是个“时光机”,专治手贱改错数据。但副作用是——占地方(尤其是长事务不提交,undo log会越堆越多,最后硬盘爆炸)。


3. binlog:“老子要搞主从复制!”

干啥的?
这货是MySQL Server层的“广播员”。不管用啥存储引擎(InnoDB、MyISAM),只要改了数据,binlog就会记下来,方便之后主从同步或者数据恢复

咋工作的?

  • 写数据时:比如你执行一个UPDATE,Server层会生成一条binlog,记录“在xx时间执行了啥SQL”。
  • 提交事务时:binlog会刷到硬盘的binlog文件里(比如mysql-bin.000001)。
  • 和redo log的关系?:这俩货要搞“两阶段提交”(2PC),保证数据一致性。
    • Prepare阶段:redo log写完了,但标个“待定”。
    • Commit阶段:binlog写完了,再给redo log标个“确认”。
      这样就算中间崩了,MySQL也能根据这俩日志判断该提交还是回滚。

吐槽:binlog就是个“大喇叭”,主库干了啥,从库都得跟着学。但写这玩意儿慢的一批(尤其是sync_binlog=1时,每次提交都刷盘),所以高并发时容易成瓶颈。


总结对比:

redo logundo logbinlog
谁家的InnoDB亲儿子InnoDB亲儿子MySQL Server层的干儿子
存啥物理日志(在哪个页改了啥)逻辑日志(旧数据长啥样)逻辑日志(执行的SQL语句)
干啥用崩溃恢复(保数据)回滚+MVCC(保一致性)主从同步+数据恢复(保逻辑)
吐槽“硬盘不够?循环覆盖!”“长事务我***弄死你!”“sync_binlog=1?你硬盘是SSD吗!”

最后一句忠告

  • 想不丢数据?redo log和binlog一个都不能少(除非你心大)。
  • 想不卡死?别开长事务,不然undo log能把你硬盘塞成砖头。
  • 想主从不翻车?binlog用ROW格式,别用Statement(鬼知道SQL里有啥骚操作)。

完事儿!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2339105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP:九.WEB机器人

概念 Web机器人是能够在无需人类干预的情况下自动进行一系列Web事务处理的软件程序。人们根据这些机器人探查web站点的方式,形象的给它们取了一个饱含特色的名字,比如“爬虫”、“蜘蛛”、“蠕虫”以及“机器人”等!爬虫概述 网络爬虫(英语:web crawler),也叫网络蜘蛛(…

2025妈妈杯数学建模C题完整分析论文(共36页)(含模型建立、可运行代码、数据)

2025 年第十五届 MathorCup 数学建模C题完整分析论文 目录 摘 要 一、问题分析 二、问题重述 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1代码(仅供参考) 4.1.4问题1求解结果(仅…

数据结构排序算法全解析:从基础原理到实战应用

在计算机科学领域,排序算法是数据处理的核心技术之一。无论是小规模数据的简单整理,还是大规模数据的高效处理,选择合适的排序算法直接影响着程序的性能。本文将深入解析常见排序算法的核心思想、实现细节、特性对比及适用场景,帮…

UMG:ListView

1.创建WBP_ListView,添加Border和ListView。 2.创建Object,命名为Item(数据载体,可以是其他类型)。新增变量name。 3.创建User Widget,命名为Entry(循环使用的UI载体).添加Border和Text。 4.设置Entry继承UserObjectListEntry接口。 5.Entry中对象生成时…

每天学一个 Linux 命令(18):mv

​​可访问网站查看,视觉品味拉满: http://www.616vip.cn/18/index.html 每天学一个 Linux 命令(18):mv 命令功能 mv(全称:move)用于移动文件/目录或重命名文件/目录,是…

ubuntu24.04上使用qemu和buildroot模拟vexpress-ca9开发板构建嵌入式arm linux环境

1 准备工作 1.1 安装qemu 在ubuntu系统中使用以下命令安装qemu。 sudo apt install qemu-system-arm 安装完毕后,在终端输入: qemu- 后按TAB键,弹出下列命令证明安装成功。 1.2 安装arm交叉编译工具链 sudo apt install gcc-arm-linux-gnueabihf 安装之…

IntelliSense 已完成初始化,但在尝试加载文档时出错

系列文章目录 文章目录 系列文章目录前言一、原因二、使用步骤 前言 IntelliSense 已完成初始化,但在尝试加载文档时出错 File path: E:\QtExercise\DigitalPlatform\DigitalPlatform\main\propertyWin.ui Frame GUID:96fe523d-6182-49f5-8992-3bea5f7e6ff6 Frame …

【更新完毕】2025泰迪杯数据挖掘竞赛A题数学建模思路代码文章教学:竞赛论文初步筛选系统

完整内容请看文末最后的推广群 基于自然语言处理的竞赛论文初步筛选系统 基于多模态分析的竞赛论文自动筛选与重复检测模型 摘要 随着大学生竞赛规模的不断扩大,参赛论文的数量激增,传统的人工筛选方法面临着工作量大、效率低且容易出错的问题。因此&…

服务器内存规格详解

服务器内存规格详解 一、内存安装原则与配置规范 1. 内存槽位安装规则 规则描述CPU1对应的内存槽位至少需配置一根内存禁止混用不同规格(容量/位宽/rank/高度)内存条,需保持相同Part No.推荐完全平衡的内存配置,避免通道/处理器…

Vue3+Vite+TypeScript+Element Plus开发-22.客制Table组件

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由 -动态增加路由 动态路由-动态删除…

江苏广电HC2910-创维代工-Hi3798cv200-2+8G-海美迪安卓7.0-强刷包

江苏广电HC2910-创维代工-Hi3798cv200-28G-海美迪安卓7.0-强刷包 说明 1、由于原机的融合网关路由不能设置,原网口无法使用,需要用usb2.0的RJ45usb网卡接入。 通过usb接口网卡联网可以实现百兆网口连接。原机usb3.0的接口可以以接入硬盘,播放…

nvm切换node版本后,解决npm找不到的问题

解决方法如下 命令行查看node版本 node -v找到node版本所对应的npm版本 点击进入node版本 npm对应版本下载 点击进入npm版本 下载Windows 压缩包 下载完成后,解压,文件改名为npm 复制到你nvm对应版本的node_modules 下面 将下载的npm /bin 目录…

Windows系统安装MySQL安装实战分享

以下是在 Windows 系统上安装 MySQL 的详细实战步骤,涵盖下载、安装、配置及常见问题处理。 一、准备工作 下载 MySQL 安装包 访问 MySQL 官网。选择 MySQL Community Server(免费版本)。根据系统位数(32/64位)下载 …

Vue 人看 React useRef:它不只是替代 ref

如果你是从 Vue 转到 React 的开发者,初见 useRef 可能会想:这不就是 React 版的 ref 吗?但真相是 —— 它能做的,比你想象得多得多。 👀 Vue 人初见 useRef 在 Vue 中,ref 是我们访问 DOM 或响应式数据的…

零成本自建企业级SD-WAN!用Panabit手搓iWAN实战

我们前面提到过,最开始了解到Panabit,是因为他的SD-WAN产品(误以为是外国货?这家国产SD-WAN神器竟能免费白嫖,附Panabit免费版体验全记录);现在发现,其SD-WAN的技术基础是iWAN&#…

Unity-微信截图功能简单复刻-03绘制空心矩形

思路-绘制空心矩形 拓展UGUI的Graphic类,实现拖拽接口。 开始拖拽时记录鼠标位置, 使用拖拽中的鼠标位置和记录的位置,计算矩形顶点,绘制矩形。 两个三角形合并为一个矩形,作为空心矩形的一条边,四个边合并为空心矩形…

国产品牌芯洲科技100V降压芯片系列

SCT2A25采用带集成环路补偿的恒导通时间(COT)模式控制,大大简化了转换器的片外配置。SCT2A25具有典型的140uA低静态电流,采用脉冲频率调制(PFM)模式,它使转换器在轻载或空载条件下实现高转换效率。 芯洲科技100V降压芯片系列提供丰富的48V系…

研一自救指南 - 07. CSS面向面试学习

最近的前端面试多多少少都会遇到css的提问,感觉还是要把重点内容记记背背。这里基于b站和我自己面试的情况整理。 20250418更新: 1. BFC Block Formatting Context,一个块级的盒子,可以创建多个。里面有很多个块,他们…

图灵奖得主LeCun:DeepSeek开源在产品层是一种竞争,但在基础方法层更像是一种合作;新一代AI将情感化

图片来源:This is World 来源 | Z Potential Z Highlights: 新型的AI系统是以深度学习为基础,能够理解物理世界并且拥有记忆、推理和规划能力的。一旦成功构建这样的系统,它们可能会有类似情感的反应,但这些情感是基…

使用Redis5.X部署一个集群

文章目录 1.用Redis5.x来创建Cluste2. 查看节点信息 nodes3. 添加节点 add-node4.删除节点 del-node5.手动指定从节点 replicate6.检查集群健康状态 check 建议使用5.x版本。 首先,下载Redis,根据自己的环境选择版本。 一键启动Redis集群文件配置。 ech…