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

MySQL的三大日志

        MySQL数据库系统中的三大日志——Undo LogRedo LogBinlog,各自扮演着重要的角色,确保了数据库的原子性、持久性和一致性

Undo Log(撤销日志)

定义:


Undo Log 是用于事务回滚的日志,它记录了事务发生之前的数据状态,用于在事务执行失败或用户执行ROLLBACK时,将数据恢复到事务开始前的状态。

特点:


回滚操作:当事务需要回滚时,Undo Log 中的记录会被用来撤销已经执行的操作。
MVCC(多版本并发控制):Undo Log 还用于实现MVCC,使得不同的事务能够看到数据的不同版本,从而支持高并发的读取操作。

工作原理:


当一个事务开始时,MySQL会为该事务生成Undo Log
如果事务执行了修改数据的操作(如INSERT、UPDATE、DELETE),MySQL会首先将修改前的数据记录到Undo Log中。
如果事务执行失败或被回滚,MySQL会使用Undo Log中的记录来撤销已做的修改

Redo Log(重做日志)

定义:


Redo Log 是一种用于保证事务持久性的日志,它记录了事务对数据所做的修改。在系统崩溃恢复时,Redo Log 用来恢复尚未写入磁盘的数据

特点:


确保持久性:即使系统发生故障,Redo Log 也能保证已经提交的事务所做的更改不会丢失。
减少磁盘I/O:通过将多个修改操作批量写入Redo Log,可以减少对磁盘的操作次数,提高数据库性能。

工作原理:


当事务提交时,MySQL会将事务中的所有修改操作记录到Redo Log中。
Redo Log是按照顺序写入的,并且会定期刷新到磁盘上,以保证日志的持久性。
在系统崩溃后,MySQL会根据Redo Log恢复数据,将未写入磁盘的数据重新应用到数据库中。

Binlog(二进制日志)

定义:


Binlog 是MySQL数据库的另一种日志,它记录了数据库的所有更改操作,包括数据修改数据库结构变更。Binlog主要用于数据备份、恢复和主从复制

特点:


数据备份和恢复:通过Binlog可以恢复或复制数据库中的数据。
主从复制:在主从复制架构中,Binlog是主服务器向从服务器传递数据变更的主要方式。

工作原理:


当数据库发生数据变更时,MySQL会将这些变更操作记录到Binlog中。
Binlog记录的是操作事件的逻辑日志,而不是数据本身
Binlog可以配置为三种格式:STATEMENT(基于SQL语句)ROW(基于数据行)MIXED(混合模式)
在主从复制中,从服务器会从主服务器上获取Binlog,并在本地重新执行这些日志中的操作,从而保持数据的一致性。

总结

Undo Log:用于事务回滚MVCC,记录数据修改前的状态
Redo Log:用于系统崩溃恢复确保事务持久性,记录数据修改后的状态。
Binlog:用于数据备份、恢复和主从复制,记录数据变更的逻辑操作


        这三种日志在MySQL数据库中共同工作,确保了数据库的高可用性、可靠性和数据一致性。


http://www.kler.cn/a/472997.html

相关文章:

  • JS进阶--JS听到了不灭的回响
  • Mysql 性能优化:索引条件下推(ICP)
  • LabVIEW调用不定长数组 DLL数组
  • 二、模型训练与优化(1):构建并训练模型
  • 概率基本概念 --- 离散型随机变量实例
  • Redis中的主从/Redis八股
  • 【机器视觉】OpenCV 滤波器(卷积、方盒/均值滤波、高斯滤波、中值/双边滤波、sobel/scharr/拉普拉斯算子、边缘检测Canny)
  • 深入解读MVCC中的三大日志:Undo Log、Redo Log和B-Log
  • Julia语言的数据结构
  • 应急响应——Windows / Linux 排查笔记
  • HTML5语义化编程
  • Unity 加载Dicom文件进行三维模型重建,可以查看不同MPR断层图像,横截面、冠状面、矢状面、伪彩色显示,窗宽窗位调节。模型剖切功能。
  • Jmeter-压测时接口如何按照顺序执行
  • 拥有23种PDF/图片转换 数据提取 - 免费在线工具
  • 江科大STM32入门——IIC通信笔记总结
  • ELK的搭建
  • VSCode 中的 launch.json 配置使用
  • Vue3组件通讯——自定义事件(子->父)
  • 洛谷P1617———数字转英文
  • 领域驱动设计(DDD)在C#中的实践
  • HTML5 翻转动画(Flip Animation)详解
  • 英伟达Project Digits赋能医疗大模型:创新应用与未来展望
  • 第十一章 测试——1.单元测试
  • 如何使用PyTorch进行模型微调
  • MyBatis面试-1
  • 【git】在服务器使用docker设置了一个gogs服务器,访问和现实都不理想