Oracle,三种高可用方案原理介绍_解决方案

Oracle 三种高可用方案原理介绍 一、概述 Oracle因为是商用版本,所以高可用方案都已经非常成熟,主要有三种高可用方案,下边分别介绍一下。

1 RAC(Real Application Clusters) 多个Oracle服务器组成一个共享的Cache,而这些oracle服务器共享一个基于网络的存储。这个系统可以容忍单机/或是多机失败。不过系统内部的多个节点需要高速网络互连,基本上也就是要全部东西放在在一个机房内,或者说一个数据中心内。如果机房出故障,比如网络不通,那就坏了。所以仅仅用RAC还是满足不了一般互联网公司的重要业务的需要,重要业务需要多机房来容忍单个机房的事故。

2 Data Guard.(最主要的功能是冗灾) Data Guard这个方案就适合多机房的。某机房一个production的数据库,另外其他机房部署standby的数据库。Standby数据库分物理的和逻辑的。物理的standby数据库主要用于production失败后做切换。而逻辑的standby数据库则在平时可以分担production数据库的读负载。

3 MAA MAAMaximum Availability Architecture其实不是独立的第三种,而是前面两种的结合,来提供最高的可用性。每个机房内部署RAC集群,多个机房间用Data Guard同步。

二、三种高可用方式工作原理 1、Oracle 11G RAC RAC环境与单实例最主要的区别是 . RAC的每个实例都有属于自己的SGA、后台进程。

. . 由于数据文件、控制文件共享于所有实例,所以必须放在共享存储中。

. . 联机重做日志文件只有一个实例可以写入,但是其他实例可以再回复和存档期间读取。

. . 归档日志属于该实例,但在介质恢复期间,其他实例需要访问所需的归档日志。

. . alter和trace日志属于每个实例自己,其他实例不可读写。

. RAC的主要组件包括 共享磁盘系统 Oracle集群件 集群互联 Oracle内核组件 oracle集群件 Oracle集群件能使节点能够互相通信,构成集群,从而这些节点能够像单个逻辑服务器那样整体运行。构成Oracle集群件的后台进程和服务是 crsd、ocssd、oprocd、evmd和ons。Oracle集群件由CRS服务使用OCR和votingdisk进行管理。

OCR记录和维持集群及节点的成员资格信息,而votingdisk在通信故障时充当一个仲裁者。在集群运行期间,来自所有节点的一致性心跳信息都会发送给votingdisk。

CRS的组件包括,在Linux系统可以通过ps -ef来查看以下进程 . crs守护进程crsd . . Oracle集群同步服务守护进程ocssd . . 事件管理器守护进程evmd . . Oracle通知服务ons . 集群就绪服务 crsd为Oracle集群提供了高可用性的框架,并管理集群资源的状态启动、停止、监视集群资源,并把发生故障的集群资源重定位到集群中的可用集群节点。集群资源可以是网络资源,如虚拟IP、DB实例、侦听器等。在对集群资源采取任何动作之前,crsd进程都会获取OCR中存储的集群资源配置信息。crsd还使用ocr来维护集群资源配置文件盒状态。每个集群资源都有一个资源配置文件,它存储在OCR中。

集群同步服务 ocssd提供节点之间的同步服务。它提供对节点成员关系的访问,并支持基本集群服务,包含集群组服务和集群锁定。ocssd的故障会导致计算机重新启动,以避免”脑裂“(如出现脑裂情况,集群的处理机制请看下面的votingdisk)。

注 ”脑裂“ -- 集群环境网络链路不能互通,但这些实例仍然正常运作,每个实例都认为其他实例已经挂掉,并尝试接管所有权。在共享存储环境下,如果出现此现象就会发生数据不一致的严重情况。

事件管理进程 Event Management EVM A background process that publishes events that Oracle Clusterware creates.一个发布Oracle集群事件产生的进程。

The background process that publishes Oracle Clusterware events. EVM scans the designated callout directory and runs all s in that directory when an event occurs. Oracle通知服务 在crs启动时会在每个集群节点上启动该进程。只要进群资源的状态发生改变,每个集群节点上的ons进程就会互相通信,并交换HA事件信息。crs触发这些HA事件,并将他们传到ons进程,然后ons进程将这一HA事件信息发布到中间层。为了在中间层使用ONS,对于任何一台主机,只要上面有需要与FAN集成的客户端应用程序,就需要再这台主机上安装ONS。应用程序会出于各种不同原因而使用这些高可用性事件,特别是用于快速检测故障。解决和发布高可用性事件的整个过程称为“快速应用程序通知FAN”。高可用性事件也可称为FAN事件。

