备份真正有用之前,还差一次恢复演练
备份最容易制造一种错觉:只要定时任务显示成功,数据似乎就安全了。真正决定备份价值的,却是它能否在另一处环境中完整恢复。
先确定需要保护什么
一个常见的自托管服务通常不只有数据库,还可能包括:
- 用户上传的图片和附件;
- 应用配置与环境变量;
- 数据加密所需的密钥;
- 反向代理和证书配置;
- 当前运行版本与部署文件。
只复制数据库,可能得到一份无法解密的数据;只复制应用目录,也可能遗漏独立的数据卷。
给备份加上可验证的信息
备份任务完成后,至少记录文件大小、生成时间和校验值:
sha256sum backup.tar.zst > backup.tar.zst.sha256
数据库还应该执行自身的完整性检查。例如 SQLite 可以对备份副本执行 PRAGMA integrity_check,而不是只确认文件非空。
定期从零恢复
恢复演练最好在隔离目录或临时机器中进行:
- 准备一个没有原始数据的干净环境;
- 按文档还原配置、密钥和数据;
- 启动服务并完成一次真实读取;
- 记录缺失步骤,更新恢复文档;
- 删除演练环境,避免留下第二套生产数据。
能够被恢复的备份,才是备份。其他文件只是尚未验证的希望。