标准答案

  1. undo log 记录修改前的信息,用于事务回滚和 MVCC 查找历史可见版本。
  2. redo log 或 WAL 采用先写日志再写数据页的思路,故障后可重放已提交变更,避免脏页未落盘导致数据丢失。
  3. binlog 或逻辑日志描述更高层的变更事件,常用于主从复制、变更订阅和时间点恢复。
  4. 不同数据库的日志名称、格式和刷盘策略不同,回答时应区分原理与特定产品实现。
  5. 日志链路需要和备份、复制延迟、磁盘容量及恢复演练一起管理,不能只关注正常写入速度。

题目解析

日志存在的原因是数据页写入慢且可能被打断。先保证顺序日志达到足够持久的介质,再异步刷新脏页,数据库就能在宕机后判断哪些操作应重做、哪些未提交操作应撤销。

复制和恢复并非自动可靠。逻辑日志缺失、格式不兼容、归档过期或副本落后,都会让“有日志”失去价值,因此需要监控和真实恢复测试。

常见误区

  • 把所有日志都称为“备份”,忽略回滚日志、物理恢复日志和逻辑复制日志的职责不同。
  • 为了性能随意降低持久化策略,却没有评估断电或节点故障时可接受的数据损失。

作者信息