在RAC集群中,

cache fusion --GCS:    实现实例之间数据块的复制传递

--GES:    负责管理锁



锁PCM_Lock和Non_PCM_Lock(实现节点值的协调) ----锁管理器DML

----管理两种资源

----决定是否允许节点上用户对某个数据块的访问请求

----两种资源CacheFusion资源和Non_CacheFusion

----CacheFusion资源--指数据块资源,如索引块、普通表数据存储的数据块、还原段存储的数据块

记录数据块的版本信息,当前状态、节点分布

----Non_CacheFusion--如数据库缓存、数据文件、参数文件

锁PCM_Lock用于协调节点之间对数据块的并发控制和访问



RAC的优势:提高系统的可靠性(HA)以及平衡系统负载(LB)

高可用:

系统可靠性=1-(1-单点失败故障率)^节点数

随着节点数越高,系统可靠性就越高

平衡系统负载:

在系统负载时,RAC可以自动在多个节点之间平衡负载,减轻单个实例的计算压力


RAC=多个单节点组成的数据库系统,每个单节点上运行单个实例


RAC的特殊问题


并发控制

采用DLM机制管理实例间的并发控制(共享存储)


健忘症

因为日常操作的需要,从而使的数据库关闭,导致集群中的副本配置文件不能同步修改。


脑裂

心跳机制。控制权的问题----投票算法

逻辑上的隔离


IO隔离

问题及目的:确保逻辑隔离的节点无法访问共享数据,即在物理上的隔离

解决:软件方法---重启故障节点



RAC集群的逻辑与物理结构

image.png


存储层

RAC=n*instance+1*database

datafile、online logfile、controlfile等存储在共享存储上

每个服务器通过HBA卡和光纤线连接到存储上。

instance=SGA+background process

database=datafile+logfile+controlfile+...

网络层

Public 网卡接入的网络,对外提供查询服务

Private 网卡组成的私有网络,用于RAC的心跳和Cache fusion;

存储设备、光纤交换机、每个节点的HBA卡组成的存储网络


  前两个传输的IP数据包,最后一个传输的是SCSI数据


集群件层

存储设备共享,RAC在OS Kernel和oracle之间加上了一层cluster ware

它会在OS Kernel之前截获请求,然后和其它节点上的clusterware 协商,最终完成上层的请求

Linux平台上必须使用CRS(cluster ready service)


应用层

整个应用层是由若干CRS监控的CRS Resource组成的

Resource分成两组nodeapps和database—related resource

包括GSD、ONS、VIP、Listener       在CRS过程中自动创建的

包括Database、Instance、Service    可以自动创建,也可以通过DBCA、Netca、Srvctl


RAC架构详解

1.GRD的作用

该区域用来存储同一个数据库在不同节点上的分不,即多个实例在并发操作一个数据块时,将该数据块放在各自实例的GRC内存区。

2.LMON进程

通过协调通信,去检查各自当前状态


3.LMD进程

LMD提供GES服务,去协调节点之间对同一数据块的访问。


4.LCK进程

锁进程,负责在集群中对统一数据块访问的锁管理。


5.LMSn进程

LMSn提供GCS,在节点之间复制数据块


6.DIAG进程

“日志”进程,记录集群的健康状态,并记录实例错误时的诊断信息


7.参数文件和日志文件的存储

参数文件和日志文件必须在所有节点的实例之间共享。


clusterware组件

1.OCR

OCR 是一个磁盘文件,该文件存储在裸设备上,它的作用是存储RAC集群节点的配置信息,

因为整个环境中只有一个存储配置的磁盘文件,所以实现了对集群配置的同步修改。

2.Voting Disk

该文件用于存储节点状态,该文件是共性存储到裸设备,每个节点都可以访问到,一旦某个节点失效,通过“投票”算法将失效的节点提出集群,重构一个健康的集群。

3.occsd后台进程

集群同步服务,通过某种机制来判断集群中的节点是否“活着”,监控节点健康状态。

ocssd进程就是完成css服务的。

4.crsd进程

crsd进程通过读取OCR文件中存储的资源状态信息,监控管理资源,并在这些资源故障时提供系统的高可用性。

5.其它clusterware进程

EVMD进程负责分发CRS产生的事件

RACGIMON进程负责检查数据库的状态

6.网络设置

两个网卡。private+Public


clusterware安装过程中,还需要配置VIP,该地址绑定到Public网卡上,以实现RAC集群的failover。