(一)什么是高可用?

高可用(High Availability,HA)也可以称为高可用性或高可用环境。HA是分布式系统架构设计中必须考虑的因素之一。HA通常是指通过设计来减少系统不能提供服务的时间。假设系统一直能够提供服务,那么这时就可以称系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,那么可以称系统的可用性是99%。很多公司(例如三大运营商、百度、京东等)的高可用目标都是4个9,也就是99.99%。

百度的搜索首页是业内公认高可用保障非常出色的系统,甚至人们会通过www.baidu.com能不能访问来判断“网络的连通性”。百度高可用的服务给人留下了“网络通畅,百度就能访问”,“百度打不开,应该是网络连不上”的印象,这可以说是对百度HA最高的褒奖了。

众所周知,单点是系统高可用的最大的风险和敌人,应该尽量在系统设计的过程中避免单点。在方法论上,高可用保证的原则是“集群化”,或者叫“冗余”。只有一个单点,挂了服务会受影响;如果有冗余备份,那么挂了还有其它备份能够继续提供服务。RAC提供了实例级别的冗余,DG提供了数据存储级别的冗余。

若要保证系统高可用,则架构设计的核心准则是:冗余。有了冗余之后,还不够,每次出现故障需要人工介入恢复势必会增加系统的不可服务实践。所以,又往往是通过“自动故障转移”来实现系统的高可用。

Oracle Failsafe、DG(Data Guard)、RAC和OGG均为Oracle公司提供的高可靠性(HA)解决方案,但是这几种方案之间却存在着很大区别,下面分别讲解:

(二)Failsafe和RAC的区别

1、操作系统

Failsafe系统局限于Windows平台,必须配合MSCS(microsoft cluster server)使用,而RAC最早是在UNIX平台推出的,目前已扩展至Linux和Windows平台,通过OSD(operating system dependent)与系统交互。对于高端的RAC应用,UNIX依然是首选的平台。

2、系统结构

Failsafe采用的是Share Nothing结构,即采用若干台服务器组成集群,共同连接到一个共享磁盘系统,在同一时刻,只有一台服务器能够访问共享磁盘,能够对外提供服务。只要当此服务器失效时,才有另一台接管共享磁盘。RAC则是采用Share Everything结构,组成集群的每一台服务器都可以访问共享磁盘,都能对外提供服务。也就是说Failsafe只能利用一台服务器资源,RAC可以并行利用多台服务器资源。

3、运行机理

组成Failsafe集群的每台SERVER有独立的IP,整个集群又有一个IP,另外还为Failsafe Group分配一个单独的IP(后两个IP为虚拟IP,对于客户来说,只需知道集群IP,就可以透明访问数据库)。工作期间,只有一台服务器(preferred或owner或manager)对外提供服务,其余服务器(operator)成待命状,当前者失效时,另一服务器就会接管前者,包括Failsafe Group IP与Cluster IP,同时Failsafe会启动上面的Database Service,LISTENER和其它服务。客户只要重新连接即可,不需要做任何改动。对于RAC组成的集群,每台服务器都分别有自已的IP,INSTANCE等,可以单独对外提供服务,只不过它们都是操作位于共享磁盘上的同一个数据库。当某台服务器失效后,用户只要修改网络配置(例如,TNSNAMES.ORA),即可重新连接到仍在正常运行的服务器上,再和TAF结合使用时,甚至网络也可配置成透明的。

4、集群容量

Failsafe通常为两台,RAC在一些平台上能扩展至更多台服务器。

5、分区

Failsafe数据库所在的磁盘必须是NTFS格式的,RAC则相对灵活,裸设备、ASM等都可以。

综上所述,Failsafe比较适合一个可靠性要求很高,应用相对较小,对高性能要求相对不高的系统,而RAC则更适合可靠性、扩展性、性能要求都相对较高的较大型的应用。

(三)RAC和OPS区别

RAC是OPS(Oracle Parallel Server)的后继版本,继承了OPS的概念,但是RAC是全新的,Cache机制和OPS完全不同。RAC解决了OPS中两个节点同时写同一个BLOCK引起的冲突问题。从产品上来说RAC和OPS是完全不同的产品,但是也可以认为是相同产品的不同版本。

(四)RAC、DG和OGG的区别

RAC和DG是高可用体系中的常用的两种工具,每个工具既可以独立应用,也可以相互配合使用。但是它们各自的侧重点不同,适用场景也不同。

RAC是本地的高可用集群,每个节点用来分担不同或相同的应用,以解决运算效率低下、单点故障这样的问题,它是几台硬件相同或不相同的服务器加一个共享存储来构成的。RAC的强项在于解决单点故障负载均衡,所以,RAC方案常用于7*24的核心系统,但RAC方案中的数据只有一份,尽管可以通过RAID等机制避免存储故障,但是数据本身是没有冗余的,因此需要加强备份。

DG是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,是一种异地容灾的解决方案。DG通过冗余数据的方式来提供数据保护,通过日志同步机制保证冗余数据和主库之间的同步,这种同步可以是实时、延时、同步或异步等多种形式。DG常用于异地容灾和小企业的高可用性方案,可以在备库上执行只读地查询操作,从而分散主库的性能压力。

OGG软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库的同步。OGG可以实现一对一、广播(一对多)、聚合(多对一)、双向复制、层叠、点对点、级联等多种灵活的拓扑结构,可以实现只复制某几个表的功能。

Oracle高可用性产品比较见下表:

双机热备/FailsafeOPS(Oracle Parallel Server)RACDGDataGuardOGG
共享存储不是独立存储不是
保护类型热备只有1个实例,1个数据库,做不了并发和负载均衡实例冗余,负载均衡实例级冗余数据库层次冗余schema或表级别冗余
需要的软硬件资源只有两台机器和磁盘阵列,有一个漂移的IP,不能共享存储有两台机器和磁盘阵列,有两个虚拟IP可以有多台机器和磁盘阵列,1个节点有1个虚拟IP有独立的机器和独立的存储有独立的机器和独立的存储
优缺点Failsafe是免费的,一台服务器闲置,硬件浪费较大在并发读写性能上较差读写并发性能较好,但是对于DBA的技能和专业性要求较高,软件上也需要单独购买是一个轻量级的容灾系统,从Oracle 11g开始还能在备库节点上进行读写和自动故障转移可以在表或schema级别实现实时复制,可以实现双向同步
拓扑结构 支持一对多模式,只能实现单向同步支持一对一、一对多、多对一、双向复制等多种拓扑结构