Oracle数据库HA架构方案介绍

摘要:Oracle数据库在各种应用系统中负责存储平台全部的用户数据,数据库的可靠性及安全性直接影响平台的安全运行,目前采用的Oracle Replication方式来实现的数据库高可靠性已经显示出了弊端,本文介绍并分析了目前比较流行的几种数据库高可用性的架构:Oracle ReplicationOracle RacOracle 主机HA等,但愿给你们一个参考。html

1 什么是高可用性(High  Availability)

高可用(HA)性有两种不一样的含义,在广义环境中是指整个系统的高可用性,在狭义方面通常指主机、服务的冗余,如主机HA、应用程序的HA等,不管那种状况,高可用性均可以包含以下一些方面:node

Ø 系统失败或崩溃数据库

Ø 应用层或者中间层错误缓存

Ø 网络失败安全

Ø 介质失败:指一些存放数据的媒体介质故障服务器

Ø 人为错误网络

Ø 系统的容灾备份架构

Ø 计划内的维护或者重启并发

可见,高可用性不只包含了系统自己故障、应用层的故障、网络故障、认为操做的错误等,还包含数据的冗余、容灾及计划的维护时间等,也就是说一个真正的高可用环境,不只能避免系统自己的问题,还应该能防止天灾、人祸,而且有一个可靠的系统升级及计划维护操做。负载均衡

本文探讨的Oracle  数据库层面的高可用性,不可避免也会涉及到一些主机、存储、操做系统方面的高可用性,由于要实现Oracle服务的连续性保障是离不开硬件层面的支持的。随着Oracle技术的发展(Oralce  8i/9i/10g/11g),高可用性愈来愈完善、愈来愈可靠,本文介绍了四种Oracle  高可用性的相关产品,并经过其实现方式和性能的比较获得在如今和将来的Vas2000系统中更适合的数据库高可用性方案:

Ø Oracle Parallel Server/Oracle Real Application Cluster(Oracle  Rac)

Ø Oracle Standby Database/Oracle Data Guard

Ø Oracle Advanced Replication/Oracle Stream

Ø Oracle Server HA

2 Oracle并行数据库OPS/RAC

OPS 从Oracle 8i开始提供,从Oracle 9i开始成为RAC,而且随着高性能PC SERVER的普及,Oracle  Rac也成为Oracle高可用性产品最流行的一种架构,Oracle  Rac经过组织多个服务器的Cluster来得到更大的计算处理能力和故障处理能力的集群。

2.1 Oracle RAC架构介绍

RAC经过不一样的节点(node)使用一个(通常是一个)或者多个Oracle实例(Instance)与一个数据库(Database)链接,该数据库存放于多个节点的公用存储(Share  Storage)上,经过高速缓存合并技术使得集群中的每一个节点能够经过高速集群互联高效的同步其内存高速缓存,从而最大限度地减低磁盘IO,而且自动并行处理及均匀分布负载,当其中一个节点发生故障时能够自动容错和恢复能力来实现节点的故障切换(Failover),从而保证数据库7X24小时的高可用性,下图1  是以两个节点为例来简单介绍一个RAC架构的软、硬件结构:

 

Oracle数据库HA架构方案介绍


  图1 Oracle RAC结构图

在上图的结构中采用了2节点(node)的RAC,经过共享的存储介质使两个节点同时访问Database,在实际的工做环境中共享存储通常经过存储网络(SAN)提供,应用层服务器经过链接RAC的VIP(Virtual  IP)负载均衡的链接到任何一个节点提供服务,当其中的任何一个节点发生故障时,另外一个正常的节点能够自动接管其服务,对于应用来讲不须要作任何切换,只需经过VIP的自动跳转来实现失败节点的切换,在故障切换时Oracle会自动恢复故障节点中的事物,以便使整个数据库处于一致状态,整个切换过程通常持续1~5分钟,具体取决于应用环境的压力大小和复杂程度。

Oracle RAC除了硬件的组成外,还须要Oracle的软件组件来支持,主要包含以下5个层次的软件环境:

Ø CRS:Oracle  10g以上版本的Cluster软件,管理整个RAC环境,包括VIP、监听、ASM、DB等,除了Oracle本身的Cluster软件外,目前也有不少第三方的Cluster软件可用,好比:Sun  Cluster、Lifekeeper、Leagto等,能够根据具体部署环境的要求来选择

