自学内容网 自学内容网

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 则主要用于数据备份和复制。        


原文地址:https://blog.csdn.net/m0_74064008/article/details/142900072

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!