MySQL undo log,redo log和bin log日志文件的生成时间点、层级归属、存储位置及生命周期详解

news2025/2/26 23:23:29

问题:

假如库名叫做A库,表名叫B表,undo log,redo log和bin log,这些日志文件的生成的时间点是什么?是在mysql的哪一层生成的?哪些文件是有buffer的?哪些日志文件是存在磁盘上的?哪些存在内存中?另外如果有buffer,那这个buffer什么时候刷盘的,他会一直存在还是什么时候会被清除掉?如果存在磁盘上,那么它的名字叫什么?如果存在磁盘上,那他是会一直存在还是说什么时候会被清除掉?

答案:

涉及库名 A 和表名 B 的日志行为与全局日志机制一致,日志本身不按库表独立存储

MySQL 日志文件的生成时间点、层级归属、存储位置及生命周期详解

1. Undo Log

生成时间点:

存储位置

文件名/结构

生命周期

内存

Undo Log Buffer

事务执行期间暂存 Undo Log 条目,提交后可能保留(支持 MVCC)

磁盘

undo_001、undo_002(独立 Undo Tablespace,MySQL 8.0+ 默认)或 ibdata1(系统表空间,旧版本)

- 通过 Redo Log 间接保护持久性。

- 事务提交后,Undo Log 段可能被回收(若不被 MVCC 或长事务依赖)。

  • 事务修改数据时:执行 INSERT/UPDATE/DELETE 前生成,用于事务回滚和 MVCC。

  • 层级归属:存储引擎层(InnoDB)。

    存储与生命周期:
Buffer 刷盘时机:
  • 间接刷盘:Undo Log 的修改会先写入 Redo Log Buffer,事务提交时根据 innodb_flush_log_at_trx_commit 决定 Redo Log 刷盘,从而间接保证 Undo Log 的持久性。

  • 清理机制:后台 Purge 线程异步清理不再需要的 Undo Log。

2. Redo Log

生成时间点:

存储位置

文件名/结构

生命周期

内存

Redo Log Buffer

事务执行期间暂存 Redo Log 条目,提交时根据配置刷盘。

磁盘

ib_logfile0、ib_logfile1(默认文件名)

- 循环写入,日志空间重复利用。

- Checkpoint 推进后,旧日志可被覆盖。

  • 数据页修改时:每次数据页变更(如 UPDATE)生成物理日志,确保崩溃恢复。

  • 层级归属:存储引擎层(InnoDB)。

    存储与生命周期:
Buffer 刷盘时机:
  • 事务提交时:若 innodb_flush_log_at_trx_commit=1,提交时同步刷盘。

  • 每秒异步刷盘:若 innodb_flush_log_at_trx_commit=0/2,由后台线程每秒刷盘。

  • Buffer 清理:刷盘后 Redo Log Buffer 空间可复用。

3. Bin Log

生成时间点:

存储位置

文件名/结构

生命周期

内存

Binlog Cache(每个线程独立)

事务执行期间暂存 Binlog 条目,提交时根据配置刷盘。

磁盘

mysql-bin.000001(默认前缀)

- 按顺序写入,文件大小达 max_binlog_size 后切换新文件。

- 根据 expire_logs_days 自动清理过期文件。

  • 事务提交时:记录逻辑操作(如 SQL 语句或行变更),用于主从复制和逻辑恢复。

  • 层级归属:服务层(Server Layer)。

    存储与生命周期:
Buffer 刷盘时机:
  • 事务提交时:若 sync_binlog=1,提交时同步刷盘。

  • 依赖 OS 刷盘:若 sync_binlog=0,由操作系统决定刷盘时机。

  • Buffer 清理:事务提交后 Binlog Cache 立即释放。

4. 日志文件总结

日志类型

生成时间点

生成层级

内存 Buffer

磁盘文件

Buffer 刷盘时机

磁盘文件清理机制

Undo Log

事务修改数据时

存储引擎层(InnoDB)

Undo Log Buffer

undo_001 或 ibdata1

随 Redo Log 刷盘间接持久化

Purge 线程清理(无长事务阻塞)

Redo Log

数据页修改时

存储引擎层(InnoDB)

Redo Log Buffer

ib_logfile0、ib_logfile1

提交时或每秒刷盘(依赖配置)

Checkpoint 推进后循环覆盖

Bin Log

事务提交时

服务层

