Oracle的三种⾼可⽤集⽅案
转载⾃:wwwblogs/baiboy/p/orc2.html#_label1
Oracle的三种⾼可⽤集⽅案
1 RAC(Real Application Clusters)
多个Oracle服务器组成⼀个共享的Cache,⽽这些Oracle服务器共享⼀个基于⽹络的存储。这个系统可以容忍单机/或是多机失败。不过系统内部的多个节点需要⾼速⽹络互连,基本上也就是要全部东西放在在⼀个机房内,或者说⼀个数据中⼼内。如果机房出故障,⽐如⽹络不通,那就坏了。所以仅仅⽤RAC还是满⾜不了⼀般互联⽹公司的重要业务的需要,重要业务需要多机房来容忍单个机房的事故。
2 Data Guard.(最主要的功能是冗灾)
Data Guard这个⽅案就适合多机房的。某机房⼀个production的数据库,另外其他机房部署standby的数据库。Standby数据库分物理的和逻辑的。物理的standby数据库主要⽤于production失败后做切换。⽽逻辑的standby数据库则在平时可以分担production数据库的读负载。
3 MAA
MAA(Maximum Availability Architecture)其实不是独⽴的第三种,⽽是前⾯两种的结合,来提供最⾼的可⽤性。每个机房内部署RAC集,多个机房间⽤Data Guard同步。
RAC概述
共享存储⽂件系统(NFS),或甚⾄集⽂件系统(如:OCFS2)主要被⽤于存储区域⽹络(所有节点直接访问共享⽂件系统上存储器),这就使得节点失效⽽不影响来⾃其他节点对⽂件系统的访问,通常,共享磁盘⽂件系统⽤于⾼可⽤集。
Oracle RAC的核⼼是共享磁盘⼦系统,集中所有节点必须能够访问所有数据、重做⽇志⽂件、控制⽂件和参数⽂件,数据磁盘必须是全局可⽤的,允许所有节点访问数据库,每个节点有它⾃⼰的重做⽇志和控制⽂件,但是其他节点必须能够访问它们以便在那个节点出现系统故障时能够恢复。
Oracle RAC 运⾏于集之上,为 Oracle 数据库提供了最⾼级别的可⽤性、可伸缩性和低成本计算能⼒。如果集内的⼀个节点发⽣故
障,Oracle 将可以继续在其余的节点上运⾏。Oracle 的主要创新是⼀项称为⾼速缓存合并的技术。⾼速缓存合并使得集中的节点可以通过⾼速集互联⾼效地同步其内存⾼速缓存,从⽽最⼤限度地低降低磁盘 I/O。⾼速缓存最重要的优势在于它能够使集中所有节点的磁盘共享对所有数据的访问。数
据⽆需在节点间进⾏分区。Oracle 是唯⼀提供具备这⼀能⼒的开放系统数据库的⼚商。其它声称可以运⾏在集上的数据库软件需要对数据库数据进⾏分区,显得不切实际。企业⽹格是未来的数据中⼼,构建于由标准化商⽤组件构成的⼤型配置之上,其中包括:处理器、⽹络和存储器。Oracle RAC 的⾼速缓存合并技术提供了最⾼等级的可⽤性和可伸缩性。Oracle 数据库 10g 和OracleRAC 10g 显著降低了运营成本,增强了灵活性,从⽽赋予了系统更卓越的适应性、前瞻性和灵活性。动态提供节点、存储器、CPU 和内存可以在实现所需服务级别的同时,通过提⾼的利⽤率不断降低成本。
oracle10g客户端安装步骤RAC 集成集件管理
Oracle RAC 10g 在 Oracle 数据库 10g 运⾏的所有平台上提供了⼀个完整集成的集件管理解决⽅案。这⼀集件功能包括集连接、消息处理服务和锁定、集控制和恢复,以及⼀个⼯作负载管理框架(将在下⽂探讨)。Oracle RAC 10g 的集成集件管理具有以下优势:
(⼀) 成本低。Oracle 免费提供这⼀功能。
(⼆) 单⼀⼚商⽀持。消除了相互推诿的问题。
(三) 安装、配置和持续维护更简单。Oracle RAC 10g 集件使⽤标准 Oracle 数据库管理⼯具进⾏安装、配置和维护。这⼀过程⽆须其它的集成步骤。
(四) 所有平台,质量始终如⼀。与第三⽅产品相⽐,Oracle 对新软件版本进⾏了更严格的测试。
(五) 所有平台,功能始终如⼀。例如,⼀些第三⽅集件产品限制了集内可以⽀持的节点的数量。借助Oracle RAC 10g,所有平台可以⽀持多达 64 个节点。⽤户还可以在所有平台上获得⼀致的响应体验,从⽽有效解决了⾼可⽤性挑战,包括服务器节点故障、互连故障以及 I/O 隔离现象等。
(六) ⽀持⾼级功能。这包括集成监视和通知功能,从⽽在发⽣故障时,在数据库和应⽤层之间实现快速协调的恢复。
RAC 的体系结构
RAC 是 Oracle 数据库的⼀个集解决⽅案,是有着两个或者两个以上的数据库节点协调运作能⼒的。如下图所⽰的 RAC 结构图:
集管理器(Cluster Manager)在集系统中对其他各个模块进⾏整合,通过⾼速的内连接来提供集节点之间的通信。各节点之间内连接使⽤⼼跳线互联,⼼跳线上的信息功能确定集逻辑上的节点成员信息和节点更新情况,以及节点在某个时间点的运⾏状态,保证集系统正常运⾏。通信层管理节点之间的通信。它的职责是配置,互联集中节点信息,在集管理器中使⽤由⼼跳机制产⽣的信息,由通信层负责传输,确保信息的正确到达。还有⼀些集监视进程不断验证系统的不同领域运⾏状况。例如,⼼跳监测不断验证的⼼跳机制的运作是否良好。在⼀个应⽤环境当中,所有的服务器使⽤和管理同⼀个数据库,⽬的是分散每⼀台服务器的⼯作量。硬件上⾄少需要两台以上的服务器,⽽且还需要⼀个共享存储设备;同时还需要两类软件,⼀类是集软件,另外⼀类就是 Oracle 数据库中的 RAC 组件。同时所有服务器上的 OS 都应该是同⼀类 OS,根据负载均衡的配置策略,当⼀个客户端发送请求到某⼀台服务的 listener 后,这台服务器根据负载均衡策略,会把请求发送给本机的 RAC组件处理,也可能会发送给另外⼀台服务器的 RAC 组件处理,处理完请求后,RAC 会通过集软件来访问共享存储设备。逻辑结构上看,每⼀个参加集的节点有⼀个独⽴的实例,这些实例访问同⼀个数据库。节点之间通过集软件的通信层(Communication Layer)来进⾏通信。同时为了减少 I/O 的消耗,存在⼀个全局缓存服务,因此每⼀个数据库的实例,都保留了⼀份相同的数据库 cache。RAC 中的特点如下:
l 每⼀个节点的实例都有⾃⼰的 SGA;
l 每⼀个节点的实例都有⾃⼰的后台进程
l 每⼀个节点的实⼒都有⾃⼰的 redo logs
l 每⼀个节点的实例都有⾃⼰的 undo 表空间
l 所有节点都共享⼀份 datafiles 和 controlfiles
RAC 的结构组成和机制
在 Oracle9i 之前,RAC 称为 OPS(Oracle Parallel Server)。RAC 与 OPS 之间的⼀个较⼤区别是,RAC 采⽤了Cache Fusion(⾼缓存合并)技术,节点已经取出的数据块更新后没有写⼊磁盘前,可以被另外⼀个节点更新,然后以最后的版本写⼊磁盘。在 OPS 中,节点间的数据请求需要先将数据写⼊磁盘,然后发出请求的节点才可以读取该数据。使⽤ Cache Fusion 时,RAC 的各个节点间数据缓冲区通过⾼速、低延迟的内部⽹络进⾏数据块的传输。下图是⼀个典型的 RAC 对外服务的⽰意图,⼀个 Oracle RAC Cluster 包含了如下的部分
1. 集的节点(Cluster node)——2 个到 N 个节点或者主机运⾏ Oracle Database Server。
2. 私有⽹络(Network Interconnect)——RAC 之间需要⼀个⾼速互联的私有⽹络来处理通信和 Cache Fusion。
3. 共享存储(shared Storage)——RAC 需要共享存储设备让所有的节点都可以访问数据⽂件。
4. 对外服务的⽹络(Production Network)——RAC 对外服务的⽹络。客户端和应⽤都通过这个⽹络来访问。
RAC 后台进程
Oracle RAC 有⼀些⾃⼰独特的后台进程,在单⼀实例中不发挥配置作⽤。如下图所⽰,定义了⼀些 RAC 运⾏的后台进程。这些后台进程的功能描述如下。
(1)LMS(Global cache service processes 全局缓存服务进程)进程主要⽤来管理集内数据块的访问,并在不同实例的 Buffer Cache 中传输数据块镜像。直接从控制的实例的缓存复制数据块,然后发送⼀个副本到请求的实例上。并保证在所有实例的 Buffer Cache 中⼀个数据块的镜像只能出现⼀次。LMS 进程靠着在实例中传递消息来协调数据块的访问,当⼀个实例请求数据块时,该实例的 LMD 进程发出⼀个数据块资源的请求,该请求指向主数据块的实例的 LMD 进程,主实例的 LMD 进程和正在使⽤的实例的 LMD 进程释放该资源,这时拥有该资源的实例的 LMS 进程会创建⼀个数据块镜像的⼀致性读然后把该数据块传递到请求该资源的实例的BUFFER CACHE 中。LMS 进程保证了在每⼀时刻只能允许⼀个实例去更新数据块,并负责保持该数据块的镜像记录(包含更新数据块的状态 FLAG)。RAC 提供了 10 个LMS 进程(0~9),该进程数量随着节点间的消息传递的数据的增加⽽增加。(2)LMON(Lock Monitor Process,锁监控进程)是全局队列服务监控器,各个实例的 LMON 进程会定期通信,以检查集中各个节点的健康状况,当某个节点出现故障时,负责集重构、GRD 恢复等操作,它提供的服务叫做 Cluster Group Service(CGS)。
LMON 主要借助两种⼼跳机制来完成健康检查。
(⼀) 节点间的⽹络⼼跳(Network Heartbeat):可以想象成节点间定时的发送 ping 包检测节点状态,如果能在规定时间内收到回应,就认为对⽅状态正常。
(⼆) 通过控制⽂件的磁盘⼼跳(controlfile heartbeat ):每个节点的 CKPT 进程每隔 3 秒钟更新⼀次控制⽂件的数据块,这个数据块叫做Checkpoint Progress Record ,控制⽂件是共享的,所以实例间可以互相检查对⽅是否及时更新来判断。
(三) LMD (the global enqueue service daemon ,锁管理守护进程)是⼀个后台进程,也被称为全局的队列服务守护进程,因为负责对资源的管理要求来控制访问块和全局队列。在每⼀个实例的内部,LMD 进程管理输⼊的远程资源请求(即来⾃集中其他实例的锁请求)。此外,它还负责死锁检查和监控转换超时。
(四) LCK (the lock process ,锁进程)管理⾮缓存融合,锁请求是本地的资源请求。LCK 进程管理共享资源的实例的资源请求和跨实例调⽤操作。在恢复过程中它建⽴⼀个⽆效锁元素的列表,并验证锁的元素。由于处理过程中的 LMS 锁管理的⾸要职能,只有⼀个单⼀的 LCK 进程存在每个实例中。
(五) DIAG (the diagnosability daemon ,诊断守护进程)负责捕获 RAC 环境中进程失败的相关信息。并将跟踪信息写出⽤于失败分析,DIAG 产⽣的信息在与 Oracle Support 技术合作来寻导致失败的原因⽅⾯是⾮常有⽤的。每个实例仅需要⼀个 DIAG 进程。
(六) GSD (the global service daemon ,全局服务进程)与 RAC 的管理⼯具 dbca 、srvctl 、oem 进⾏交互,⽤来完成实例的启动关闭等管理事务。为了保证这些管理⼯具运⾏正常必须在所有的节点上
先start gsd ,并且⼀个 GSD 进程⽀持在⼀个节点的多个 rac.gsd 进程位ORACLE_HOME/srvm/log/gsdaemon.log 。GCS 和 GES 两个进程负责通过全局资源⽬录(Global Resource Directory GRD )维护每个数据的⽂件和缓存块的状态信息。当某个实例访问数据并缓存了数据之后,集中的其他实例也会获得⼀个对应的块镜像,这样其他实例在访问这些数据是就不需要再去读盘了,⽽是直接读取SGA 中的缓存。GRD 存在于每个活动的 instance 的内存结构中,这个特点造成 RAC 环境的 SGA 相对于单实例数据库系统的 SGA 要⼤。其他的进程和内存结构都跟单实例数据库差别不⼤。
RAC 共享存储
RAC 需要有共享存储,独⽴于实例之外的信息,如上⾯提到的ocr 和 votedisk 以及数据⽂件都存放在这个共享存储⾥的。有OCFS 、
OCFS2、RAW 、NFS 、ASM 等这样的⼀些存储⽅式。OCFS (Oracle Cluster File System ) 和 OCFS2 就是⼀个⽂件系统⽽已,和 NFS ⼀样,提供⼀种集环境中的共享存储的⽂件系统。RAW 裸设备也是⼀种存储⽅式,是 oracle11g 之前的版本中 RAC ⽀持的存储⽅式,在Oralce9i 之前,OPS/RAC 的⽀持只能使⽤这样的⽅式,也就是把共享存储映射到 RAW Device ,然后把 Oracle 需要的数据选择 RAW
device 存储,但是 RAW 相对于⽂件系统来说不直观,不便于管理,⽽且 RAW Device 有数量的限制,RAW 显然需要有新的⽅案来代替,这样就有了 OCFS 这样的⽂件系统。当然,这只是 Oracle ⾃⼰的实现的集⽂件系统⽽已,还有其他⼚商提供的⽂件系统可以作为存储的选择⽅案。ASM 只是数据库存储的⽅案⽽已,并不是 cluster 的⽅案,所以这⾥ ASM 应该是区别于 RAW 和 OCFS/OCFS2同⼀级别的概念,RAW 和 OCFS/OCFS2 不仅可以作为数据库存储的⽅案,同时也可以作为 Clusterware ⾥的存储⽅案,是 CRS ⾥需要的 storage ,⽽ASM 仅作为数据库的存储⽽已,严格来说仅是 RAC 中的⼀个节点应⽤(nodeapps )。ASM 对于 clusterware 安装时需要的 ocr 和
votedisk 这两项还不⽀持,毕竟 ASM 本⾝就需要⼀个实例,⽽ CRS 是完全在架构之外的,这也就是为什么使⽤了 ASM 的⽅案,却总还要加上 OCFS/OCFS2 和 RAW 其中的⼀个原因。各种 RAC 共享存储⽅式的对⽐如下:
1. 集⽂件系统——⽀持 windows 和 Linux 的 OCFS/OCFS2
2. AIX 下的 GPFS 等⽅式——优点是管理⽅便,表⽰也很直观,但缺点是基于⽂件系统管理软件,⼜要经过 OS 的 cache 处理,性能上和稳定性上都有⽋缺,所以不适合在⽣产环境下使⽤。可以⽀持 CRS 集软件⽂件和数据库⽂件。
3. RAW 裸设备⽅式——通过硬件⽀持的共享存储系统,直接⽤ RAW 设备存储,可以⽀持集软件⽂
件和数据库⽂件。
4. ⽹络⽂件系统(NFS )——通过 NFS 实现共享存储,不过需要经过 Oracle 认证的 NFS 才⾏,可以⽀持CRS 集软件⽂件和数据库⽂件。
5. ASM——集合 RAW ⽅式 I/O ⾼性能和集⽂件系统易管理等优点,Oracle10g 下推出的共享存储⽅式,但是本⾝ ASM 就是需要 Oracle 的实例⽀持,所以 ASM 仅⽀持数据库⽂件,⽽不⽀持 CRS ⽂件。
RAC 数据库和单实例数据库的区别
为了让 RAC 中的所有实例能够访问数据库,所有的 datafiles 、control files 、PFILE/Spfile 和 redo log files 必须保存在共享磁盘上,并且要都能被所有节点同时访问,就涉及到裸设备和集⽂件系统等。RAC database 在结构上与单实例的不同之处:⾄少为每个实例多配置⼀个redo 线程,⽐如:两个实例组成的集⾄少要 4 个 redo log group 。每个实例两个 redo group 。另外要为每⼀个实例准备⼀个 UNDO 表空间。
1、redo 和 undo ,每个实例在做数据库的修改时谁⽤谁的 redo 和 undo 段,各⾃锁定⾃⼰修改的数据,把不同实例的操作相对的独⽴开就避免了数据不⼀致。后⾯就要考虑备份或者恢复时 redo log 和归档⽇志在这种情况下的特殊考虑了。
2、内存和进程各个节点的实例都有⾃⼰的内存结构和进程结构.各节点之间结构是基本相同的.通过 Cache Fusion (缓存融合)技术,RAC 在各个节点之间同步 SGA 中的缓存信息达到提⾼访问速度的效果也保证了⼀致性。 ORACLEHOME/bin ⽬录下,其log ⽂件为ORACL OME/bin ⽬录下,其log ⽂件为E H
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论