数据库 · 单选题 · 第 41 题
计算机基础面试八股 · 第 41 题
关于 MySQL 的 redo log 和 binlog,下列说法正确的是?
- Aredo log 是 Server 层的逻辑日志,用于主从复制;binlog 是 InnoDB 的物理日志,用于崩溃恢复
- Bredo log 是 InnoDB 的物理日志,用于崩溃恢复;binlog 是 Server 层的逻辑日志,用于复制和按时间点恢复
- C两者都在 Server 层产生,内容完全相同,只是写入的磁盘文件不同,可以互相替代
- Dredo log 用于回滚未提交的事务,binlog 用于实现 MVCC,二者都与崩溃恢复无关
答案
B B. redo log 是 InnoDB 的物理日志,用于崩溃恢复;binlog 是 Server 层的逻辑日志,用于复制和按时间点恢复
解析
redo log 记录「某个数据页做了什么修改」,循环写,配合 WAL 保证已提交事务在崩溃后不丢。binlog 记录 SQL 语句或行变更,追加写,所有存储引擎共用,用于主从复制和数据恢复。回滚靠的是 undo log。两者通过两阶段提交保持一致。