云上数据备份与容灾实战:从备份策略到跨区域恢复

上个月,一个做SaaS的朋友半夜打电话给我,声音发颤:“数据库被人删了。”
我问:“有备份吗?”
他说:“有,每天自动备份。”
我松了口气:“那恢复一下不就行了?”
他沉默了几秒:“恢复不了。备份脚本跑了三年,但从来没恢复过,今天才发现备份文件是坏的。”
电话那头,他正在从本地日志里手工恢复数据,已经熬了六个小时。
这是我今年听到的第三个“有备份但恢复不了”的故事。每次都是同样的话:我们以为有备份就安全了,直到真正需要它的时候。
今天聊聊云上数据备份与容灾。不是那种“备份很重要”的废话,而是帮你理清楚:怎么设计备份策略,怎么选容灾方案,怎么确保真出事的时候能救回来。
01 先搞明白:备份不是目的,恢复才是
这句话值得抄下来贴在工位上。
备份只是过程,恢复才是目的。很多团队的备份策略设计得挺漂亮:每天全量、每小时增量、跨区域复制。但从没恢复过。等到真要用的时候,才发现:
备份文件损坏了
恢复流程没人会
恢复时间要三天,业务早凉了
数据能恢复,但一致性有问题,账对不上
反常识观点:没有经过恢复演练的备份,等于没有备份。
02 备份三要素:频率、保留周期、恢复时间
设计备份策略时,有三个核心参数要权衡。
第一,备份频率。 决定你能丢多少数据(RPO)。频率越高,丢得越少,但成本也越高。每小时备份比每天备份贵得多。核心业务可以小时级,非核心业务天级就够了。
第二,保留周期。 备份要存多久?7天、30天、1年?合规要求、业务需求、成本,三者要平衡。有些行业法规要求数据保留7年,那就得考虑冷存储,把老备份移到便宜的归档层。
第三,恢复时间(RTO)。 真出事的时候,多久能恢复?从备份恢复数据只是第一步,还要验证数据、切换流量、通知用户。设计时要跑通全流程,别只算“数据拷贝时间”。
这三者互相制约:想要恢复快,就得用热存储,成本高;想要保留久,就得用冷存储,恢复慢。没有完美方案,只有匹配业务需求的方案。
03 备份对象:不同的东西,不同的策略
云上的东西五花八门,备份方式也不一样。
虚拟机备份。 最简单粗暴,整机镜像。优点是恢复起来最快,整台机器一起回来。缺点是浪费空间,里面可能有大量临时文件。适合重量级、有状态的应用。
数据库备份。 关键中的关键。云厂商一般都提供原生备份能力(RDS自动备份、PITR时间点恢复)。要点是:打开自动备份,设好保留周期,定期测试恢复。
文件系统备份。 配置文件、日志、用户上传文件。可以用云厂商的文件备份服务,也可以用第三方工具。关键是要有一致性——备份时文件在写怎么办?要能保证备份的是完整状态。
对象存储备份。 S3、OSS这类本身就高可用,但不代表不会丢。误删除、被攻击、写错了数据,都需要备份。一般做法是跨区域复制,或者定期导出到另一个存储桶。
04 备份存储:冷热分层,别把钱烧在不该烧的地方
备份数据也是有生命周期的。
刚产生的备份,可能要随时准备恢复,放热存储(标准存储)。成本高,但恢复快。
一周前的备份,可能只是合规需要,放温存储(低频访问)。成本降一半,恢复慢一点也能接受。
一个月前的备份,可能永远用不上,放冷存储(归档)。成本最低,恢复可能要等几个小时甚至一天。
云厂商都提供这种生命周期策略,用好了能省一大笔钱。
反常识观点:不是所有备份都要存一年。 核心业务保留长,非核心业务保留短。设计时按业务需求分类,别一刀切。
05 容灾:不只是备份,是“备而能用”
备份解决了“数据还在吗”的问题,容灾解决的是“业务还能跑吗”的问题。
容灾有几个层级,对应不同的RTO/RPO:
层级一:同城双活。 两个可用区同时跑业务,一个区挂了,流量切到另一个。RTO分钟级,RPO几乎为零。贵,但最稳。
层级二:异地冷备。 主区域故障时,从另一个区域的备份拉起业务。RTO小时级,RPO取决于最后一次备份时间。便宜,但恢复慢。
层级三:异地多活。 多个区域同时跑业务,任何一个区域挂了,其他区域继续服务。RTO分钟级,RPO近零。最贵,最难,适合全球化业务。
选哪个?看业务容忍度。电商大促可能需要同城双活,内部OA系统异地冷备就够了。
06 恢复演练:平时不练,战时流血
这是最容易被忽视的一环。
备份系统跑了一年,从没恢复过。真出事那天,发现:
恢复文档过期了,步骤对不上
权限不够,有人离职了没移交
恢复出来的数据不完整,日志有gap
怎么办?定期演练。
每季度选一个非核心系统,真刀真枪地恢复一次。跑通全流程,记录时间,发现问题,改进文档。练熟了,真出事的时候不慌。
反常识观点:演练比备份本身更重要。 备份是买保险,演练是确认保险能赔。
07 工具链:云原生的够用,第三方的更强
云厂商都有自己的备份服务:
AWS:Backup、RDS自动备份、S3版本控制
阿里云:HBR混合云备份、RDS备份、OSS跨区域复制
Azure:Backup、Site Recovery
这些原生服务够用,配置简单,和云平台集成好。缺点是可能被厂商锁定,跨云迁移时麻烦。
第三方工具如Veeam、Commvault、Veritas,功能更强,支持多云、混合云,统一管理。缺点是贵,配置复杂。
小公司用云原生的够了,大企业、合规要求高的可以考虑第三方。
08 一个真实案例:备份救了他们,也差点害了他们
去年一家电商公司,大促前误操作删了商品库。幸好有备份,按流程恢复。但恢复后发现数据少了两个小时——因为备份是每天一次,而删除发生在下午四点,最后一次备份是凌晨两点。
他们紧急从binlog里手工补数据,折腾了四个小时才全量恢复。大促首页挂了半天,损失几百万。
后来他们改了策略:核心库每小时备份一次,binlog实时同步到另一个Region,恢复演练每季度一次。今年再问,说“现在踏实了,但每年多花不少钱”。
我问:“多花的钱值吗?”
他说:“值。上次那半天,够买十年备份了。”
写在最后
那位半夜打电话的朋友,后来花了三天手工恢复数据,最后只找回了80%。那20%永远没了。
他说了句话我印象很深:“我以为买了保险就够了,从来没想过要确认保险能赔。”
备份这件事,平时看不见,出事才要命。但真到那时候,没人给你第二次机会。
你的备份能恢复吗?今天就可以试试。挑一个非核心系统,跑一次恢复演练。用不了半天,但能让你睡踏实点。