贝利信息

SQL 崩溃恢复的整体流程

日期:2026-01-19 00:00 / 作者:舞夢輝影
SQL数据库崩溃后能自动恢复,依赖WAL日志与检查点机制:先分析日志定位活跃/已提交事务,再重做已提交操作,最后回滚未完成事务。

SQL 数据库崩溃后能自动恢复数据,核心依赖于事务日志(WAL)和检查点机制,整个流程不是“重放所有操作”,而是精准定位未完成事务并回滚、已提交但未写入数据文件的事务则重做。

崩溃发生时的状态保存

数据库运行中会持续写入事务日志(如 PostgreSQL 的 WAL、SQL Server 的 LDF、MySQL InnoDB 的 redo log),每条修改操作在写入数据页前先记日志。同时定期触发检查点(checkpoint),将内存中已提交的脏页刷到磁盘,并记录当前日志位置。崩溃时,内存中的数据页丢失,但日志文件通常完整保留在磁盘上。

启动时的恢复阶段划分

数据库服务重启后,自动进入恢复模式,分为三个逻辑阶段:

关键保障机制说明

恢复可靠性的基础是日志的持久化策略:

用户可观察与干预的点

恢复过程对用户透明,但可通过以下方式了解或影响行为: