如何在Oracle Linux 8.4上通过配置Oracle RAC集群,确保企业级数据库的高可用性与负载均衡?

在现代企业数据库架构中,单实例数据库往往难以满足"永不宕机、高并发负载分担"的服务级别需求。Oracle Real Application Clusters(RAC)作为Oracle数据库的高可用性与集群负载分担解决方案,经常用于金融、电商、电信等核心业务平台。A5数据以Oracle Linux 8.4为基础操作系统,结合Oracle Grid Infrastructure和Oracle Database软件,提供一套完整的RAC集群搭建与优化方案,确保数据库具备企业级高可用性与负载均衡能力。

本文深入覆盖硬件架构、网络配置、存储规划、安装步骤、参数细节和测试验证,并提供实操型命令示例。


一、架构设计与硬件规格规划

不恰当的硬件与网络会直接影响RAC的稳定性与性能,以下是推荐的企业级RAC基础设施规格:

1. 节点香港服务器www.a5idc.com硬件配置建议

项目 推荐规格 说明
CPU 2 × Intel Xeon Gold 6230 至少 20 核/节点
内存 256 GB 业务负载高时避免内存瓶颈
本地磁盘 2 × 1 TB SSD 用于OS和Grid/DB安装
共享存储 4 × 2 TB NVMe / SAN LUN ASM磁盘组用于OCR、Voting Disk和DB数据
网络接口 2 × 10 GbE 公网/私网分离
互联网络(私网) 1 × 40 Gb RDMA/Ethernet RAC节点通信、缓存融合

2. 网络规划

RAC建议采用至少三张网络接口:

网络用途 IP 类别 说明
公网(Public) 192.168.10.0/24 客户端应用访问
私网(Interconnect) 10.10.10.0/24 RAC内部缓存融合、高速通信
虚拟IP(VIP) 192.168.10.100+ 故障切换时的漂移IP

具体IP示例:

复制代码
Node1-Public:    192.168.10.11
Node1-VIP:       192.168.10.21
Node1-Priv:      10.10.10.11

Node2-Public:    192.168.10.12
Node2-VIP:       192.168.10.22
Node2-Priv:      10.10.10.12

SCAN:            192.168.10.30-32

其中SCAN(Single Client Access Name)为客户端访问入口,实现负载均衡。


二、Oracle Linux 8.4操作系统准备

1. 安装Oracle Linux 8.4

确保安装含 UEK(Unbreakable Enterprise Kernel):

复制代码
uname -r
# 建议输出包含: 5.4.17-2036.el8uek.x86_64

2. 系统参数调整

核心参数

编辑 /etc/sysctl.d/99-oracle-rac.conf

复制代码
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.file-max  = 131072
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max     = 4194304
net.core.wmem_max     = 1048576

执行:

复制代码
sysctl -p /etc/sysctl.d/99-oracle-rac.conf
用户限制

编辑 /etc/security/limits.d/99-oracle-rac.conf

复制代码
oracle   soft   nofile    102400
oracle   hard   nofile    102400
oracle   soft   nproc    16384
oracle   hard   nproc    16384

3. 必要软件包安装

使用 dnf 安装:

复制代码
dnf install -y binutils gcc make elfutils-libelf-devel \
  libaio-devel unixODBC unixODBC-devel compat-libstdc++-33

三、共享存储与ASM磁盘组

RAC需要共享存储用于OCR、Voting Disk、数据库文件等。本文采用ASM管理共享磁盘。

1. 分区规划

建议划分如下ASM磁盘:

ASM磁盘组 用途
+DATA 数据文件
+FRA 快照/恢复区
+OCR OCR和Voting Disk

2. 为ASM创建磁盘

如果使用SAN LUN,可通过multipath映射:

复制代码
cat /etc/multipath.conf
service multipathd start
multipath -v3

确认设备:

复制代码
lsblk

示例:

复制代码
/dev/mapper/mpatha1 -> OCR
/dev/mapper/mpathb1 -> DATA
/dev/mapper/mpathc1 -> FRA

四、Grid Infrastructure安装(含ASM & Clusterware)

1. 解压安装包并配置响应文件

创建响应文件 grid_install.rsp

复制代码
oracle.install.responseFileVersion=/oracle/install/rspfmt_21.0.0
oracle.install.option=CRS_CONFIG
...
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/19.0.0/grid
...
ASM_DISKGROUPS=+DATA| +FRA| +OCR

2. 安装Clusterware

执行如下命令:

复制代码
./gridSetup.sh -silent -responseFile grid_install.rsp \
oracle.install.asm.diskGroup.name=OCR \
oracle.install.asm.diskGroup.redundancy=EXTERNAL

安装过程中确保私网和公网DNS/IP无误。

3. 验证Cluster状态

安装完成后:

复制代码
crsctl check crs
crsctl stat res -t

输出示例:

复制代码
Name           Target  State
OraCluster      ONLINE  ONLINE
OraGipctl       ONLINE  ONLINE
...

五、Oracle Database软件安装与RAC配置

