云服务器备份怎么做?快照、异地副本与恢复演练的完整思路
一份备份的价值,要在原服务器不可用时才能证明。仅看到任务显示“成功”,或磁盘里多了一个压缩包,还不足以确认能恢复网站。设计云服务器备份时,先明确允许损失多少数据、希望多久恢复,再选择备份方式和演练步骤。
先给 RPO 和 RTO 一个业务答案
RPO 是可以接受的数据恢复点落后程度,例如最多损失十五分钟内的新数据;RTO 是从业务中断到恢复服务可以接受的最长时间。两者分别约束数据新鲜度与恢复速度,不能用“每天有备份”替代这两个目标。AWS 灾难恢复概念说明
对更新较少的展示站,可以评估较长的数据间隔;订单、工单和用户上传持续变化的网站,需要更密的保护。具体目标由业务负责人确认,不是服务器套餐大小决定。例如每日备份一次,可能丢失接近一天的数据;如果最近一次备份失败或异地传输滞后,实际恢复点还会更旧。
恢复时间应包含发现故障、取得备份、准备新环境、解密、导入数据库、核验业务和切换入口。一个备份在本机生成十分钟,却需要从异地下载两小时,恢复速度就不能只按生成时间估计。
快照适合快速回退,但先确认它保存了什么
平台支持磁盘快照时,可以把它用于重要配置变更前的恢复点。使用前要核对覆盖哪些磁盘、是否包含附加盘、保留周期、恢复到新盘的方式,以及实例或账号被删除后快照如何处理。不同平台能力不同,不能假定快照天然包含整台服务器的所有状态。
磁盘快照通常关注某一时刻已写入存储的数据,未落盘的应用缓存和跨服务业务状态可能不在其中。数据库分布在多个卷时,还要确认多卷一致性。需要应用一致的恢复点时,应使用应用支持的备份机制,或按平台与数据库说明协调写入。AWS 的 EBS 文档也明确区分已写入卷的数据与仍在应用或系统缓存中的数据,这说明判断快照是否可恢复必须看具体实现。磁盘快照一致性参考
快照和源数据若受同一账号、权限或区域影响,就可能一起不可用。还应保留经过加密的独立副本,存到与主服务器风险范围不同的位置;平台支持跨区域、独立账号或不可变保留时,可以按实际方案组合使用。
备份范围要覆盖网站能运行的全部依赖
先列一张资产表:数据库、用户附件、应用版本、配置、定时任务、证书与密钥管理方式,以及依赖的对象存储和外部服务。代码仓库能重新部署程序,却不能自动恢复用户上传;数据库有记录,但对应附件没备份,业务仍可能不完整。
数据库使用自身支持的逻辑或物理备份工具。不能在数据库持续写入时直接复制其数据目录,再把这份目录当作一致备份。以 PostgreSQL 为例,pg_dump 可导出单个数据库的一致视图,但账号角色等集群级对象需要额外安排;具体方法要与数据库版本和恢复需求匹配。PostgreSQL 备份说明
附件和数据库应尽量对应同一业务恢复点。必要时短暂停止写入,或者采用应用支持的版本化与清单机制。为每次备份保存时间、应用版本、数据库版本、文件校验值和恢复步骤,避免恢复时无法确定哪一组文件属于同一次备份。
把保存策略与权限一起设计
保留多久应覆盖业务发现错误所需的时间。只保留最新一份备份,误删或错误数据可能很快覆盖唯一恢复机会。可以按业务需要设置近期多个恢复点与更长期归档,但先核算存储容量和成本,再定具体周期。
备份账号只获得必要的读写能力,日常应用账号不应同时拥有删除全部历史副本的权限。密钥要有独立恢复方式,否则服务器丢失时,备份和解密钥匙可能一起丢失。备份文件不要放到网站可公开下载的目录,传输和保存时都要控制访问。
告警应覆盖任务失败、备份大小明显异常、异地副本未到达和恢复点超过目标间隔。任务“启动成功”与整条备份流程完成是不同状态;要以最后一个可用、可解密、可恢复的副本为准。
在隔离环境做一次完整恢复
选择一次日常生成的备份,恢复到独立环境。先关闭会发送真实邮件、扣费、调用生产接口的任务,并限制测试环境连接生产数据库,再导入数据和启动应用。不能让演练环境成为第二套同时处理真实业务的系统。
验证至少包括管理员登录、典型页面、附件读取、关键数据数量与抽样内容,并在隔离环境中完成一条可控的测试业务流程。记录每一步耗时、缺失权限和人工操作,再计算是否满足目标。压缩包能解压,只是检查中的一步。
演练发现问题后,修订备份清单与恢复说明,重新验证修正部分。应用升级、数据量显著增长或更换存储方式后,也应安排新一轮演练。真正可用的备份方案,应让另一位获授权的管理员照着说明也能完成恢复。