在 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 集群的逻辑与物理结构
存储层
RAC=n*instance+1*database
datafileonline logfilecontrolfile 等存储在共享存储上
每个服务器通过 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 和 databaserelated resource
包括 GSDONSVIPListener 在 CRS 过程中自动创建的
包括 DatabaseInstanceService 可以自动创建, 也可以通过 DBCANetcaSrvctl
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
来源: http://www.bubuko.com/infodetail-2504694.html