Ø RAC:Oracle的Cluster支持组件

Ø Listener:监听与Oracle网络

Ø ASM  Inst:ASM的实例,提供存储管理,使得存储空间之间能够提供给Cluster数据库使用,在不少OS上若是使用了第三方的Cluster软件则必须采用第三方的存储管理软件(LVM),如IBM的HACMP、Veritas的VCS等

DB Inst:这里是RAC环境的最上层,DB层,数据库就运行在该层

2.2 Oracle RAC特色

1)    单一的Cluster环境

  从Oracle  10g开始推出的CRS软件与ASM存储管理设置,能够彻底脱离第三方的Cluster软件而在各个平台上安装使用,从而不但下降了RAC环境的成本,也使安装、维护更加简单

2)    实现Oracle的持续服务和负载均衡

经过VIP访问RAC,当一个节点发生故障时这个VIP会转移到其余节点上,从而保证应用的不间断服务,同时CRS也能够对访问RAC的服务负载均衡的分布到环境中的每一个node上。RAC环境也是一个可伸缩的环境,在不影响当前业务的条件下,能够方便的增长和删除节点。

3)    在线补丁升级

RAC系统支持补丁滚动方式的升级,当补丁应用大一个节点上时其余节点能够正常的运行提供服务,同时根据补丁产生的编号,将不定标记为是不是否做为滚动升级来安装,若是须要滚动升级则能够在不影响提供服务的前提下自动应用到每一个节点。

4)    须要与其余容灾组件配合完成存储的备份

 RAC的Data file、Control file、Redo  log等都存放到共享的存储上,RAC只具有主机、应用的保护和负载均衡,并不具有容灾的功能,如共享磁盘设备损坏或者不可预料的损失将致使RAC环境的不可以使用,因此RAC通常要与其余的容灾组件配合使用来保证数据的安全,通常依靠RAID、LV镜像、活Data  Gua来实现数据的冗余。

3 Oracle备用数据库Standby/Data Guard

Standby database/Data  Guard是Oracle退出的另外一种高可用性数据库方案,在主要和备用节点之间经过日志同步来保证数据同步,备用节点做为主节点的备份,能够实现快速的切换与灾难性恢复。从Oralce  9i开始,Standby数据库改名为数据库保护(Data Guard)

3.1  Oracle Data Guar结构介绍

Data  Guard通常包括两套数据库环境,一台主要数据库,一台备用数据库,与RAC不一样的是,以通常状况下只有一个节点处于活动状态,全部应用都链接到主服务器上,只有当主服务器发送故障时才考虑切换到备用服务器。备用服务器通常不提供读写的操做,只有当须要时才提供只读的操做,或者当主站点出现故障时通过切换操做才变为主数据库,提供正常的读写操做,因为存在Active/Standby两套主机、存储环境,因此较RAC多了数据保护盒容灾的功能,图2为Data  Guard的结构图:

Oracle数据库HA架构方案介绍

 

图2 Oracle Data Guard结构图

 

在以上结构中,主备数据库各一套,在实际的应用环境中能够根据环境的不一样配置多套主、备用数据库。物理Standby实际上是采用备份与恢复的原理实现的,在主、备数据库之间,采用Standby的日志传送方式,归档日志活联机日志经过网络传送到备用端,因此能够把Standby看作是一个正在不停恢复中的数据库,由于主数据库一直在运行,因此备用数据库一直处于应用日志状态,或者等待下一个日志应用。由于Standby的主数据库与备用数据库是两个独立的数据库,基本上没有太大的联系,因此该体系结构远没有RAC那么复杂,只要两个数据库直接网络相通就能够。从Oracle  9i开始,既能够传送归档日志也能够传送联机日志,根据传送日志的不一样分别由ARCH和LGWR进程来处理,但因为传送联机日志须要实时的同步,因此要求在备用数据库创建对应的日志文件(Standby  log),而且可能会对LGWR进程形成必定的影响,因此从Oracle  10g之后默认采用归档日志传送,这种方式不须要额外的配置,只须要简单的修改Standby数据库的归档路径便可。

3.2 Oracle Data Guard特色

