赞
踩
这个图分为三个部分,第一个部分就是客户端,第二个部分是节点部分,最后一部分是共享存储部分。
根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备,在以前的版本中,Oracle RAC必须借助第三方Cluster软件,但是从Oracle10g开始,Oracle推出了自身的集群软件CRS(Cluster Ready Service)。
每个节点间可以通过私有网络进行通信,互相监控节点的运行状态,Oracle数据库所有的数据文件,联机日志文件,控制文件等均放在集群的共享设备上面,而共享设备可以是RAW,ASM,OCFS2等,所有集群节点可以同时读写共享存储。
逻辑结构上看,每一个参加集群的节点有一个独立的instance(数据库实例),这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。
当节点1坏了,不仅仅只是将业务切换到节点2,这个时候还要处理节点1坏了遗留下来的问题。主要是一些提交和未提交的事务。比如实例1坏了,实例2就要从实例1的redo里面读最后一次checkpoint之后的信息,就是实例1最后将所有的数据写到磁盘之后产生的所有的redo应用,该回滚的回滚,该恢复的恢复。即现将以提交和未提交的事务产生的redo都先应用,因为是最后一次CKPT之后的信息,之前的信息是已经写到磁盘上面了,所谓的恢复是将未写到磁盘上面的信息进行恢复。(虽然实例坏了,但是实例的redo并没有坏,放置在共享存储上面,它的redo还是允许其他实例访问的)实例2读取实例1的redo,然后全部应用一遍,之后再回滚未提交的事务修改的数据块。
RAC是一个数据库执行在多个实例上,通过DLM(Distributed Lock Management):分布式锁管理器来解决并发问题。RAC各个节点间的共享资源,为了保证每一个节点訪问数据的一致性,使用DLM来协调各个实例间的资源竞争,这个DLM在RAC中就叫Cache Fusion。
在Cache Fusion 中,每个数据块都被映射成Cache Fusion资源,该资源实际上就是一个数据结构,资源的名称就是数据块地址,数据块请求过程:先将数据块地址X转换成Cache Fusion资源名称,然后把这个Cache fusion 资源请求提交给DLM,DLM进行Global Lock 的申请,释放活动,只要进程获得了PCM Lock才能继续下一步。
使用 Cache Fusion 时,RAC 的各个节点间数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。
在 Oracle9i 之前,RAC 称为 OPS(Oracle Parallel Server)。RAC 与 OPS 之间的一个较大区别是,RAC 采用了Cache Fusion(高缓存合并)技术,节点已经取出的数据块更新后没有写入磁盘前,可以被另外一个节点更新,然后以最后的版本写入磁盘。在 OPS 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。