IT 快照(Snapshot)

🛠️ IT 快照(Snapshot)

🎯 贴切比喻

数据就像一叠画纸

  • 最底下那张是真实原始数据
  • 快照 = 在上面盖一张透明画纸
  • 所有新修改、新内容,都只画在后来这张透明纸上
  • 底层原始数据不动、不被覆盖

📌 快照存在哪里?

  • 不单独复制一整份数据
  • 原数据在同一块磁盘 / 存储
  • 本质:原始数据 + 被保护的旧数据块

⚡ 工作原理

  1. 拍快照时:标记当前数据为只读、禁止覆盖

  2. 后续修改:

    • 旧数据不动
    • 新数据写到新位置(透明画纸那层)
  3. 快照 = 保留下来的旧版本数据

  4. 恢复快照 = 扔掉新数据,用回旧版本

🔹 空间占用特点

  • 刚创建:几乎不占空间
  • 修改越多:旧数据保留越多,空间越占越大
  • 长期不删:空间持续增长
  • 只存被修改部分,不是全量拷贝

🚀 作用与定位

  • 用途:系统升级、打补丁、改配置前临时保命
  • 特点:秒级创建、秒级回滚
  • 不能当长期备份,不能替代备份

📝 一句话总结

快照就是给数据盖一层透明画纸,新内容写在上面、旧数据不动,

临时还原点,会占空间,不能长期保留。

快照的删除与恢复

一、快照删除逻辑(分场景)

1. 虚拟机快照(VMware/KVM/Hyper-V)

  • 结构:原始磁盘 + 增量文件(redo/delta)
  • 删除动作:将增量文件中的新数据写回原磁盘
  • 特点:慢、占用 IO、快照链越长耗时越久
  • 核心:合并 “透明纸” 上的新内容到底层纸,再删透明纸

2. 存储层快照(SAN / 磁盘阵列)

  • 原理:指针 / 位图标记新旧数据块
  • 删除动作:修改标记,将旧数据块设为 “可覆盖”,无实际数据拷贝
  • 特点:极快、几乎不影响业务
  • 核心:仅改标记,不碰底层纸,直接扔掉透明纸

3. 数据库快照(SQL Server/Oracle)

  • 本质:仅存储 “被修改 / 删除的旧数据”,Insert 数据不记录
  • 删除动作:直接删除快照文件(旧数据副本),无需合并
  • 特点:瞬间完成、不影响原库
  • 核心:快照仅存 “涂掉的旧内容”,删除 = 直接扔旧内容,底层纸(原库)不变

二、快照恢复逻辑(分场景・数据库重点)

1. 虚拟机快照

  • 恢复动作:丢弃增量文件中的新数据,仅保留原始磁盘的旧数据
  • 结果:回到快照创建时的系统状态,快照后所有修改丢失
  • 核心:撕掉所有透明纸,只留底层纸

2. 存储层快照

  • 恢复动作:修改指针指向旧数据块,屏蔽新数据块
  • 特点:秒级恢复、无数据拷贝
  • 核心:切换指针,直接显示底层纸,隐藏透明纸

3. 数据库快照(重点详解)

3.1 恢复核心逻辑

  • 不记录任何操作,仅基于 “快照时的旧数据页” 恢复

  • 恢复动作:

    1. 用快照中的旧数据页覆盖原库被修改的数据页;
    2. 直接删除快照创建后 Insert 的新数据(因快照中无对应记录);
    3. 恢复被 Delete 的旧数据(快照中留存了删除前的旧值)。
  • 本质:清空当前数据,重新填入快照时的旧数据,而非 “撤销操作”

3.2 不同操作对恢复的影响

表格

操作类型 快照记录行为 恢复后结果
Update 存储修改前的旧值 回滚为快照时的旧值
Delete 存储删除前的旧值 恢复被删除的数据
Insert 完全不记录 新增数据被直接删除

3.3 关键区别:快照恢复 vs 日志回滚

表格

恢复方式 核心逻辑 是否记录操作 适用场景
快照恢复 旧数据页覆盖新数据页 ❌ 不记录 快速回滚到指定时间点
日志回滚(binlog/redo) 反向执行操作(如 Update→反向 Update) ✅ 记录每一步 精准撤销某几步操作

三、数据库快照特殊要点

1. 空间占用规则

  • 仅因 Update/Delete 增长(存储旧值),Insert 操作不占快照空间;
  • 空间上限 = 被修改 / 删除的数据总量,永不超过原库大小;
  • 长期保留会随修改量增加而变大,需及时清理。

2. 恢复核心结论

  • 恢复快照 = 回到 “快照创建那一刻的全量数据状态”;
  • 无需识别操作类型(Update/Insert/Delete),仅按 “时间点数据清单” 还原;
  • 快照后新增的所有数据(Insert),因 “清单中无记录” 被自动删除。

📝 核心总结

  1. 快照删除:虚拟机需合并数据(慢)、存储仅改标记(快)、数据库直接删旧数据(无合并);
  2. 数据库快照恢复:不依赖操作记录,仅用旧数据覆盖新数据,Insert 新数据自动清空;
  3. 数据库快照仅存 “被修改 / 删除的旧值”,空间增长远小于全量复制,且 Insert 无影响。
posted @ 2026-03-04 14:04  之间。  阅读(18)  评论(0)    收藏  举报