IT 快照(Snapshot)
🛠️ IT 快照(Snapshot)
🎯 贴切比喻
数据就像一叠画纸:
- 最底下那张是真实原始数据
- 快照 = 在上面盖一张透明画纸
- 所有新修改、新内容,都只画在后来这张透明纸上
- 底层原始数据不动、不被覆盖
📌 快照存在哪里?
- 不单独复制一整份数据
- 与原数据在同一块磁盘 / 存储中
- 本质:原始数据 + 被保护的旧数据块
⚡ 工作原理
-
拍快照时:标记当前数据为只读、禁止覆盖
-
后续修改:
- 旧数据不动
- 新数据写到新位置(透明画纸那层)
-
快照 = 保留下来的旧版本数据
-
恢复快照 = 扔掉新数据,用回旧版本
🔹 空间占用特点
- 刚创建:几乎不占空间
- 修改越多:旧数据保留越多,空间越占越大
- 长期不删:空间持续增长
- 只存被修改部分,不是全量拷贝
🚀 作用与定位
- 用途:系统升级、打补丁、改配置前临时保命
- 特点:秒级创建、秒级回滚
- 不能当长期备份,不能替代备份
📝 一句话总结
快照就是给数据盖一层透明画纸,新内容写在上面、旧数据不动,
是临时还原点,会占空间,不能长期保留。
快照的删除与恢复
一、快照删除逻辑(分场景)
1. 虚拟机快照(VMware/KVM/Hyper-V)
- 结构:原始磁盘 + 增量文件(redo/delta)
- 删除动作:将增量文件中的新数据写回原磁盘
- 特点:慢、占用 IO、快照链越长耗时越久
- 核心:合并 “透明纸” 上的新内容到底层纸,再删透明纸
2. 存储层快照(SAN / 磁盘阵列)
- 原理:指针 / 位图标记新旧数据块
- 删除动作:修改标记,将旧数据块设为 “可覆盖”,无实际数据拷贝
- 特点:极快、几乎不影响业务
- 核心:仅改标记,不碰底层纸,直接扔掉透明纸
3. 数据库快照(SQL Server/Oracle)
- 本质:仅存储 “被修改 / 删除的旧数据”,Insert 数据不记录
- 删除动作:直接删除快照文件(旧数据副本),无需合并
- 特点:瞬间完成、不影响原库
- 核心:快照仅存 “涂掉的旧内容”,删除 = 直接扔旧内容,底层纸(原库)不变
二、快照恢复逻辑(分场景・数据库重点)
1. 虚拟机快照
- 恢复动作:丢弃增量文件中的新数据,仅保留原始磁盘的旧数据
- 结果:回到快照创建时的系统状态,快照后所有修改丢失
- 核心:撕掉所有透明纸,只留底层纸
2. 存储层快照
- 恢复动作:修改指针指向旧数据块,屏蔽新数据块
- 特点:秒级恢复、无数据拷贝
- 核心:切换指针,直接显示底层纸,隐藏透明纸
3. 数据库快照(重点详解)
3.1 恢复核心逻辑
-
不记录任何操作,仅基于 “快照时的旧数据页” 恢复
-
恢复动作:
- 用快照中的旧数据页覆盖原库被修改的数据页;
- 直接删除快照创建后 Insert 的新数据(因快照中无对应记录);
- 恢复被 Delete 的旧数据(快照中留存了删除前的旧值)。
-
本质:清空当前数据,重新填入快照时的旧数据,而非 “撤销操作”
3.2 不同操作对恢复的影响
表格
| 操作类型 | 快照记录行为 | 恢复后结果 |
|---|---|---|
| Update | 存储修改前的旧值 | 回滚为快照时的旧值 |
| Delete | 存储删除前的旧值 | 恢复被删除的数据 |
| Insert | 完全不记录 | 新增数据被直接删除 |
3.3 关键区别:快照恢复 vs 日志回滚
表格
| 恢复方式 | 核心逻辑 | 是否记录操作 | 适用场景 |
|---|---|---|---|
| 快照恢复 | 旧数据页覆盖新数据页 | ❌ 不记录 | 快速回滚到指定时间点 |
| 日志回滚(binlog/redo) | 反向执行操作(如 Update→反向 Update) | ✅ 记录每一步 | 精准撤销某几步操作 |
三、数据库快照特殊要点
1. 空间占用规则
- 仅因 Update/Delete 增长(存储旧值),Insert 操作不占快照空间;
- 空间上限 = 被修改 / 删除的数据总量,永不超过原库大小;
- 长期保留会随修改量增加而变大,需及时清理。
2. 恢复核心结论
- 恢复快照 = 回到 “快照创建那一刻的全量数据状态”;
- 无需识别操作类型(Update/Insert/Delete),仅按 “时间点数据清单” 还原;
- 快照后新增的所有数据(Insert),因 “清单中无记录” 被自动删除。
📝 核心总结
- 快照删除:虚拟机需合并数据(慢)、存储仅改标记(快)、数据库直接删旧数据(无合并);
- 数据库快照恢复:不依赖操作记录,仅用旧数据覆盖新数据,Insert 新数据自动清空;
- 数据库快照仅存 “被修改 / 删除的旧值”,空间增长远小于全量复制,且 Insert 无影响。

浙公网安备 33010602011771号