Oracle 11g r2的集群件启动进程 在R2中Oracle引入了“Oracle高可用性服务”守护进程OHASD,它启动所有其他Oracle集群件守护进程。在安装GI期间,Oracle向/etc/inittab文件配置内容 /etc/init.d/init.ohasd run /dev/null 21 /dev/null Oracle集群注册表(ocr) OCR文件是二进制文件,OCR存储Oracle集群件中所定义的全部集群资源的元数据、配置和状态信息。OCR必须能够给集群所有节点访问,所以在安装集群时需要配置好相关的权限。OCR用于引导css,提供端口信息等集群中的节点配置信息(可以理解为windows的注册表)。多数情况下OCR只提供只读操作,其他例如在节点新增和删除期间CSS用新的信息更新OCR。

OCR每4个小时会自动备份一次并保存一周,会循环进行覆盖。备份路径为ORACLE_HOME/cdata/。

表决磁盘(votingdisk) Votingdisk是一个共享磁盘,在操作期间可提供集群中的所有节点访问。votingdisk用作节点的集中引用,保存了节点之间的心跳信息。如果有任何节点不能ping表决磁盘,那么集群立即确认通信故障,将该节点从集群中剔除,以防止数据丢失。Votingdisk管理集群成员资格,并在节点之间发生通信故障时判断集群的所有权关系。对Votingdisk的管理应当对其进行镜像操作。

虚拟IP(vip) vip的作用当一个节点停机时,vip会被自动故障转移到其他节点之一,在此期间,获得vip的节点将重新向外部进行地质解析,指示vip的新mac地址,连接到这个vip的client将会立即发送一个重置数据包,这样客户端会获取这个错误消息,而不需要等待TCP超时值。

单一客户端访问名称(scan) Oracle RAC 11g release 2 11.2 introduces the Single Client Access Name SCAN. SCAN is a domain name registered to at least one and up to three IP addresses, either in DNS or GNS. When using GNS and DHCP, Oracle Clusterware configures the VIP addresses for the SCAN name that is provided during cluster configuration. The node VIP and the three SCAN VIPs are obtained from the DHCP server when using GNS. If a new server joins the cluster, then Oracle Clusterware dynamically obtains the required VIP address from the DHCP server, updates the cluster resource, and makes the server accessible through GNS. Example 1-1 shows the DNS entries that delegate a domain to the cluster. Oracle内核组件 OracleRAC环境中的Oracle内核组件是每个实例中的附加后台进程集合。缓冲区缓存和共享池在Oracle RAC换进中变为全局的,需要特殊处理才能做到无冲突、无损坏地管理资源。

全局缓存服务GCS和全局队列服务GES 在这里可以回想在写Oracle体系结构的文时在单实例情况下Oracle对数据缓存和写入的过程,在RAC环境下,每个实例都有属于自己的SGA,那在这种情况下应该如果对数据进行有效管理呢,在rac中,一个节点的缓冲区缓存中可能包含了经常被另一个节点请求的数据,数据共享和交换的管理工作是由全局缓存服务(GCS)完成的。

全局资源目录GRD 集群组中的所有资源构成一个集中的资源仓库,称为GRD,所有实例的资源加起来构成了GRD。GRD由两个服务管理,这两个服务分别为GCS和GES,在Oracle并行服务器中这称为DLMDistribute Lock Management)。

Oracle RAC后台进程 OracleRAC进程包括oracle实例进程之外,还有RAC的进程。这些进程使节点之间的缓存保持一致。维持缓存一致性是RAC的重要部分。缓存一致性技术用于在不同节点上的不同oracle实例之间保持缓冲区多个副本的一致性。GCS管理确保在访问一个缓冲区缓存中某个数据块的主副本时,会与另一个缓冲区缓存中的数据块副本进行协调。这样就确保了一个缓冲区缓存中某个数据块的最新副本包含了系统中另一个实例对该数据块所做的全部修改而无论这些修改是否已经进行事务提交。

GRD管理所有资源的锁定或所有权,这些资源在OracleRAC中并不仅限于单一实例。GRD中GCS处理数据块,GES处理队列和其他全局资源。GCS和GES使用以下进程来管理资源,RAC特有的这些进程和GRD写作,以支持缓存融合 LMS 全局缓存服务进程(LMS是缓存融合中使用的一个进程。可以从数据块所在实例的缓冲区向请求实例的缓冲区缓存中传递数据块的一致性副本,而不需要进行磁盘写入。它还可以从LMD建立的服务器队列中获取请求,以执行所请求的锁操作。LMS进程管理队GCS资源的“锁管理服务器”请求,并将他们发送到一个由LMS进程处理的服务队列和全局锁的死锁检测,并监控锁对话的超时。

LMON 全局队列服务监控器(LMON是一个锁监控器进程,管理GES。) LMD 全局队列服务守护进程(LMD是为GCS管理GES请求的守护进程。) LCK0 实例队列进程(LCK0管理实例资源请求和对共享资源的跨实例调用操作。) DIAG 诊断守护进程(DIAG用于RAC环境中一个实例的所有诊断需求。) 附上RAC集群启动图 2、DG Data Guard这个方案就适合多机房的。某机房一个production的数据库,另外其他机房部署standby的数据库。Standby数据库分物理的和逻辑的。物理的st