ORACLE数据库备份入门:第四部分:1-备份方案的设计

1 备份方案的要求

在前一章的内容中,有一个遗留问题,就是数据文件备份和归档日志备份应该如何配合?现在,我们把这个问题再扩展一下,全量、增量和归档,应该如何配合?
备份策略设计前,要考虑几个问题。
1) RTO,也就是在环境被破坏的最彻底的情况下,需要多久能恢复运行。
例如存储设备故障,所有数据全部丢失的情况下,需要多久能恢复正常。这里需要把RTO进行两部分计算,其中一部分是硬件的恢复需要的时间,另外一部分是数据恢复需要的时间。硬件恢复的时间,这是设备管理员的责任范畴,备份管理员不需要考虑,但是要了解结果。如果业务的整体RTO要求是8小时,设备恢复的RTO是6小时(涉及部件更换,所能设备的恢复时间比较久),那么留给数据恢复的时间就是剩下的2小时了。2小时,就是备份管理员要考虑的RTO,也就是在2小时内要恢复全部数据。这里会涉及几个因素,恢复的数据文件数据量、归档数据量、恢复的速度,其中恢复速度与备份数据所保存的存储性能和网络、数据库服务器的存储性能相关。
2) RPO,也就是在环境被破坏的最彻底的情况下,最大允许的数据丢失量
例如,我们每天凌晨2点备份一次数据,在下一次备份开始前由于某种原因数据全部被破坏了(硬件故障、人为误操作等),这种情况下即使恢复了前一次的备份数据,也会丢失24小时的数据。这种场景下,RPO就是24小时。如果业务要求RPO为12小时,那么就备份频率就要设置为12小时一次。
3) 备份作业对业务的影响
在备份时,需要读取数据,业务运行同时也要读取数据。这两个读取动作,必然会产生相互的影响,在业务交易量繁重时,这种影响会非常明显。因此,备份策略设计时,必须要在最大限度上降低对业务的影响,又要保证备份作业的100%完成率。首先,备份方案会选择一个比较合适“时间窗口“,在业务空闲的时间段来进行备份;其次,选择对业务影响最小的方法来进行备份;第三,考虑在不同的”时间窗口“使用不同的备份类型。
4) 恢复验证方法
没有放之四海皆准的方案,这需要备份管理员发挥知识储备和经验的优势,综合以上因素,量体裁衣,制定最适合业务的备份方案。
不同的备份类型,各有优缺点:
全量备份,备份数据量大,但是恢复速度快;
增量备份,备份数据量小,但是不能独立恢复,需要先恢复前续的全量和增量备份,耗时长;
归档备份,必须要做,但是频率高了会影响业务性能(在高频业务场景中,过多的日志切换会影响业务处理速度)。备份频率低了,会扩大RPO指标。
充分利用好这些备份类型的特点,提供最优化的备份解决方案。

2 备份和容灾指标

我们来看一个例子,银保监会要求商业银行核心业务系统RTO≤4小时,RPO≤5分钟,并且要求每24小时进行一次备份。等一下,RPO≤5分钟和24小时备份一次是不是矛盾啊?不矛盾,是我们对法规的理解有问题。
在很多大型的业务应用场景中,由很多个组件组成,并且组件系统间有依赖关系。要求4小时内恢复,就意味着在4小时内要恢复多个组件的数据。在数据恢复后还必须要进行启动并验证,因为组件之前有依赖关系,所以这个过程需要顺序进行,不能并行操作。试想一下,如果数据量稍大一些的系统,整个恢复过程控制在4小时内完成,几乎是不可能完成的任务。是监管要求不合理吗?不是,这是是我们对法规的误解。
首先我们分析一下RTO的问题。监管要求4小时恢复业务,目的是要求系统具备高可用和容灾能力。不论是在本地机房故障时,还是灾难发生后,4小时内能恢复对外服务。这不是对备份的要求,就是对基础架构的要求,对应的解决方案是本地高可用和异地容灾。4小时内可以完成本地切换和异地切换,业务架构设计时就必须要考虑这些因素。
其次,我们看看RPO≤5分钟是什么意思。RPO我们理解,就是允许最大的数据丢失量。但是这里的RPO和备份的RPO是有区别的,所以法规才会分别进行描述。业务的RPO是对主、备系统之间数据差异的要求,并不是数据丢失量的要求。什么是主、备系统之间的数据差异?在高可用架构和容灾架构中,都会涉及到数据复制技术,特别是容灾架构中。数据复制是什么?例如两套存储间传输数据,使两者的数据完全相同。再例如数据库复制,Data Guard传输数据,保证两套Oracle库完全相同。RPO≤5分钟的要求实现容易吗?在高可用场景中,在本地机房或同城机房部署两套系统,之前网络传输的延时低,可实现同步传输,因此满足RPO=0(或约等零)的要求。在容灾场景中,由于异地传输的网络资源限制,延时较大。特别是在业务交易高峰时段,需要传输的数据量大,因此实现RPO≤5分钟的要求是一个比较大的挑战。商业银行,对信息系统非常重视,投入巨大,因此完成满足要求并不困难。事实上,不能满足监管要求也就意味着不能开门营业。但是对于其它行业的企业,这个要求会显得难以企及,因此通常会把RPO降低到几个小时或更长。
我们再来看看监管要求的每24小时备份一次。这是确切的对备份的要求,目的是在数据完全丢失后可以恢复,并且允许丢失24小时的数据。银行允许丢失24小时的数据吗?这有点不可思议啊。其实这个要求是底线,在最严重的情况下才允许出现,例如自然灾害等。在正常运维时如果出现数据丢失,这是最严重的事件,管理层最担心的一条红线。什么类型的事件导致数据丢失?不是有容灾吗?两份数据全部丢失吗?是的,这是有可能的,虽然概率极低,但是依然要全力的去预防。例如存储设备的微码故障,导致主、备两端数据全部损坏;恶意入侵后的破坏;人为误操作等等。这类事件都发生过。银行为什么要保留手工凭证?一是对账,二是关键时候可以进行手工录入恢复。手工录入可靠吗?可靠,银行具备一套非常成熟、完整的应急机制。可以上网查一查,确实发生过,特别是“勒索软件”盛行的时代。
总结一下,不要试图用备份来满足业务上的RPO要求,什么备份技术都不可以。备份是备份,复制是复制,解决不同的问题,万万不能混为一谈。

你可能感兴趣的:(数据库,oracle,备份,方案)