首先明确一下概念,比较有助于统一思路,探讨此话题:
只要达到一份以上的数据保存副本,就可以理解为备份。"
而"同城灾备"必定有多于1份的数据副本,因此“备份”已然是“灾备”中的一个部分了。指标是RTO RPO。
那么,如果同城之间的灾备是基于实时同步的方式(隐约记得SNIA称为:Synchronous Replication),本质上就具备了一套备份系统,而且备份的数据副本是实时更新的。为什么还要再次规划“备份系统”呢?
这顾虑通常是被三个关键点左右:
1)实时同步方式对线路要求苛刻,只能是有限的区域,例如:同城,同厂区。我们希望把数据放置的更远,以规避/降低 灾难影响。
2)把可用性扩展至应用层:逻辑错误,网络入侵,尤其是目前猖獗的病毒蠕虫等,实现快速的数据回退,需要借助CDP技术,或密集快照技术。然而目前灾备系统不具备,需要引入额外备份系统填补这一缺陷。
3)预算是否充足。
P.s.数据无价,越多的备份系统越可靠,越多的数据副本越安全,这无需争议。但预算不是无限的。
这之间的权衡?找不到平衡点。
灾备、双活等技术和备份是两种截然不同的技术方案。灾备、双活一般都是生产数据的复制技术。这种复制一般都是实时或近实时的。应对的是介质损坏、站点故障等场景。但是对应人为误删除等故障是没有防范机制的。去年的炉石传说数据丢失、比特币勒索病毒感染造成的数据丢失都是非常典型的教训。
也可以说做了容灾反而更需要做备份,否则发生了误操作等逻辑故障,生产和灾备一损俱损,全部歇菜。因此还是需要做好数据备份工作。
数据冗余和数据灾备是两个问题,两者的设计目标和用途各不相同
1)数据冗余,比如使用oracle的ADG实现同城或者异地灾备以保证金融行业的两地三中心高可用,当一个地方发生故障时,可以快速切换到另外一个机房快速恢复业务系统服务;设计目标是要保证几份数据副本的冗余是时时刻刻保持一致的,尽快恢复数据,做到RTO为零,如果主库进行了一个错误操作,这种错误会传导到其他数据副本环境中,他们是此时此刻的数据镜像。
2)数据备份,比如数据库日志的备份,是为了应付因为人工操作等造成数据问题,比如不小心删除了一张表,或者不带where条件更新了用户余额等等操作,需要将数据恢复到过去某个时间T的状态,是“此时”和“过往时刻”的一个对比,目标是尽量不丢数据,做到RPO为零
即使建立了同城容灾也必须要有备份系统。容灾和备份解决的是不一样问题,容灾解决的是物理问题比如设备、网络、机房电力、火灾等问题或者自然灾害等造成的故障,主中心出问题备中心接管业务;备份解决的是逻辑故障,比如中病毒、误删除等造成的故障。
收起