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

MySQL 数据的持久化

基本概念:

        MySQL 数据的持久化主要依赖于其事务日志( Redo Log 和 Bin Log)来保证,即使在系统崩溃或宕机的情况下也能恢复数据。

Redo Log:

         MySQL 的 InnoDB 存储引擎中,Redo Log 是为了实现事务的持久性 (Durability)。即使数据库崩溃,只要有 Redo Log,数据库可以恢复未完成的事务。

  • 顺序写入: Redo Log 记录的是数据库在内存中的数据变更,所有的变更先写入 Redo Log,确保即便数据库崩溃,系统可以通过 Redo Log 重新执行这些变更,恢复数据库。

  • 大小固定: Redo Log 有固定的大小,会被循环使用(overwrite)。当写满时,系统会从头开始覆写日志内容。

        主要用途:

  • 崩溃恢复: 当数据库崩溃后重启,InnoDB 引擎会根据 Redo Log 将数据恢复到崩溃时的状态。
  • 持久化机制: 即使没有将数据立即写入磁盘,只要 Redo Log 被写入,数据库崩溃后数据也能恢复。

Bin Log:

        Bin Log 记录的是 MySQL 数据库中执行的所有修改操作,包括 INSERTUPDATEDELETE 操作,但不包含 SELECT 操作。

        主要作用:

  • 数据恢复: 通过 Bin Log,用户可以将数据库恢复到某个特定的时间点(基于增量备份)。
  • 主从复制: MySQL 主从复制依赖 Bin Log,主库将变更写入 Bin Log,然后将这些变更发送到从库执行同步操作。
  • 审计: Bin Log 可以帮助追踪和审计数据库中的操作。

区别:

  1. 功能:

    • Redo Log 主要用于数据库崩溃恢复,帮助保证事务的持久性。
    • Bin Log 主要用于数据备份、主从复制和数据恢复。
  2. 内容:

    • Redo Log 记录的是物理数据页的更改,用于保证数据的正确性。
    • Bin Log 记录的是基于 SQL 语句的逻辑更改。
  3. 写入时机:

    • Redo Log 是在事务提交之前写入。
    • Bin Log 是在事务提交之后写入

总结:

        Redo Log 和 Bin Log 各自承担不同的职责:Redo Log 保证数据的持久性和崩溃恢复,而 Bin Log 则主要用于数据备份和复制。        


http://www.kler.cn/news/356604.html

相关文章:

  • 进入 Searing-66 火焰星球:第一周游戏指南
  • 昇腾CANN 8.0正式发布,多项核心技术引领大模型原生创新
  • chrome清除https状态
  • 简单谈谈mysql中的日志 undo log
  • 【原创】java+springboot+mysql在线课程学习网设计与实现
  • Python ORM:让数据库操作变得优雅
  • C++:stl_stackqueue模拟实现
  • redhat系列的yum源配置
  • 2.1.ReactOS系统中中断描述符表进行初始化
  • 执行php artisan storage:link报错
  • 3DsMax删除FBX 导出的预设
  • android openGL ES详解——混合
  • 用SpringBoot给Servlet容器Tomcat打war包步骤
  • react的state是一张快照
  • java项目篇-用户脱敏展示
  • Redis两种持久化方式
  • Javaweb基础-vue
  • QT开发:深入掌握 QtGui 和 QtWidgets 布局管理:QVBoxLayout、QHBoxLayout 和 QGridLayout 的高级应用
  • list和vector的区别
  • 【2024最新版】网络安全学习路线-适合入门小白