外观
Oracle RAC 架构
Oracle RAC 架构概述
Oracle Real Application Clusters (RAC) 是 Oracle 数据库的高可用性和可扩展性解决方案,允许多个数据库实例同时访问同一个数据库存储。RAC 通过共享存储和高速集群互连,实现了数据库的高可用性、负载均衡和水平扩展。RAC 适用于对可用性和性能要求较高的关键业务系统,如金融、电信、电子商务等。
RAC 的核心优势
- 高可用性:当单个节点故障时,其他节点可以继续提供服务,避免单点故障
- 负载均衡:多个节点可以分担数据库负载,提高系统的整体性能
- 水平扩展:可以通过添加节点轻松扩展系统容量,无需停机
- 滚动升级:支持在不中断服务的情况下进行数据库升级和维护
- 资源共享:多个节点共享存储和数据库资源,提高资源利用率
RAC 架构的基本概念
- 集群节点:参与 RAC 集群的服务器
- 数据库实例:每个节点上运行的 Oracle 数据库实例
- 共享存储:所有节点共享的存储设备,用于存储数据库文件
- 集群互连:节点之间的高速通信网络,用于实例间通信
- Clusterware:集群管理软件,负责节点管理、资源管理和故障检测
RAC 架构组件
1. 硬件组件
1.1 服务器节点
- 节点配置:每个节点通常配置相同的硬件规格,包括 CPU、内存、存储和网络
- 节点数量:Oracle RAC 支持 2 到 128 个节点,具体取决于数据库版本和硬件限制
1.2 共享存储
存储类型:
- 光纤通道存储区域网络 (FC SAN)
- iSCSI SAN
- Network Attached Storage (NAS)(需要特定配置)
- Oracle Automatic Storage Management (ASM) 支持的存储
存储配置:
- 数据文件、控制文件、重做日志文件存储在共享存储上
- 每个节点的参数文件 (spfile) 通常存储在共享存储上,或通过 Clusterware 管理
1.3 网络组件
- 公共网络:用于客户端连接和节点间的普通通信
- 私有网络/集群互连:用于节点间的高速通信,如 Cache Fusion 数据传输
- 推荐使用 InfiniBand 或 10Gbps 以上的以太网
- 建议配置冗余的私有网络,提高可靠性
2. 软件组件
2.1 Oracle Clusterware
Oracle Clusterware 是 RAC 集群的核心管理组件,负责:
- 节点管理:节点的加入、退出和故障检测
- 资源管理:数据库实例、监听器、服务等资源的管理
- 故障转移:当节点故障时,将资源转移到其他节点
- 集群时间同步:确保所有节点的时间一致
2.2 Oracle ASM (Automatic Storage Management)
ASM 是 Oracle 提供的存储管理解决方案,专为 Oracle 数据库设计:
- 自动管理磁盘组、卷和文件
- 提供条带化和镜像功能,提高性能和可靠性
- 支持在线添加和移除磁盘
- 简化存储管理,减少 DBA 工作量
2.3 Oracle Database with RAC Option
- 包含 RAC 特定的数据库内核功能
- 支持 Cache Fusion 技术,实现实例间的数据共享
- 提供服务管理功能,支持客户端连接的负载均衡和故障转移
3. 核心技术组件
3.1 Cache Fusion
Cache Fusion 是 RAC 的核心技术,允许不同节点的数据库实例共享缓冲区缓存:
- 当一个节点需要访问另一个节点缓存中的数据块时,通过集群互连直接获取,无需从磁盘读取
- 支持数据块的当前版本和一致性读取
- 减少磁盘 I/O,提高系统性能
- 确保数据的一致性和完整性
3.2 Global Resource Directory (GRD)
GRD 维护集群中所有资源的状态信息,包括:
- 数据块的位置和状态
- 锁和资源的持有者
- 缓存一致性信息
3.3 服务管理
RAC 服务允许将数据库工作负载分组和管理:
- 可以为不同的应用程序创建不同的服务
- 支持服务级别的负载均衡和故障转移
- 允许在特定节点上运行特定服务
- 支持服务的自动启动和停止
RAC 工作原理
1. 实例启动流程
- 节点上的 Oracle Clusterware 启动
- Clusterware 启动 ASM 实例(如果使用 ASM)
- Clusterware 启动数据库实例
- 数据库实例加入集群,注册到 GRD
- 实例开始接受客户端连接
2. 客户端连接流程
- 客户端通过 SCAN (Single Client Access Name) 或节点 VIP 连接到数据库
- 监听器将连接请求转发到适当的节点
- 连接被分配到一个数据库实例
- 实例处理客户端请求,如有需要通过 Cache Fusion 访问其他节点的数据
3. 故障检测与恢复流程
- Clusterware 定期向所有节点发送心跳信号
- 如果一个节点未能响应心跳,Clusterware 标记该节点为故障
- Clusterware 清理故障节点的资源
- 如果配置了故障转移,Clusterware 将故障节点上的服务转移到其他节点
- 其他节点继续提供服务,客户端可以重新连接
4. Cache Fusion 数据访问流程
- 节点 A 需要访问一个数据块
- 检查本地缓冲区缓存,发现数据块不在本地
- 通过 GRD 查找数据块的位置(节点 B)
- 节点 B 将数据块通过集群互连发送到节点 A
- 节点 A 将数据块放入本地缓冲区缓存并处理请求
RAC 部署架构
1. 标准 RAC 架构
- 2 个或多个节点共享同一存储
- 每个节点运行一个数据库实例
- 节点间通过私有网络通信
- 客户端通过公共网络访问数据库
2. RAC One Node
- 单节点 RAC 部署,提供高可用性但不提供负载均衡
- 支持在线节点迁移,无需停机即可移动实例
- 适合对可用性要求较高但负载较低的应用
3. Extended RAC
- 节点分布在不同的地理位置,通过高速网络连接
- 提供灾难恢复能力,当一个数据中心故障时,另一个数据中心可以继续提供服务
- 对网络延迟要求较高,通常需要专用的高速网络
4. Flex Cluster
- Oracle 12c 及以上版本支持的新型 RAC 架构
- 分为 Hub 节点和 Leaf 节点
- Hub 节点直接访问共享存储,Leaf 节点通过 Hub 节点访问存储
- 支持更大规模的集群,最多 1000 个节点
RAC 配置与管理
1. RAC 配置文件
- spfile:通常存储在共享存储上,或通过 ASM 管理
- tnsnames.ora:配置客户端连接信息,包括 SCAN 和服务名
- listener.ora:配置监听器,支持 RAC 特定的参数
- sqlnet.ora:配置网络相关参数
2. 常用 RAC 管理命令
2.1 集群状态检查
sql
-- 检查集群状态
$ crsctl status cluster -all
-- 检查资源状态
$ crsctl status resource -all
-- 检查节点状态
$ olsnodes -a -i -s2.2 实例管理
sql
-- 启动所有实例
$ srvctl start database -d orcl
-- 启动特定实例
$ srvctl start instance -d orcl -i orcl1
-- 停止所有实例
$ srvctl stop database -d orcl
-- 停止特定实例
$ srvctl stop instance -d orcl -i orcl12.3 服务管理
sql
-- 创建服务
$ srvctl add service -d orcl -s sales -r orcl1,orcl2 -a orcl3,orcl4 -P BASIC
-- 启动服务
$ srvctl start service -d orcl -s sales
-- 停止服务
$ srvctl stop service -d orcl -s sales
-- 修改服务
$ srvctl modify service -d orcl -s sales -r orcl1,orcl3 -a orcl2,orcl42.4 数据库参数管理
sql
-- 修改集群级参数
ALTER SYSTEM SET parameter_name = value SCOPE=BOTH SID='*';
-- 修改特定实例参数
ALTER SYSTEM SET parameter_name = value SCOPE=BOTH SID='orcl1';RAC 性能优化
1. 硬件优化
- 使用高性能存储:如全闪存阵列,提高 I/O 性能
- 配置高速集群互连:使用 InfiniBand 或 100Gbps 以太网
- 均衡节点配置:确保所有节点的硬件规格相同
- 足够的内存:每个节点配置足够的内存,减少 Cache Fusion 流量
2. 网络优化
- 分离公共网络和私有网络:使用不同的物理网络
- 优化私有网络配置:调整网络参数,如 MTU、缓冲区大小等
- 配置网络冗余:使用多网卡绑定提高可靠性
3. 数据库优化
- 使用服务管理:为不同的应用程序创建专用服务
- 优化并行执行:根据节点数量调整并行度
- 使用连接池:减少连接建立的开销
- 优化 SQL 语句:减少不必要的数据访问和锁竞争
4. 存储优化
- 使用 ASM:简化存储管理,提高性能和可靠性
- 合理配置磁盘组:根据 I/O 类型创建不同的磁盘组
- 使用适当的条带大小:根据存储类型和 I/O 模式调整条带大小
- 启用 ASM 智能数据分布:提高数据分布的均匀性
Oracle 19c 和 21c RAC 新特性
Oracle 19c RAC 新特性
1. 自动索引支持
Oracle 19c RAC 支持自动索引功能,可以:
- 自动创建、维护和删除索引
- 支持跨节点的索引优化
- 提高查询性能,减少 DBA 工作量
2. 增强的集群管理
- 简化了集群的安装和配置
- 增强了集群的监控和诊断功能
- 提高了集群的可靠性和可用性
3. 多租户支持增强
- 支持 PDB 级别的服务管理
- 增强了 PDB 的迁移和管理功能
- 提高了多租户环境下的性能和可扩展性
Oracle 21c RAC 新特性
1. 增强的 Flex Cluster
- 进一步简化了 Flex Cluster 的配置和管理
- 增强了 Leaf 节点的功能和性能
- 支持更多的节点数量
2. 自动集群配置
- 支持自动检测和配置集群环境
- 简化了集群的部署和维护
- 减少了人为错误的可能性
3. 增强的安全性
- 支持透明数据加密 (TDE) 对 RAC 数据的保护
- 增强了集群通信的安全性
- 支持更细粒度的访问控制
RAC 最佳实践
1. 设计阶段最佳实践
- 评估业务需求:确定是否需要 RAC,以及需要的节点数量
- 选择合适的硬件:根据工作负载选择合适的服务器、存储和网络
- 设计合理的网络架构:分离公共网络和私有网络,配置冗余
- 规划存储布局:使用 ASM,根据 I/O 类型创建不同的磁盘组
2. 部署阶段最佳实践
- 使用 Oracle 官方文档:参考官方文档进行安装和配置
- 使用自动部署工具:如 Oracle Universal Installer (OUI) 或 Ansible
- 进行彻底的测试:验证集群的高可用性、负载均衡和故障转移功能
- 文档化配置:记录所有配置和参数设置
3. 运维阶段最佳实践
- 定期监控集群状态:使用 Grid Control、OEM 或命令行工具
- 监控性能指标:如 Cache Fusion 流量、I/O 性能、节点负载等
- 定期备份:包括数据库备份和 Clusterware 备份
- 进行定期维护:如补丁应用、统计信息收集等
- 制定故障恢复计划:包括节点故障、存储故障等场景的恢复流程
常见问题(FAQ)
Q1: 什么时候需要使用 Oracle RAC?
A1: 当您的应用程序对可用性、可扩展性和性能有较高要求时,可以考虑使用 Oracle RAC。具体场景包括:
- 关键业务系统,需要 24/7 可用性
- 高并发应用,需要负载均衡
- 快速增长的业务,需要水平扩展
- 需要滚动升级和维护的系统
Q2: RAC 与 Data Guard 有什么区别?
A2: RAC 和 Data Guard 是 Oracle 提供的两种不同的高可用性解决方案:
- RAC 提供单个数据库的高可用性和负载均衡,所有节点共享同一存储
- Data Guard 提供数据库的冗余和灾难恢复,主库和备库使用独立的存储
- 两者可以结合使用,提供更高级别的可用性和灾难恢复能力
Q3: 如何监控 RAC 集群的性能?
A3: 可以使用以下工具监控 RAC 集群的性能:
- Oracle Enterprise Manager (OEM):提供图形化的监控界面
- AWR 和 ASH 报告:提供详细的性能分析
- 集群健康监控工具:如 Cluster Health Monitor (CHM)
- 操作系统命令:如 top、vmstat、iostat 等
Q4: 如何处理 RAC 节点故障?
A4: 当 RAC 节点故障时,Clusterware 会自动处理:
- 标记故障节点
- 清理故障节点的资源
- 将故障节点上的服务转移到其他节点
- 客户端可以通过服务名重新连接到数据库
Q5: RAC 对应用程序有什么要求?
A5: RAC 对应用程序的要求主要包括:
- 应用程序应该是无状态的,或使用会话状态管理
- 应用程序应该使用服务名连接数据库,而不是实例名
- 应用程序应该处理连接中断和重新连接
- 应用程序应该避免长时间持有锁
Q6: 如何扩展 RAC 集群?
A6: 扩展 RAC 集群的步骤包括:
- 准备新的服务器节点
- 安装和配置 Clusterware
- 将节点加入现有集群
- 在新节点上安装数据库软件
- 创建数据库实例
- 配置服务和负载均衡
总结
Oracle RAC 是一个强大的高可用性和可扩展性解决方案,通过共享存储和高速集群互连,实现了数据库的高可用性、负载均衡和水平扩展。RAC 适用于对可用性和性能要求较高的关键业务系统,如金融、电信、电子商务等。
RAC 架构包括硬件组件(服务器、存储、网络)和软件组件(Clusterware、ASM、数据库),核心技术包括 Cache Fusion、GRD 和服务管理。Oracle 19c 和 21c 引入了许多新特性,如自动索引、增强的集群管理和多租户支持等,进一步提高了 RAC 的性能、可靠性和易用性。
在设计、部署和运维 RAC 集群时,需要遵循最佳实践,包括评估业务需求、选择合适的硬件、设计合理的网络架构、使用 ASM、定期监控和维护等。通过合理的配置和管理,可以充分发挥 RAC 的优势,为业务提供高可用性、高性能的数据库服务。
