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

MySQL三大日志(binlog、redo log和undo log)详解

1.redo log

redo log是InnoDB存储引擎层的日志,又称重做日志文件。 用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来
redo log包括两部分:一个是内存中的日志缓冲(redo log buffer),另一个是磁盘上的日志文件(redo log file)。
mysql支持三种将redo log buffer写入redo log file的时机,可以通过innodb_flush_log_at_trx_commit参数配置,大致就是 每隔一秒钟写一次 、每次事务提交写一次 、每次都写到缓存 每秒从缓存拉一次到文件。

2.undo log

undo log保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读
undo log主要记录了数据的逻辑变化,比如一条INSERT语句,对应一条DELETE的undo log,对于每个UPDATE语句,对应一条相反的UPDATE的undo log,这样在发生错误时,就能回滚到事务之前的数据状态。

3.binlog

binlog是属于MySQL Server层面的,又称为归档日志,属于逻辑日志,是以二进制的形式记录的,用于记录数据库执行的写入性操作(不包括查询)信息,依靠binlog是没有crash-safe能力的。

在实际应用中,binlog的主要使用场景有两个,分别是主从复制和数据恢复

redolog和binlog区别
redo log是属于innoDB层面,binlog属于MySQL Server层面的,这样在数据库用别的存储引擎时可以达到一致性的要求。
redo log是物理日志,记录该数据页更新的内容;binlog是逻辑日志,记录的是这个更新语句的原始逻辑。redo log 它是物理日志,记录内容是“在某个数据页上做了什么修改”,属于 InnoDB 存储引擎。而 binlog 是逻辑日志,记录内容是语句的原始逻辑,类似于“给 ID=2 这一行的 c 字段加 1”,属于MySQL Server 层。

redo log是循环写,日志空间大小固定;binlog是追加写,是指一份写到一定大小的时候会更换下一个文件,不会覆盖。
binlog可以作为恢复数据使用,主从复制搭建,redo log作为异常宕机或者介质故障后的数据恢复使用。

redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。

最后:本文章大部分基于这个文章,只是增加了自己的理解

http://www.lryc.cn/news/139153.html

相关文章:

  • 七大排序算法详解
  • [docker][WARNING]: Empty continuation line found in:
  • 探工业互联网的下一站!腾讯云助力智造升级
  • SpringBoot上传文件的实现与优化
  • 学习python可以做什么?有前景么
  • 还不知道怎么提示LLM?ChatGPT提示入门
  • 反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)
  • uniapp离线打包apk - Android Studio
  • cuda面试准备(一),架构调试
  • docker containers logs清理
  • Ubuntu安装RabbitMQ
  • Vue3获取当前环境信息
  • Linux 系统 diff 文件比较命令详解
  • 【负载均衡】Nacos简单入门
  • 实验一 ubuntu 网络环境配置
  • ubuntu can应用开发环境搭建指南
  • 全流程R语言Meta分析核心技术高阶应用
  • windows下安装使用git-lfs克隆大文件
  • Node.js下载安装及环境配置教程
  • 半导体低压热氧工艺中的真空度精密控制解决方案
  • TCP的可靠性之道:确认重传和流量控制
  • 基于spring boot校园疫情信息管理系统/疫情管理系统
  • 使用Python批量将飞书文档转为MD
  • Nacos配置管理、Feign远程调用、Gateway服务网关
  • 解决Spring Boot前后端分离开发模式中的跨域问题
  • 常见前端面试之VUE面试题汇总五
  • 带着问题看SpringBoot
  • 【Go 基础篇】Go语言匿名函数详解:灵活的函数表达式与闭包
  • MobileNet、MobileNetV2和MobileNetV3创新点总结
  • 算法:数据转换处理2(云台显控)