【MySQL | 第一篇】undo log、redo log、bin log三者之间的区分?

undo log、redo log、bin log三者之间的区分?

产生的时间点、日志内容、用途 三方面展开论述即可

1.undo log------撤销日志

  • 时间点:事务开始之前产生,根据当前版本的数据生成一个undo log,也保存在事务开始之前

  • 作用:在InnoDB存储引擎中,用于保存旧的数据版本,以便在事务回滚时使用。

  • 内容:旧版本的数据

  • 用途:

    • 数据的回滚(撤销)
    • 保证MVCC
    • 支持事务的ACID特性,确保 数据原子性和一致性

2.redo log------重做日志

  • 时间点:事务开始之后产生,在事务的执行过程中写入日志数据

  • 作用:在InnoDB存储引擎中用于确 保事务的持久性

  • 内容:物理日志,对数据所做的修改。

  • 用途:在系统崩溃时,用于同步数据。

  • 处理过程

    • 分为两部分,重做日志缓存(redo log buffer,存在于内存);重做日志文件(redo log file,存在于磁盘)
    • 当事务提交之后,将所有修改信息存储到日志文件中,而不是磁盘中,即WAL(Write-Ahead-Logging)预写日志系统
    • 好处:
      • 保证事务的持久性
      • 只记录对数据的修改,数据比一页数据小很多,大大减少IO频率
      • redo log写入是顺序写入,而修改磁盘是随机写入

3.bin log------二进制日志

  • 作用:记录所有修改数据的SOL语句,用于数据复制和数据恢复。
  • 内容:插入、更新、删除等修改数据或数据结构的操作。
  • 用途:
    • 复制:在主从复制中,从服务器会读取主服务器的二进制日志文件,以保持与主服务器的数据同步。
    • 数据恢复:可以使用二进制日志进行点时间恢复。

4.Error log------错误日志

  • 作用:记录mysqld启动、运行或停止时出现的问题。
  • 内容:包括启动、运行或关闭mysql时的问题、以及服务或服务器出错的信息。
  • 用途:诊断问题,确定哪些客户端尝试连接,以及是否出现了表的损坏等。

5.General Query log------查询日志

  • 作用:记录所有到MVSOL服务器的连接和查询。
  • 内容:客户端连接及每个连接发送给服务器的所有SOL查询。
  • 用途:分析和查找可能存在的问题。但在生产环境中,常常因为性能原因而不启用。

6.Slow Query log慢查询日志

  • 作用:记录查询执行时间超过long query time值的所有SOL查询。
  • 内容:响应时间超出预设阈值的SOL查询。
  • 用途:帮助找到、分析并优化性能较差的查询。

7.小结

产生时间点 内容 用途
undo log 事务开始之前写入并保存 逻辑日志,旧版本数据 回滚,提供多版本并发控制下的读,保证事务的原子性和一致性
redo log 事务开始之后开始,根据事务执行写入 物理日志,对数据的修改 mysql宕机,用于恢复数据到磁盘,保证事务的持久性
bin log 事务提交的时候,一次性将事务中的所有sql记录到bin log 逻辑日志,事务中所有的sql 主从复制,基于时间点的数据恢复
相关推荐
花间相见17 分钟前
【LangChain组件03】—— LangChain Agents 执行与状态:工作流程与状态管理实战
java·前端·langchain
敲代码的嘎仔20 分钟前
28届后端开发-海康威视日常实习一面(已OC)
java·开发语言·后端·面试·海康威视·实习·大厂
这个DBA有点耶35 分钟前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步
数据库·架构·dba
青春之我_XP36 分钟前
MySQL 常用日期函数 实战指南
数据库·sql·mysql·数据分析·数据库开发·日期函数
Nturmoils36 分钟前
sys_dump 备了库,角色和权限别漏在外面
数据库
接着奏乐接着舞。1 小时前
【2026】73道Redis 常见面试题与参考答案
数据库·redis·后端·缓存
程序员黎剑2 小时前
Spring-Bean生命周期-构造器访问Autowired字段为null
java·后端·spring
古法安卓2 小时前
Android-重启流程源码解析
android·java·android studio
其实防守也摸鱼2 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
清水白石0082 小时前
Python 类型设计深度解析:TypedDict 能否替代 dataclass?从 JSON 数据边界到 API 设计的最佳实践
java·python·json