Binlog Cache

mysql-bin.000001 等

提交时或依赖 OS(依赖配置)

按 expire_logs_days 自动清理过期文件

5. 注意事项(可能存在版本差异)

  1. Undo Log 存储位置:

    • MySQL 8.0+ 默认使用独立 Undo Tablespace(undo_001),旧版本可能存储在 ibdata1。

  2. Bin Log 格式:

    • 支持 Statement、Row、Mixed 格式,文件名固定前缀为 mysql-bin。

  3. Redo Log 文件大小:

    • 由 innodb_log_file_size 和 innodb_log_files_in_group 控制,默认 2 个文件循环使用。

6. 总结

  • Undo Log:事务修改时生成,存储引擎层管理,内存缓冲后通过 Redo Log 间接持久化,磁盘文件可独立或共享。

  • Redo Log:数据变更时生成,存储引擎层管理,内存缓冲后按配置刷盘,磁盘文件循环覆盖。

  • Bin Log:事务提交时生成,服务层管理,内存缓冲后按配置刷盘,磁盘文件按时间或大小清理。

建议配置:

  • 高安全场景:innodb_flush_log_at_trx_commit=1 + sync_binlog=1。

  • 高性能场景:innodb_flush_log_at_trx_commit=2 + sync_binlog=0(需容忍少量数据丢失风险)。

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

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

相关文章

达梦有没有类似oerr的功能

在oracle 23ai的sqlplus中&#xff0c;直接看异常信息说明&#xff1a; 达梦没有此功能&#xff0c;但是可以造一个 cd /home/dmdba cat >err.sql<<eof set echo off set ver off set timing off set lineshow off set feedback off select * from V\$ERR_INFO wher…

实战-网安

面试感受:网安公司前端实习 今天我有幸面试了一家网络安全公司的前端开发实习岗位,整个过程让我受益匪浅,也让我对未来的职业发展有了更清晰的认识。 首先,面试官非常专业且友好,整个面试氛围轻松但不失严谨。面试一开始,面试官简单介绍了公司背景和团队文化,让我对公…

MybatisPlus-扩展功能-枚举处理器

在Mybatis里有一个叫TypeHandler的类型处理器&#xff0c;我们常见的PO当中的这些成员变量的数据类型&#xff0c;它都有对应的处理器&#xff0c;因此它就能自动实现这些Java数据类型与数据库类型的相互转换。 它里面还有一个叫EnumOrdinalTypeHandler的枚举处理器&#xff0…

力扣2454. 下一个更大元素 IV

力扣2454. 下一个更大元素 IV 题目 题目解析及思路 题目要求对于每个数&#xff0c;找到右边比它大的第二个数&#xff0c;并记录在ans数组中 如果是右边第一个大的&#xff0c;就用一个递减栈即可&#xff0c;栈顶元素如果<当前元素则弹出 第二个大数就要利用弹出的栈顶…

unity学习51:所有UI的父物体:canvas画布

目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载&#xff0c;导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas&#xff0c;UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…

Ollama部署与常用命令

Ollama是一款开源工具&#xff0c;其目标是简化大语言模型在本地环境的部署和使用。它支持多种流行的开源大语言模型&#xff0c;如 Llama 2、Qwen2.5等。 通过Ollama&#xff0c;用户无需具备深厚的技术背景&#xff0c;就能在普通的消费级硬件上快速搭建一个强大的语言处理环…

Visual Studio Code 远程开发方法

方法1 共享屏幕远程控制&#xff0c;如 to desk, 向日葵 &#xff0c;像素太差&#xff0c;放弃 方法2 内网穿透 ssh 第二个方法又很麻烦&#xff0c;尤其是对于 windows 电脑&#xff0c;要使用 ssh 还需要额外安装杂七杂八的东西&#xff1b;并且内网穿透服务提供商提供的…

C语言预编译

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、预处理的作用与流程&#xf…

汽车智能制造企业数字化转型SAP解决方案总结

一、项目实施概述 项目阶段划分&#xff1a; 蓝图设计阶段主数据管理方案各模块蓝图设计方案下一阶段工作计划 关键里程碑&#xff1a; 2022年6月6日&#xff1a;项目启动会2022年12月1日&#xff1a;系统上线 二、总体目标 通过SAP实施&#xff0c;构建研产供销协同、业财一…

flowable-ui 的会签功能实现

