程序员如何做「数据备份」:不是万一,是必须
数据是公司最重要的资产。
没了代码可以重写,没了数据就是真的没了。
一、为什么要做数据备份
1. 防止数据丢失
- 硬件故障
- 软件 bug
- 人为误操作
- 恶意攻击(勒索病毒)
2. 满足合规要求
- 审计要求
- 行业法规
- 数据保留政策
3. 支持数据恢复
- 出问题时能恢复
- 能恢复到任意时间点
二、备份的类型
1. 全量备份
备份所有数据。
- 优点:恢复简单
- 缺点:占用空间大、备份时间长
2. 增量备份
只备份上次备份后新增或修改的数据。
- 优点:占用空间小、备份快
- 缺点:恢复复杂,需要多个备份文件
3. 差异备份
只备份上次全量备份后修改的数据。
- 折中方案:空间和时间平衡
三、备份的策略
1. 3-2-1 原则
- 3 份副本
- 2 种不同介质
- 1 份异地
2. 备份频率
- 数据库:实时或每小时
- 文件:每天
- 代码:每次发布后
3. 保留策略
- 近期的:保留完整
- 中期的:保留关键版本
- 长期的:按法规要求
四、数据备份的方式
1. 数据库备份
# MySQL
mysqldump -u root -p --all-databases > backup.sql
# PostgreSQL
pg_dump -h localhost -U postgres -F c -f backup.dump
# MongoDB
mongodump --out /backup/mongo
2. 文件备份
- rsync:增量同步
- rclone:云存储备份
- 快照:文件系统快照
3. 云服务原生备份
- RDS 自动备份
- 对象存储版本控制
- 快照服务
五、备份的验证
1. 定期恢复演练
- 每季度至少一次
- 验证备份可恢复
- 记录恢复时间
2. 备份完整性检查
- 检查备份文件大小
- 校验文件完整性(MD5/SHA)
- 检查备份日志
3. 监控告警
- 备份失败告警
- 备份延迟监控
- 存储空间监控
六、常见错误
❌ 只备份不恢复
备份了从来没验证过能不能恢复。
❌ 备份和原数据放一起
服务器被勒索,备份也被加密。
❌ 备份周期太长
每天备份一次,丢了 24 小时数据。
❌ 不测试恢复时间
恢复花 3 天,业务停了 3 天。
七、一句话总结
数据备份 = 全量 + 增量 + 3-2-1 原则 + 定期演练 + 验证监控,核心是能恢复而不是备份了就行。