📄 一句话概括
备份的使命是留退路;三种姿势按「拷多少」划分——全量拷全部、差分拷上次全量以来的变化、增量拷上次备份(不论哪种)以来的变化。
📝 本节和前面几节的关系
前面几节都在防「别出事」,本节承认事故一定会发生,只求出事后能回去。1-4 讲「恢复」是优势名词,这里兑现;6-7 的还原就是备份的另一半(存了得会取回来)。
一、三种备份
以周一做了一次全量为底,看周二~周四各拷什么:
周一 全量(全部数据) ← 基准点
周二 差分:周一以来的变化 增量:周一以来的变化(即周一到周二)
周三 差分:周一以来的变化 增量:周二以来的变化
周四 差分:周一以来的变化 增量:周三以来的变化
| 全量 | 差分 | 增量 | |
|---|---|---|---|
| 单次备份量 | 大 | 中(越久越大) | 小 |
| 恢复需要的备份 | 1 份 | 2 份(全量+最近差分) | N 份(全量+之后每一个增量) |
| 恢复速度 | 快 | 快 | 慢(依次套) |
常见组合:每周日全量+平时每日差分(恢复简单);或每周全量+每日增量(省空间但恢复链长)。
二、备份的三个原则
- 定期:备份方案不定义「多久一次」,等于没有
- 异地:同机房的备份抗不了火灾水灾——至少另一台机器/另一地域
- 可还原:没验证过还原的备份不算备份(磁盘躺在那里三年的「备份」,可能早就坏了)
三、动手 Demo:三种备份的最小沙盘
用 SQLite 的书评库(第五章 5-19 的 DDL 建)做「备份策略」纸面推演:
-- 现有 3 条书评。周三又新增 1 条、周四修改 1 条标题。
-- 周一已做全量 backup_full.db
-- 若做差分:周四的差分 = 周一以来的全部 2 处变化(1 新增 + 1 修改)
-- 若做增量:周四的增量 = 只有「修改标题」这 1 处变化
-- 若周四误删全表 → 恢复方式:
-- 全量思路:用最近一份全量
-- 差分思路:周一全量 + 周四差分
-- 增量思路:周一全量 + 周二增量 + 周三增量 + 周四增量
【准备块】第五章 5-19 的 book_review 库 DDL;本 Demo 重点在推演不是敲码。
四、30 秒实验
把三种备份想成整理相册:全量=每月完整翻拍一本;差分=每月只补拍「自上月翻拍以来新拍的照片」;增量=每天只补拍「昨天没拍过的」。哪种最省胶卷?哪种丢一页就断片?(增量省但断链就废。)
五、常见误区
- 「我做了备份就安全了」:备份在同台机器上=火灾一起全没;没做过还原演练=纸上备份
- 「增量最好,因为最小」:链一断(某天增量损坏)后面的全废;差分牺牲空间买恢复的简单,常更划算
- 「备份了数据就不会丢」:备份是某个时刻的快照,两次备份之间的写入,得靠 4-14 事务与数据库自身机制减小窗口
自测三问
1. 差分和增量的「上次」分别指谁?(差分指上次**全量**;增量指上次**任何一种备份**) 2. 全量+每日增量,恢复周四数据需要几份备份?(周一全量+周二、周三、周四三份增量,共 4 份) 3. 备份三原则?(定期、异地、可还原——没演练过的不算数)- ☐ 下一节(6-7 转储、还原-迁移数据)
相关笔记
- 查询、限制、控制、访问权限、恢复-数据库的优势 —— 第一章点名的「恢复」,本节兑现成方案
- 转储、还原-迁移数据 —— 下一节:备份的另一端,存进去还得取得出来
- 事务-集中执行无法分割的处理 —— 备份间隔之间的事故窗口靠事务兜底
- 🗄️ 数据库基础 · 索引 —— 全课路线图