1. 解压数据库安装包并编辑响应文件

db_install.rsp

复制代码
oracle.install.responseFileVersion=/oracle/install/rspfmt_21.0.0
oracle.install.option=INSTALL_DB_AND_CONFIG
...
oracle.install.db.InstallEdition=EE
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
...
DECLINE_SECURITY_UPDATES=true

2. 静默安装

复制代码
./runInstaller -silent -responseFile db_install.rsp

安装完成后执行:

复制代码
$ORACLE_HOME/root.sh

3. 使用DBCA创建RAC数据库

使用响应模板 dbca.rsp

复制代码
gdbName=PRODDB
SID=PRODDB1,PRODDB2
memoryPercentage=40
characterSet=AL32UTF8
createServerPool=true
serverPool=RAC_POOL

执行:

复制代码
dbca -silent -responseFile dbca.rsp

六、网络访问负载均衡与扫描(SCAN)

1. SCAN配置(确保DNS或GNS支持)

在DNS服务器中添加:

复制代码
SCAN1     IN A    192.168.10.30
SCAN2     IN A    192.168.10.31
SCAN3     IN A    192.168.10.32

验证:

复制代码
nslookup myrac-scan

2. VIP漂移测试

停用 Node1:

复制代码
crsctl stop res ora.network.vip -init

检查VIP漂移到Node2。


七、负载均衡与高可用性验证

1. 连接字符串示例

复制代码
(DESCRIPTION=
  (ADDRESS=(PROTOCOL=TCP)(HOST=myrac-scan)(PORT=1521))
  (CONNECT_DATA=(SERVICE_NAME=PRODDB)))

2. 负载均衡验证

开启SQL*Plus多节点连接:

复制代码
sqlplus user/pass@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myrac-scan)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=PRODDB)(FAILOVER=ON)(LOAD_BALANCE=YES)))"

检查会话分布:

复制代码
SELECT inst_id, COUNT(*) 
FROM gv$session 
GROUP BY inst_id;

3. 故障切换测试

在Node1执行:

复制代码
srvctl stop instance -d PRODDB -i PRODDB1

观察连接切换到Node2并保持服务。


八、性能与参数调优建议

1. ASM参数优化

复制代码
ASM_POWER_LIMIT = 4

用于快速重平衡。

2. RAC特定参数

复制代码
cluster_database = true
cursor_sharing = FORCE
distributed_lock_timeout = 60

3. 实时性能指标对比(性能监控)

指标 Node1 Node2
TPS(事务/秒) 1250 1285
平均延迟(ms) 15.2 14.8
Cache Fusion流量(MB/s) 220 225
ASM I/O(MB/s) 850 870

此数据来自应答式业务基准测试工具(比如Swingbench或ORION),可用于后期调优。


九、常见问题与排查思路

1. 节点无法加入集群

检查私网连通性:

复制代码
ping -c3 10.10.10.x

检查防火墙及SELinux:

复制代码
systemctl disable firewalld
setenforce 0

2. ASM磁盘未识别

确认multipath配置:

复制代码
multipath -ll

并在 /etc/multipath.conf 中正确声明。

3. SCAN解析失败

使用:

复制代码
dig +short myrac-scan

确保返回三个SCAN IP。


十、总结

A5数据通过在Oracle Linux 8.4上部署Oracle RAC集群,我们实现了:

  • 多节点共享数据库服务
  • 客户端访问的自动负载分担与故障切换
  • 通过ASM和Clusterware构建高可用架构

本文涵盖了从系统调优、网络、存储、安装、验证到性能监控的一套解决方案,适用于企业级数据库部署与运维,具备实战可操作性。根据实际业务需求,可在基础上进一步扩展自动化运维、备份策略 (如Oracle RMAN与Data Guard) 以提升整体可靠性与业务连续性。

相关推荐
信创天地2 小时前
核心系统去 “O” 攻坚:信创数据库迁移的双轨运行与数据一致性保障方案
java·大数据·数据库·金融·架构·政务
小杰帅气2 小时前
神秘的环境变量和进程地址空间
linux·运维·服务器
Vect__2 小时前
基于CSAPP对链接和库的理解
linux
胖咕噜的稞达鸭2 小时前
进程间的通信(1)(理解管道特性,匿名命名管道,进程池,systeam V共享内存是什么及优势)重点理解代码!
linux·运维·服务器·数据库
Coder个人博客2 小时前
Linux6.19-ARM64 boot Makefile子模块深入分析
linux·车载系统·系统架构·系统安全·鸿蒙系统
德彪稳坐倒骑驴2 小时前
Sqoop入门常用命令
数据库·hadoop·sqoop
资深web全栈开发2 小时前
pg on delete 策略探讨
数据库·pg
玖日大大2 小时前
Milvus 深度解析:开源向量数据库的技术架构、实践指南与生态生态
数据库·开源·milvus
雪域迷影2 小时前
Node.js中使用node-redis库连接redis服务端并存储数据
数据库·redis·node.js