4. 备份策略:全量、增量、差异,怎么选?

备份策略这事儿,说白了就是回答三个问题:备份什么、多久备份一次、备份占多少空间和时间。我在智能家居项目里踩过不少坑,今天就把这些经验掰开了讲。

4.1 三种备份方式,先搞清楚区别

先看一张图,把全量、增量、差异的关系理清楚。

三种备份方式对比 全量备份(完整副本) 增量备份(只变过的) 差异备份(累积变化) 优点:恢复最快 缺点:占用空间大 耗时最长 优点:最快、最小 缺点:恢复需全量+所有增量 链越长风险越大 优点:恢复比增量快 缺点:越往后越大 介于两者之间 时间线 → 周日全量 周一 周二 周三 周四差异 周五 周六 周日全量 恢复场景:周三出问题 全量+增量:周日全量 + 周一 + 周二 + 周三(4个文件) 全量+差异:周日全量 + 周三差异(2个文件)

4.2 全量备份:最笨但最可靠

全量备份就是把整个系统完整复制一份。智能家居的配置、用户数据、设备状态,全部打包。

优点:恢复时一步到位,不需要依赖其他备份文件。

缺点:时间和空间成本最高。一个中等规模的智能家居系统,全量备份可能要几十GB。

我的经验:全量备份适合每周做一次,放在业务低峰期。我习惯安排在周日凌晨2点,那时候大部分用户都在睡觉,系统负载最低。

4.3 增量备份:小而快,但恢复麻烦

增量备份只备份自上次备份以来发生变化的数据。注意,是「上次备份」,不一定是全量。

举个例子:

  • 周日做了全量备份
  • 周一增量备份只备份周一的变化
  • 周二增量备份只备份周二的变化
  • 周三出问题要恢复:需要周日全量 + 周一增量 + 周二增量 + 周三增量

我曾经踩过的坑:有一次增量备份链拉得太长,连续做了30天增量。结果第31天恢复时,中间有一个增量文件损坏了,导致后面所有数据都恢复不了。从那以后,我强制要求增量链不超过7天,每周必须做一次全量。

4.4 差异备份:折中方案

差异备份备份的是自上次全量备份以来的所有变化。它比增量大,但恢复比增量快。

还是那个例子:

  • 周日做了全量备份
  • 周一差异备份:备份周一的变化
  • 周二差异备份:备份周一+周二的变化
  • 周三差异备份:备份周一+周二+周三的变化
  • 周三出问题要恢复:只需要周日全量 + 周三差异备份

你想想看,差异备份的恢复速度比增量快,但越到后面文件越大。我一般建议差异备份最多保留3-5天,超过这个时间就重新做全量。

4.5 三种方式对比表

特性 全量备份 增量备份 差异备份
备份速度 最慢 最快 中等
恢复速度 最快(1个文件) 最慢(需多个文件) 中等(2个文件)
存储空间 最大 最小 中等(逐渐增大)
恢复依赖 无依赖 依赖全量+所有增量 依赖全量+最新差异
适合场景 低频、关键节点 高频、数据变化小 中频、需要快速恢复

4.6 备份频率与窗口规划

备份频率怎么定?我个人的经验是:看数据变化量和恢复时间目标(RTO)。

智能家居系统里,数据变化主要来自:

  • 用户配置变更(场景、自动化规则)
  • 设备状态日志(温度、湿度、开关记录)
  • 用户账户信息(权限、家庭成员)
  • 系统固件和驱动

我建议这样规划:

数据类型 备份方式 频率 备份窗口
系统配置 全量 每周1次 凌晨2:00-4:00
用户配置 增量 每6小时 业务低峰期
设备日志 增量 每小时 实时或准实时
固件/驱动 全量 每次更新时 更新前自动备份

小技巧:备份窗口要避开系统高峰期。智能家居系统的高峰期一般是早晚(用户回家/离家场景触发时)。我习惯把全量备份放在周日凌晨,增量备份放在每小时的第15分钟(避开整点可能有的定时任务)。

4.7 实际项目中的策略选择

说了这么多,到底怎么选?我直接给结论:

  1. 小规模系统(< 50个设备):全量备份就够了。每天一次全量,保留7天。存储成本不高,恢复也简单。
  2. 中等规模(50-200个设备):每周一次全量 + 每天一次增量。增量链不超过7天。这样恢复时最多需要8个文件(1个全量+7个增量),还能接受。
  3. 大规模系统(> 200个设备):每周一次全量 + 每天一次差异备份。差异备份保留3天,超过3天重新做全量。这样恢复时最多需要2个文件,速度有保障。

我个人最推荐的组合:周日全量 + 周一到周六每天一次差异备份。恢复时只需要全量+最新差异,2个文件搞定。而且差异备份比增量备份更安全,不会因为中间某个文件损坏导致整条链失效。

4.8 备份窗口的计算方法

备份窗口不是拍脑袋定的。我一般这样算:

备份窗口 = 数据量 / 备份速度 + 安全余量

举例:
- 全量备份:50GB / 100MB/s = 512秒 ≈ 8.5分钟
- 加上压缩、校验、传输时间,实际约15分钟
- 安全余量按50%算,窗口定为25分钟

增量备份:
- 假设每小时变化量约200MB
- 200MB / 100MB/s = 2秒
- 实际约5秒,窗口定为10秒足够

嗯,这里要注意:备份速度要考虑网络带宽和磁盘IO。如果是远程备份(比如备份到云端),网络延迟和带宽限制会显著影响窗口大小。

我曾经犯过的错:有一次把全量备份窗口定在凌晨2:00-2:30,结果那天系统刚好在做固件升级,备份和升级抢资源,导致两者都失败。后来我学乖了,备份窗口要避开所有已知的系统维护任务,并且留出至少30%的缓冲时间。

4.9 总结一下核心要点

  • 全量备份是基础,增量备份省空间,差异备份是折中
  • 增量链不要超过7天,否则恢复风险大增
  • 备份窗口要避开高峰期和系统维护时间
  • 根据系统规模选择合适的策略组合
  • 定期测试恢复流程,别等到出事了才发现备份不可用

备份策略没有银弹,关键是根据自己的系统特点做权衡。我见过太多人只备份不测试,结果恢复时才发现文件损坏。记住:没有经过恢复验证的备份,等于没有备份。