1)  能够实现数据库主机及存储的彻底冗余保护,该冗余甚至能够跨地域作成容灾保护,是Oracle主推的容灾产品。在Standby中主用数据库必须运行在归档模式下,以保证备用节点的数据一致性,所以该特性并不适合数据仓库。

2)  Standby主节点对OS的环境要求较高,通常要必须是相同或者相近的OS环境,而且对数据库版本也有特定的要求,不能实现跨数据库版本的备份。

3)  不能自动的故障切换,若是主站点损坏要切换到备用站点,则须要在切换前彻底同步主站点当前的联机日志,不然会发生切换后数据丢失的现象。

4 Oracle高级复制与流

Advanced  Replication/Streams的设计目的是更灵活的实现数据分布,这种技术能够讲一个数据库中的表、用户(Schema)、表空间(Tablespace)或者整个数据库复制到另外一数据库上中,甚至是双向的同步,Oracle  9iR2开始实现这种方式更倾向于Streams技术,Advanced  Replication是基于内部触发器的技术,而Streams采用挖掘日志的方式,对系统的压力大大的减少。

4.1 Streams结构介绍

在Oracle 9iR2以前,若是想实现数据库的复制,除了备用数据库(Standby Database)和高级复制(Advanced  Replication)等技术外,没有其余号的办法,而Standby Database主要应用于容灾,是这个数据库的彻底复制,而Advanced  Replication配置相对复杂,而且对性能影响比较大,所以在应用上都有弊端,Oracle在9iR2版开始推出Streams技术,它与Standby备份数据库技术内部运行机制很是类似,都是捕获主数据库的日志而后传送到目标机器上应用日志而恢复,图3是Streams技术的结构图:

Oracle数据库HA架构方案介绍

图3Streams结构图

 

虽然与Standby同样都是捕获主机的日志后进行数据同步,但Streams技术却比Standby具体不少优势:

Ø 支持部分复制,能够只复制一个表、一个用户或者一个表空间,这个是Standby没法实现的

Ø 支持一个数据库内部复制也能够跨数据库复制甚至跨数据库产品(从数据库到非Oracle数据库之间的复制

Ø 支持双向复制,而Standby备用数据库除了能提供查询外在备用状态下是不支持写操做的

 Streams技术经过高级队列(Advanced Queuing)、日志挖掘(Logminer)、和做业调度(Job  Schedule)等技术,来实现集捕获、传输、共享的数据共享通道。Streams  Replication的处理过程主要分为三个阶段,包括:捕获(Capture)、传播(Propagate)与应用(Apply),下面咱们具体介绍这三个阶段的工做原理:

Ø    捕获:根据站点定义的捕获规则(Rules),将符合捕获的事物及操做(DML、DL)从数据库的联机日志或者归档日志中解析出来,变成逻辑改变记录LCR(Logical  Change Records)

Ø    传播:主要是网络传播过程,做为Job  Queues进行调度,它负责将消息队列中的LCRs传送到目标队列中,它提供了“一对多”、“多对一”、“一对一”的传播方式,还支持不一样环境中的传播

应用:负责从目标站点消息队列提早LCRs,而且根据Streams  Replication目标站点定义的规则(Rules)解析出一句提交的事物,而后按照以来关系与执行顺序来组织好这些事物分配给应用进程应用这些事物。

4.2 Oracle Streams特色

1)    Oracle  Streams最大的特色就是灵活,能够跨平台对单独表、用户、表空间或者整个数据库进行复制,而复制的压力更小,基本对数据库形成额外的压力,这也是对Advanced  Replication更加先进的体现

2)    Streams能够实现双向复制和多源复制,灵活的跟进应用特色定义复制的方式

3)    能够实现数据库主机、存储的彻底容易备份,大大提升了系统的可用性、扩展性和安全性

4)    Streams技术虽然获得了很大的完善,但该技术缺乏像RAC、Data  Guard技术那样在高可用环境下的验证,因此目前对该技术的认知度还有待提升

5 数据库主机HA

Oracle主机HA(Server HA)属于咱们开始说的狭义意义上的HA,它是基于OS的技术,采用OS支持的Cluster  Soft来保证主机的冗余保护,当主机或者网络发生故障时来实现自动保护切换,它和RAC同样使用共享存储来保证数据的一致性

