恢复模型如何影响备份策略
简单、完整、大容量日志三种恢复模型的差别:日志何时截断、能否做时间点还原、各自适合什么库,以及怎么查询与修改恢复模型。
结论先行
恢复模型决定三件事:事务日志何时自动截断、日志备份有没有意义、能回滚到多细的时间点。简单模型=省事、只能回到最近一次完整/差异备份;完整模型=日志不自动截断(靠日志备份或检查点)、支持时间点还原;大容量日志模型=介于两者之间,大批量操作走最小日志记录。开发测试库用简单模型就够,生产库普遍用完整模型。
三种恢复模型对照
| 模型 | 日志截断时机 | 能否做日志备份 | 可回滚粒度 | 适用 |
|---|---|---|---|---|
| 简单 | 每次检查点/备份后自动截断 | 不能 | 最近一次完整/差异 | 开发、测试、低价值库 |
| 完整 | 只做日志备份后截断 | 能 | 任意时间点(日志链不断) | 生产核心库 |
| 大容量日志 | 同完整模型,批量操作最小记录 | 能 | 任意时间点 | 大批量加载/迁移场景 |
完整模型下如果长期不做日志备份,事务日志会一直膨胀直到写满磁盘——这是完整模型最常见的事故。
怎么查和改
-- 查看各库当前恢复模型
SELECT name, recovery_model_desc FROM sys.databases;
-- 修改(库需处于联机状态)
ALTER DATABASE Sales SET RECOVERY FULL;
SSMS 里对应路径:右键数据库 → 属性 → 选项页,「恢复模型」下拉框(见 SSMS 管理工具条目)。
恢复模型与备份计划的搭配
- 简单模型:每天一次完整备份即可;差异备份可选,日志备份不可用。
- 完整模型:每天完整 + 每数小时差异 + 每 15–60 分钟日志(频率以业务容忍的数据丢失量为准)。
- 改恢复模型不改变已有备份,但改后的第一个完整备份之后,旧时间线的日志备份不再可用。
各引擎版本(SQL Server 2022 Developer、SQL Server 产品族条目 中的其他版本)恢复模型口径一致,选择只取决于业务对数据丢失的容忍度,与版本无关。