场景&#xff1a;在进行智慧保时通开发时&#xff0c;有个协作合同入围功能&#xff0c;这个功能的流程图里有个评审小组&#xff0c;这个评审小组就需要进行会签操作&#xff0c;会签完成后&#xff0c;需要依据是否有不通过的情况选择下一步走的流程 思考步骤&#xff1a; 首…

大连指令数据集的创建--数据收集与预处理_02

1.去哪儿爬虫 编程语言&#xff1a;Python爬虫框架&#xff1a;Selenium&#xff08;用于浏览器自动化&#xff09;解析库&#xff1a;BeautifulSoup&#xff08;用于解析HTML&#xff09; 2.爬虫策略 目标网站&#xff1a;去哪儿&#xff08;https://travel.qunar.com/trav…

STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动

SPI总线驱动整体上与I2C总线驱动类型&#xff0c;差别主要在设备树和数据传输上&#xff0c;由于SPI是由4根线实现主从机的通信&#xff0c;在设备树上配置时需要对SPI进行设置。 原理图可知&#xff0c;数码管使用的SPI4对应了单片机上的PE11-->SPI4-NSS,PE12-->SPI4-S…

java医院多维度综合绩效考核源码,医院绩效管理系统,支持一键核算和批量操作,设有审核机制,允许数据修正

医院绩效考核管理系统&#xff0c;java医院绩效核算系统源码&#xff0c;采用多维度综合绩效考核的形式&#xff0c;针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求&#xff0c;对考核方案中各维度进行灵活配置&#xff0c;对各维…

C语言学习笔记-初阶(13)scanf介绍

当我们有了变量&#xff0c;我们需要给变量输入值就可以使用 scanf 函数&#xff0c;如果需要将变量的值输出在屏幕上的时候可以使用 printf 函数&#xff0c;下面看⼀个例子&#xff1a; #include <stdio.h> int main() {int score 0;printf("请输⼊成绩:")…

如何让传统制造企业从0到1实现数字化突破?

随着全球制造业不断向智能化、数字化转型&#xff0c;传统制造企业面临着前所未有的机遇与挑战。数字化转型不仅是技术的革新&#xff0c;更是管理、文化、业务流程等全方位的变革。从零开始&#xff0c;如何带领一家传统制造企业走向数字化突破&#xff0c;是许多企业领导者面…

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取 一、问题背景 政府的icp备案时&#xff0c;或者某些三方SDK以来的管理后台&#xff0c;都需要配置鸿蒙应用的公钥和证书MD5指纹 二、解决方案 专有名词解释&#xff1a; 华为AppGallery Connect简称 AGC平台&#xff0…

【原创工具】同文件夹PDF文件合并 By怜渠客

【原创工具】同文件夹PDF文件合并 By怜渠客 原贴&#xff1a;可批量合并多个文件夹内的pdf工具 - 吾爱破解 - 52pojie.cn 他这个存在一些问题&#xff0c;并非是软件内自主实现的PDF合并&#xff0c;而是调用的pdftk这一工具&#xff0c;但楼主并没有提供pdftk&#xff0c;而…

【红队利器】单文件一键结束火绒6.0

关于我们 4SecNet 团队专注于网络安全攻防研究&#xff0c;目前团队成员分布在国内多家顶级安全厂商的核心部门&#xff0c;包括安全研究领域、攻防实验室等&#xff0c;汇聚了行业内的顶尖技术力量。团队在病毒木马逆向分析、APT 追踪、破解技术、漏洞分析、红队工具开发等多个…

Linux中文件目录类指令

1、pwd指令 基本语法&#xff1a;pwd 功能&#xff1a;显示当前工作目录的绝对路径 1.相对路径访问和绝对路径访问 当前处于home目录下&#xff0c;访问a.txt文件 相对路径访问&#xff1a;kim/better/a.txt&#xff0c;从当前位置开始定位 绝对路径访问&#xff1a;/home…

开源模型应用落地-LangChain实用小技巧-获取token消耗(五)

一、前言 在当今的自然语言处理领域&#xff0c;LangChain 框架因其强大的功能和灵活性而备受关注。掌握一些实用的小技巧&#xff0c;能够让您在使用 LangChain 框架时更加得心应手&#xff0c;从而更高效地开发出优质的自然语言处理应用。 计算 Token 消耗对有效管理和优化语…