上一篇
物理机共用RAC
- 物理机
- 2025-08-07
- 4
物理机通过RAC实现集群化部署,共享存储与计算资源,提升系统高可用性及负载均衡能力,保障业务连续性
RAC核心概念解析
Oracle Real Application Clusters (RAC) 是甲骨文公司提供的数据库集群解决方案,允许多个实例同时访问同一组数据文件,通过高速互联网络实现缓存融合(Cache Fusion)机制,其核心价值在于提供7×24小时不间断服务能力,消除单点故障风险,并通过并行处理提升事务吞吐量,在传统架构中,单个物理机承载完整数据库实例的模式已无法满足现代企业对连续性和扩展性的需求,因此基于物理机共用的RAC部署成为主流选择。
物理机共用RAC的关键要素
共享存储体系
存储类型 | 典型协议 | 优势 | 适用场景 | 注意事项 |
---|---|---|---|---|
SAN存储 | Fibre Channel/iSCSI | 低延迟、高性能 | OLTP/混合负载 | 需专用HBA卡 |
NAS存储 | NFS v4.1+ | 部署简单、成本低廉 | 开发测试环境 | 注意锁管理器性能瓶颈 |
本地磁盘阵列 | DirectAttached | 零网络开销、完全控制IO路径 | 小型生产环境 | 需严格同步所有节点磁盘状态 |
ASM存储池 | ASM Disk Groups | 自动负载均衡、简化管理 | 正式生产环境 | 建议采用外部冗余存储设备 |
关键技术要点:
- ASM磁盘组:必须创建为
EXTERNAL
冗余级别,配合AURORA
镜像属性可实现跨节点数据保护 - 裸设备映射:推荐将LUN直接映射至各节点,绕过操作系统文件系统层
- 多路径软件:PowerPath/MPIO可有效规避单路径失效风险
网络架构设计
网络类型 | 功能描述 | 带宽要求 | 延迟要求 | 典型接口数量 |
---|---|---|---|---|
私有互联网络 | 实例间通信(GigabitEthernet) | ≥10Gbps | <1ms | 每节点2端口 |
公共访问网络 | 客户端连接 | ≥1Gbps | 按需配置 | |
心跳检测网络 | 集群健康状态监测 | ≥1Gbps | <1ms | 独立网口 |
虚拟IP网络 | 浮动管理地址 | ≥1Gbps | 1个/集群 |
最佳实践:
- 采用双万兆以太网构成冗余私有网络,启用
bonding
模式提升可靠性 - 公共网络建议划分VLAN隔离业务流量
- 心跳网络应使用独立交换机避免广播风暴
节点角色分配
节点编号 | 主要职责 | CPU核数 | 内存大小 | 存储分配 |
---|---|---|---|---|
Node1 | 主计算节点 | ≥8核 | ≥64GB | 50%数据+日志 |
Node2 | 备用/负载分担节点 | ≥8核 | ≥64GB | 50%数据+日志 |
Node3 | 扩展节点(可选) | ≥8核 | ≥64GB | 根据需求分配 |
实施步骤详解
硬件准备
-
硬件兼容性验证:
- 执行
cluvfy
工具检查(需root权限):/opt/oracle/cluvfy/bin/cluvfy stage -pre crsinst -n <nodelist>
- 重点检查项:内核参数、交换分区大小、NTP同步精度、PCI设备冲突
- 执行
-
统一系统配置:
# 所有节点执行以下操作 ulimit -p 16384 ulimit -n 65536 # /etc/sysctl.conf添加: fs.file-max = 1048576 net.ipv4.ip_local_port_range = 9000 65500 # 重启生效:sysctl -p
存储配置
-
创建共享卷组:
- 使用
parted
创建GPT分区表 - 格式化目标分区为XFS文件系统(推荐):
mkfs.xfs -n size=4M /dev/sdXn
- 挂载至相同路径:
/u01/app/oracle
- 使用
-
ASM初始化:
asmca -silent -createASMDiskGroup -name +DATA -redundancy external -au_size large -failgroup automatic -mountPoint /u01/app/oracle/oradata
软件安装
-
Grid Infrastructure安装:
- 运行
root.sh
脚本完成集群注册 - 验证CSS服务状态:
crsctl check crs
- 启动EVM服务:
crsctl start res ora.cssd -init
- 运行
-
数据库软件部署:
- 使用DBCA图形化工具新建RAC数据库
- 关键参数设置:
Database Name
: PRODRACCharacter Set
: AL32UTF8Memory Management Mode
: AUTOMATICProcesses per instance
: 根据CPU核心数×2计算
服务验证
-
集群状态检查:
ps -ef | grep pmon # 查看各节点进程状态 tnsping PRODRAC # 测试监听器可达性 sqlplus / as sysdba; select instance_name, status from gv$instance; # 验证实例状态
-
故障切换测试:
- 模拟节点宕机:
crsctl stop node -f -n node2
- 观察连接自动重定向至存活节点
- 恢复节点:
crsctl start node -n node2
- 模拟节点宕机:
管理与维护要点
日常监控指标
监控项 | 阈值范围 | 异常处理建议 |
---|---|---|
Global Cache Miss Rate | <5% | 增加DB_CACHE_SIZE |
Latch Free Spin Count | <1000/sec | 优化SQL语句执行计划 |
Enqueue Deadlocks | 0 | 分析等待事件链 |
ASM Read Latency | <20ms | 检查存储子系统性能 |
补丁管理策略
- 滚动升级法:依次停止单个节点→应用补丁→重新启动
- 黄金镜像法:维护统一的OCP软件包仓库,使用
opatchauto
工具自动化更新 - 回滚预案:保留最近3个版本的ORACLE_HOME目录快照
容量规划建议
资源类型 | 初始配置 | 扩容阈值 | 扩展方式 |
---|---|---|---|
CPU利用率 | <70% | >85%持续1小时 | 增加节点或拆分分区 |
内存使用率 | <65% | >90% | 升级内存条或调整SGA |
存储空间 | 预留30%余量 | <10%剩余 | 添加新LUN至ASM磁盘组 |
PGA目标值 | SGA的20% | 频繁触发PGA Aggregate Limitation | 调整WORKAREA_SIZE_POLICY |
典型问题及解决方案
Q1: RAC节点间出现”ORA-1506: Your session has been terminated”错误?
原因分析:通常是由于私有网络中断导致缓存融合失败。
解决步骤:
- 检查网卡状态:
ethtool <interface>
确认链路正常 - 验证防火墙规则:关闭iptables或开放1521-1531端口段
- 调整interconnect_timeout参数:
alter system set interconnect_timeout=30 scope=spfile;
- 重建集群注册表:
crsctl replace res ora.listener -p "STARTUP_TIMEOUT=90"
Q2: ASM磁盘组出现”I/O Error”告警如何处理?
排查流程:
- 查看ASM Alert日志:
tail -f $ORACLE_BASE/diag/asm/+DATA/alert_+DATA.log
- 检查存储控制器日志(如Dell OpenManage)
- 执行SCSI错误统计:
cat /proc/scsi/scsi//errors
- 临时解决方案:将故障磁盘标记为OFFLINE并替换备件
- 长期预防措施:启用T10 Power Persist Through Mode防止意外断电损坏元数据
相关问答FAQs
Q1: RAC环境下能否混合使用不同型号的物理机?
A: 理论上可行,但需满足以下条件:①相同CPU架构(x86_64);②兼容的固件版本;③统一的内存容量和速率;④经过验证的PCI设备驱动支持,建议尽量采用同构硬件以避免性能差异导致的热点问题。
Q2: 如何优化RAC环境的备份策略?
A: 推荐采用RMAN活跃备份+压缩技术组合:①每日增量备份+每周全备;②启用BACKUP OPTIMIZATION FOR ARCHIVELOG减少重复;③使用BACKUP AS COMPRESSED BACKUPSET
节省存储空间;④异地灾备建议通过Data Guard实现实时同步,注意备份期间保持私有网络畅通