♣
题目部分
在Oracle中,RAC、DG和OGG的区别有哪些?
♣
答案部分
(一)什么是高可用?
高可用(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高可用性产品比较见下表:
双机热备/Failsafe | OPS(Oracle Parallel Server) | RAC | DG(DataGuard) | OGG | |
共享存储 | 不是 | 有 | 有 | 独立存储 | 不是 |
保护类型 | 热备只有1个实例,1个数据库,做不了并发和负载均衡 | 实例冗余,负载均衡 | 实例级冗余 | 数据库层次冗余 | schema或表级别冗余 |
需要的软硬件资源 | 只有两台机器和磁盘阵列,有一个漂移的IP,不能共享存储 | 有两台机器和磁盘阵列,有两个虚拟IP | 可以有多台机器和磁盘阵列,1个节点有1个虚拟IP | 有独立的机器和独立的存储 | 有独立的机器和独立的存储 |
优缺点 | Failsafe是免费的,一台服务器闲置,硬件浪费较大 | 在并发读写性能上较差 | 读写并发性能较好,但是对于DBA的技能和专业性要求较高,软件上也需要单独购买 | 是一个轻量级的容灾系统,从Oracle 11g开始还能在备库节点上进行读写和自动故障转移 | 可以在表或schema级别实现实时复制,可以实现双向同步 |
拓扑结构 | 支持一对多模式,只能实现单向同步 | 支持一对一、一对多、多对一、双向复制等多种拓扑结构 |
& 说明:
有关高可用产品的更多内容可以参考:http://blog.itpub.net/26736162/viewspace-2141231/
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
详细内容可以添加麦老师微信或QQ私聊。
About Me:小麦苗
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:618766405
● 提供OCP、OCM和高可用部分最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
DBA宝典
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。