5.1主机HA结构介绍

主机HA技术出现的比较早,技术也比较成熟,如今市场上也有不少优秀的支持各类OS的Cluster  Soft,因此主机HA技术应用很是普遍,并且主机HA的集群技术与数据库的版本、特性无关,在不一样的数据库版本甚至不一样的数据库上均可以实现主机的HA,它与RAC的工做模式有所不一样,RAC主要工做在双机双工的末实现,而主机HA则工做在双机热备或者双机互备的模式下,同时RAC是居于数据库而完成的高可用性,而主机HA是基于OS完成的主机高可用性来保证数据库的高可用性,图4为主机HA的结构图:

Oracle数据库HA架构方案介绍

图4 主机HA结构图

主机HA技术是一个或者多个主机共享一台备用主机的集群技术,因此它能解决主机故障包括OS故障、主机网卡故障、单个主机的网络故障等,经过Cluster软件将两台或者多台数据库主机绑定一个服务IP,全部的Data  file、Contr File、Redo log等都存放于共享的存储上,主机HA集群经过一个服务IP对外提供服务,经过HA  Soft软件的管理集群中的各个主机运行在Active/Standby方式下,当其中一台主机发送故障时,HA  Soft软件会自动的检测到故障而且将提供服务的IP切换到正常的主机上提供服务,从而保证了数据库服务的连续性和故障的自动切换。如今支持主机HA的Cluster软件有不少种,只要的有:Veritas的VCS,IBM的HACMP,HP的ServiceGuard,SUN的Sun  Cluster等。

5.2主机HA特色

1)    主机HA的最大优势就是能够解决服务器的单点故障,Database全部的文件都创建在共享存储上,存储的冗余须要依赖其余技术(RAID、LVS等)来实现

2)    主机HA的技术简单成熟,因此在实际的应用中被广使用,但对主机资源的浪费比较严重,基本上要保证对等的资源处于等待状态

6 Oracle高可用性架构举例

Oracle数据库的稳定与安全关乎整个平台的稳定与安全,下图描述的体系结构是实现Oracle高可靠性的一种不错的架构,数据库采用了RAC+ASM+STANDBY的结构体系,应用层采用Oracle本身的Application  Server。用户经过负载均衡设备访问不一样的Oracle应用服务器,而应用服务器经过自动负载均衡及Failover特性访问当前的主数据库。

当主站点出现故障的时候,Data  guard能够手工或者是自动切换到备用端,应用服务器的访问也将自动被切换到备用站点,以保证系统的最大可用性与业务连续性。

Oracle数据库HA架构方案介绍

 

7 总结

以上咱们介绍了当今世界上流行的Oracle  高可用性的架构方案,但对于咱们现实的工做中,随业务的不断发展,根据硬件的投入与产出的比例,平台到底适合哪一种数据库的高可用性方案比较合适呢?我认为能够根据平台业务、硬件配置的不一样选择不一样的数据库高可用性方案,从而既极大的发挥了平台中硬件设备的性能同时也保证了数据的冗余,主要可依据现网数据库主机的配置和对数据库访问的并发需求来选择,具体以下:

1) 现网两台数据库主机配置至关而且数据库并发访问量较大

对于这种平台因为数据库访问量相对较大,而且数据库主机的硬件配置至关,建议采用Oracle Advanced  Replication/Streams的架构来实现数据库的高可用性,这样两台数据库服务器都做为主用服务器提供服务,在保证了并发数的同时又保证数据的冗余备份。

2)   现网数据库主机性能较低但须要支持大量的并发访问

对于这种平台建议采用Oracle  RAC的架构方案,该方案可使多台链接的PC组成一个支持大量访问的集群,而且能够灵活的增长、删除集群中的节点来实现平台的平滑扩容和升级,但须要相应的存储、容灾方案的配合。

3) 现网只有一台数据库主机而且该主机基本知足平台需求

对于这种平台建议采用备用数据的方案(Standby/Data Guard),一台性能不错的主机做为主数据库,增长一条档次较低的主机(pc  server)做为备用数据库,备用数据库只作主用数据库的冗余,不提供读写操做,在主用数据库发生故障时能够临时启用备用数据库提供服务。

相关文章
相关标签/搜索