2024-11-09
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1407253117

回答

Binlog、Redo log 和 Undo log 是 MySQL 设计的三种不同类型的日志。

  • binlog 是二进制日志,记录数据库所有更改状态的语句,如 DDL 和 DML 语句。
  • redo log 是重做日志,保证 InnoDB 存储引擎的事务持久性。当发生 MySQL 服务端故障,InnoDB 在数据库启动时重放 redo log 来确保所有事务都正常提交,恢复至崩溃前状态。
  • undo log 是回滚日志,记录数据修改前的原始信息,用于事务的回滚和多版本并发控制(MVCC)

其中 binlog 是服务层的日志,数据存储在文件系统;而 redo log 和 undo log 是存储引擎层日志,存储在共享表空间或文件中。

像 MyISAM 引擎不支持事务就没有 redo log 和 undo log。

扩展

Binlog、Redo log、Undo log 之间如何协作确保数据的一致性?

以更新 SQL update t_user set name = 'mary' where id = 10;为例,具体流程如下: