B+树数据库故障恢复概述

1 · Kang Wang · Oct. 5, 2022, midnight
前言 故障恢复是数据库中重要的组成部分,为了在故障发生时,有足够的信息将数据库还原到正确的状态,DB需要在正常运行过程中就维护一些冗余的数据,同时还要保证数据库的高效运行,充分利用硬件特性,支持高效的数据组织及访问模式。数据库可能遇到的故障主要包括三种类型:Transaction Failure,包括用户主动的事务Abort,以及并发控制中遇到的如死锁错误时,数据库对所选事务的回滚;System Failure:包括各种原因的进程意外退出或机器重启;Media Failure:由于硬件异常导致的数据永久性丢失。当遇到这些故障时,数据库需要保证 Durability of Updates:已经Commit的事务的修改,故障恢复后仍然存在; Failure Atomic:失败事务的所有修改都不可见。 也就是我们常说的ACID中的A和D。其中Media Failure需要从备份恢复,大多数方案中其实是当作一种特殊的System Failure来处理的,因此本文主要关注Transaction Failue以及System Failure,也就是对事务Abort,以及Crash Recove...