Oracle RAC 架构核心组件详解(入门学习笔记)

发布于:2025-04-01 ⋅ 阅读:(35) ⋅ 点赞:(0)


Oracle RAC 架构核心组件详解

我们可以把一个 Oracle RAC 架构类比成一个“多窗口营业厅”:

  • 客户就是数据库请求;
  • 每个窗口就是一个节点;
  • 后台数据库是一套共享的系统;
  • 整个大厅的秩序靠调度员来管理。

1. Oracle 实例(Instance)

每个 RAC 节点上运行一个 Oracle 实例,包括:

部分 说明
SGA(共享内存区) 缓存数据块、SQL、事务信息等
后台进程(如 DBWn、LGWR) 管理数据写入、日志、恢复等操作
监听器 接收客户端连接请求

在 RAC 中,每个节点有自己的实例,但共享同一个数据库文件,所有节点可以并发处理请求。


2. 数据库(Database)

指的是共享在多节点之间的 数据文件、日志文件、控制文件 等。

  • 存储通常由 ASM 管理;
  • 多个实例共同访问这些共享文件;
  • 一致性由集群机制保证(防止“两个节点同时改一行数据”的问题)。

3. Clusterware(集群件)

Oracle Clusterware 是 Oracle 提供的集群基础架构,是 RAC 的“大脑”与“调度员”,作用包括:

模块 作用
节点管理 负责节点加入、离开、故障检测
服务管理 启动/停止数据库、监听器等资源
高可用机制 出现故障时自动切换资源、重启实例
心跳机制 保证节点之间互相知道“我还活着”

Clusterware 包含以下组件:

3.1 CSSD(Cluster Synchronization Services Daemon)

最关键组件之一!

负责维护节点间的“心跳”和集群一致性。

  • 检查其他节点是否活着(通过网络/存储);
  • 如果发现某个节点长时间没回应,就会把它“踢出集群”(触发 fencing 或重启);
  • 一旦心跳断了+无法访问 Voting Disk,就会触发节点自杀(自我重启保护机制)。

3.2 CRSD(Cluster Ready Services Daemon)

管理整个集群的资源状态

  • 启动/停止实例、监听器、服务等;
  • 管理 VIP 地址漂移(节点宕机后,IP 地址漂移到其他节点);
  • 决定哪个节点该运行哪个服务。

3.3 EVM(Event Manager Daemon)

负责把集群事件广播出去,比如“谁上线了”、“谁死了”、“VIP 漂移了”等等。


4. ASM(Automatic Storage Management)

Oracle 提供的专用存储管理系统

  • 把多个磁盘整合成磁盘组(Disk Group);
  • 以“条带化”方式读写数据,提升性能;
  • 提供冗余机制(Normal/High Redundancy);
  • RAC 中的所有节点都访问同一组 ASM 磁盘。

ASM 类似于数据库专用的“软件 RAID + LVM”。


5. Voting Disk(投票盘)

CSSD 用它来决定谁活着,谁死了。

  • 每个节点会定期向 Voting Disk 写入“我还在”;
  • 如果节点既收不到其他节点的心跳、也无法访问 Voting Disk,会被判定为“失联”;
  • 此时集群为防止脑裂,会强制把它踢出集群(自杀或被 fencing)。

Voting Disk 的健康状态决定了集群是否继续运行。


6. OCR(Oracle Cluster Registry)

存储集群中的配置信息(相当于“集群的注册表”)

  • 包含节点列表、服务配置、资源依赖关系等;
  • 每次改资源(比如修改服务漂移策略)都会写入 OCR;
  • OCR 也必须高可用,通常是冗余的。

7. 私网通信(Private Interconnect)

节点之间用来“传心跳”和“同步缓存”的网络

  • 一般使用 InfiniBand 或高速以太网;
  • RAC 非常依赖这个链路,一旦中断就会触发节点判断异常;
  • Oracle 内部使用 GES(Global Enqueue Service)与 GCS(Global Cache Service)来同步数据缓存和锁。

小结(从结构来看)

+----------------------------------------------------------+
|                   Oracle RAC 架构                       |
+------------------+------------------+--------------------+
| 节点1            | 节点2            | 节点N              |
| Oracle 实例      | Oracle 实例      | Oracle 实例        |
| Clusterware      | Clusterware      | Clusterware        |
| ASM              | ASM              | ASM                |
+------------------+------------------+--------------------+
         \             |              /
        (私网 + 心跳通信 + Voting Disk)
               \      |     /
               +----+----+
               | 共享存储 |
               +---------+