PAGE \* MERGEFORMAT 10
基于 Oracle数据库双活方案对比分析
Oracle RAC/ADG/OGG
1.基于Oracle数据库技术的容灾方案都有哪些?如何选择?
容灾向来是以RPO/RTO来定义其级别,所谓的双活只是业内对某种较高容灾级别的架构的俗称,根据不同的角度对其理解也有所偏差。那么基于此,本人暂且认为只要是两个数据中心同时能提供业务服务的就认为是所谓的双活。在这个前提条件下,从Oracle数据库本身的技术来讲,有这么几种方案。
■?基于跨中心实现的远距离RAC架构。?
1)基于ASM冗余设计实现。?
2)基于存储集群化之后的分布式存储卷实现。
■ 基于Oracle ADG/OGG 实现的主备库架构。
我们先从大的方案比较:
1)从RPO角度来看,RAC方案可以做到理论上的绝对同步。ADG可以做到近似同步,但是一般用在异步场合。
2)从RTO角度来看,RAC方案可以做到理论上的秒级自动故障转移。ADG一般需要人工去实现备库切换,而且需要应用改变连接IP地址,重新启动。
3)从风险角度来看,RAC方案一旦实现距离拉伸,最大的风险在于远距离光纤条件下的节点之间的数据交互。而ADG方案就没有该风险存在。
4)从方案的复杂度来看,RAC方案理论上需要第三点的仲裁,需要双中心二层打通等复杂环境条件。而ADG和OGG方案只需要网络三层可达即可。
5)从投资成本来看,RAC方案实现距离的拉伸之后,需要的环境成本(网络条件、仲裁条件)等都需要较高的成本。ADG和OGG方案没有这些成本。
由此可以看出,实际上从容灾角度考虑(RTO/RPO),那么RAC方案一定是比ADG方案能实现RTO和RPO的更高目标,但是从成本和风险角度考虑,ADG又是最佳的选择。
那么撇开成本和风险,只考虑容灾目标的话,我们再来比较一下对于RAC方案的两种不同存储架构的差异:
1)首先是实现难度及投资比较,ASM冗余设计架构的复杂度在于 ASM 层的设计。Oracle RAC 实例节点看到的共享盘是基于双中心存储实现的镜像策略,所有IO的读写分发是由ASM本身的冗余算法规则来决定的,DBA不仅仅要根据磁盘情况来设计合理的 Failure Group,而且需要结合第三方站点的网络存储卷来合理设计仲裁磁盘组的分配。更重要的是需要结合实际的网络环境指标(延时、稳定性等)进行复杂的性能、稳定性、灾难测试等来调整ASM的一些IO参数。基于分布式存储卷设计架构的复杂度在于整体架构的复杂度。
例如仲裁一致性问题,是指双中心之间的存储集群和数据库RAC集群的仲裁结果是否能保证一致性。存储集群是靠仲裁站点分别于两个站点之间的网络连通性来判定站点故障。而数据库集群是通过以太网心跳和OCR仲裁盘来做数据库仲裁。而数据库的OCR仲裁盘是存储集群提供的分布式共享卷。二者仲裁时的一致性如何保障是非常重要的一个问题。假设在发生站点级别故障时,数据库集群首先根据网络故障触发仲裁,判定站点A的节点存活。而存储随后再发生存储集群的仲裁,这个时候如果根据仲裁站点判定的结果恰恰仲裁委站点B的节点存活。那么数据库集群整体就会宕掉,这对于业务来讲就是一个灾难。
2)从实现的基本条件来看,两种架构的实现都会依赖双中心的二层打通。双中心的波分设备、以太转换设备、光纤链路租用就是必不可少的条件了。包括其购置成本和日后的运维成本等。这是非常可观的一项成本预算。从存储层的架构组成来看,ASM冗余设计架构不需要存储层增加任何其他设备成本及运维成本。但是分布式存储卷架构需要依赖存储层的虚拟化网关产品来实现存储虚拟化集群,无疑这需要增加相应的购置成本和相应的运维成本。尤其注意存储集群产品是否有容量许可成本问题。从第三点的仲裁站点成本来看,两种方案都需要第三点的仲裁,区别在于ASM冗余设计架构需要的是NAS存储,而分布式存储卷架构需要的基于以太网的计算资源来配置仲裁虚拟机。投入成本没有什么差异。
3)从Oracle运维成本来看,ASM冗余设计架构对DBA的要求非常苛刻,需要DBA不仅仅能够深知其中的原理,而且需要对性能的分析有较深的造诣,从而保障在复杂的双中心联动环境下各种复杂情况下的性能及稳定性变动有快速和准确的判断和处理能力。分布式存储卷架构对DBA的要求没有特殊的苛刻要求但是需要增加对存储集群的专业维护成本。
从银行业的角度来看,行业看中的更多的是RPO和RTO以及风险度本身这几个点。
从RPO和RTO角度来选的话,那么方案一定是RAC的方案。但是从风险角度来考虑的话,那么ADG会是比较好的选择。OGG主要用于异构平台之间的数据传输。但是这几中方案并不是只能选择其中一种而舍弃其他的方案。方案各有优劣,为了尽可能达到整体最优,可以考虑方案的组合。
比如说同城实现RAC、异地实现ADG。