4. 备份策略:全量、增量、差异,怎么选?
备份策略这事儿,说白了就是回答三个问题:备份什么、多久备份一次、备份占多少空间和时间。我在智能家居项目里踩过不少坑,今天就把这些经验掰开了讲。
4.1 三种备份方式,先搞清楚区别
先看一张图,把全量、增量、差异的关系理清楚。
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 实际项目中的策略选择
说了这么多,到底怎么选?我直接给结论:
- 小规模系统(< 50个设备):全量备份就够了。每天一次全量,保留7天。存储成本不高,恢复也简单。
- 中等规模(50-200个设备):每周一次全量 + 每天一次增量。增量链不超过7天。这样恢复时最多需要8个文件(1个全量+7个增量),还能接受。
- 大规模系统(> 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天,否则恢复风险大增
- 备份窗口要避开高峰期和系统维护时间
- 根据系统规模选择合适的策略组合
- 定期测试恢复流程,别等到出事了才发现备份不可用
备份策略没有银弹,关键是根据自己的系统特点做权衡。我见过太多人只备份不测试,结果恢复时才发现文件损坏。记住:没有经过恢复验证的备份,等于没有备份。