快照在备份中的角色
传统备份需要应用停写或长时间直接读取生产卷,前者造成业务停顿,后者长期占用生产性能。快照把这一过程拆成两步:先用秒级操作冻结数据在某一时刻的状态,随后再从快照读取数据写入备份介质。这样生产系统的暂停时间被压缩到接近秒级,而且与数据总量基本无关;耗时的数据传输发生在业务恢复之后,读取对象是快照而不是生产卷,对业务的影响显著降低。
基本信息
| 核心作用 | 冻结时间点,把备份读取与生产写入解耦 |
|---|---|
| 生产影响 | 暂停时间由小时级压缩到秒级 |
| 前置步骤 | 应用刷盘、静默或进入指定备份模式 |
| 快照粒度 | 单卷或一致性组,数据库需按组统一取点 |
| 备份数据源 | 从快照读取,而不是直接读生产卷 |
| 快照保留 | 备份完成后即可删除,留存时间很短 |
典型使用场景
- 数据库全量备份:先让实例进入备份模式再打快照,恢复后无需长时间修复
- 虚拟机备份:利用虚拟化层快照统一取点,再逐个虚拟机导出数据
- 大体量文件系统:避免备份过程长时间遍历生产目录影响业务性能
- 跨站点备份:从灾备站点的快照读取数据,减轻生产站点负担
- 云端备份:依托云盘快照能力生成备份流的源数据
- 备份窗口压缩:把原先数小时的业务停顿压缩到分钟级
流程阶段
| 阶段 | 动作 | 时长特征 |
|---|---|---|
| 准备 | 应用刷盘、进入静默或备份模式 | 秒级到分钟级 |
| 取快照 | 对卷或一致性组生成快照 | 通常秒级 |
| 恢复业务 | 应用退出静默,恢复写入 | 秒级 |
| 读取备份 | 从快照读取数据写入备份介质 | 与数据量成正比 |
| 清理快照 | 备份成功后删除快照 | 秒级 |
| 校验 | 抽样恢复验证备份可用性 | 取决于验证深度 |
快照式备份的关键收益是把生产暂停时间与数据传输时间分开计算。暂停时间只取决于应用进入静默和生成快照的速度,与数据总量基本无关;数据传输发生在业务恢复之后,从快照读取,可以占用较长时间而不影响生产写入。这也是大体量系统仍然能用短备份窗口的原因。
快照只能冻结存储层的块状态,无法感知应用内部的事务与缓存状态。数据库在备份期间通常需要按厂商要求进入备份模式或执行刷盘动作,否则从快照恢复出的实例仍要经历漫长的崩溃恢复,严重时可能无法启动。具体的静默方式应以数据库与应用官方文档为准。
快照式备份流程
快照式备份流程
# 1) 通知应用进入备份模式或执行刷盘
# 2) 对一致性组生成快照(通常秒级完成)
# 3) 通知应用退出备份模式并恢复写入
# 4) 从快照读取数据写入备份介质(耗时与数据量成正比)
# 5) 备份校验通过后删除快照
# 6) 定期抽样恢复验证,确认备份真实可用