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

〔 MySQL 〕中三种重要的日志类型

目录

1.bin log(二进制日志)

2.redo log(重做日志)

3.undo log(回滚日志)

4.对比


在MySQL数据库中,bin log、redo log和undo log是三种重要的日志类型,它们在数据恢复、事务处理和主从复制等方面发挥着关键作用。

1.bin log(二进制日志)

  • 功能:记录所有对数据库进行修改的SQL语句,包括数据定义语言(DDL)和数据操纵语言(DML)语句。
  • 用途
    • 数据恢复:在数据库出现故障时,可以利用bin log中的记录恢复数据到一个特定的时间点。
    • 主从复制:在主从架构中,从库可以通过读取主库的bin log来同步数据,实现数据的复制和备份。
    • 审计和监控:通过分析bin log,可以监控数据库中的数据变更,进行审计和性能分析。
  • 格式
    • 行格式(ROW):记录每一行数据的变化,适合对数据一致性要求高的场景。
    • 语句格式(STATEMENT):记录执行的SQL语句,适合简单的插入、更新和删除操作。
    • 混合格式(MIXED):结合了行格式和语句格式,适合大多数场景。

2.redo log(重做日志)

  • 功能:记录对数据页的具体修改操作,确保事务的持久性和数据一致性。
  • 用途
    • 崩溃恢复:在数据库崩溃后,通过redo log恢复已提交事务但还未落盘的数据。
    • 事务持久性:通过WAL(Write-Ahead Logging)技术,先写日志再写磁盘,保证事务的持久性。
  • 写入时机
    • 事务提交时
    • redo log buffer剩余空间小于1/2时
    • 每秒刷新一次

3.undo log(回滚日志)

  • 功能:记录更新前的数据,用于事务回滚和多版本并发控制(MVCC)。
  • 用途
    • 事务回滚:当事务执行失败或需要回滚时,利用undo log将数据恢复到事务开始之前的状态。
    • 多版本并发控制(MVCC):通过undo log实现快照读,允许用户读取到当前事务操作之前的数据版本。
  • 存储机制
    • undo log采用分段(segment)的方式进行存储,每个回滚段中有1024个undo log segment。

4.对比

特性bin logredo logundo log
目的记录所有数据库更改,支持数据恢复和主从复制确保事务的持久性和数据一致性提供回滚操作和多版本控制
存储内容SQL语句或更改事件对数据页的具体修改操作更新前的数据
位置存储在磁盘上,通常以binlog.000001命名存储在InnoDB的日志文件中,如ib_logfile0, ib_logfile1存储在InnoDB的数据文件中
使用场景数据恢复、主从复制、审计崩溃恢复、事务一致性事务回滚、MVCC
读取方式使用mysqlbinlog工具查看和处理由数据库内部管理,用户一般不直接查看由数据库内部管理,用户一般不直接查看

这些日志在MySQL数据库中协同工作,确保了数据的完整性、一致性和持久性。在实际应用中,合理配置和管理这些日志对于数据库的性能和可靠性至关重要。


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

相关文章:

  • vue-office:word(.docx)、pdf、excel(.xlsx,.xls)格式文件预览
  • (免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统
  • go-rod vs Selenium:自动化测试工具的比较与选择
  • Python浪漫之画明亮的月亮
  • IDEA怎么定位java类所用maven依赖版本及引用位置
  • Go语言中的内存分配与初始化:new与make函数详解
  • Java网络编程 - cookiesession
  • Vulnhub靶场 Jangow: 1.0.1 练习
  • C语言超详细教程
  • 挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析
  • 网络性能及IO性能测试工具
  • golang实现TCP服务器与客户端的断线自动重连功能
  • 优先算法 —— 双指针系列 - 复写零
  • 青训营刷题笔记17
  • [自动化]获取每次翻页后的页面 URL
  • Java核心特性解析:方法、Stream流、文件与IO详解
  • 每日OJ_牛客_合唱队形_DP_C++_Java
  • 数据库连接池(二)
  • Vue v-if 与 v-for 使用指南:优先级、注意事项及常见错误防范
  • Independent Component Analysis
  • 如何利用ros搭建虚拟场景通过仿真机器人完成一次简单的SLAM建图、导航规划(超简单)?——学习来源:机器人工匠阿杰
  • SpringBoot多文件上传
  • springboot3如何集成knife4j 4.x版本及如何进行API注解
  • Spring集成测试
  • 电子应用设计方案-21:智能取暖系统方案设计
  • C语言之函数的参数