全自动部署Oracle 19C RAC集群:openEuler环境下的DevOps实践
在当今企业级数据库部署中,Oracle RAC(Real Application Clusters)因其高可用性和可扩展性而广受欢迎。然而,传统的手动部署过程复杂且容易出错,特别是在国产操作系统openEuler上部署时,技术人员往往需要面对各种兼容性问题和配置挑战。本文将介绍如何通过自动化脚本在openEuler 22.03上实现Oracle 19C RAC集群的一键部署,大幅提升部署效率和可靠性。
1. 环境准备与前置条件
在开始自动化部署前,我们需要确保基础环境满足Oracle RAC的要求。openEuler 22.03作为华为推出的企业级Linux发行版,其稳定性和性能已得到广泛验证,是部署Oracle数据库的理想选择。
硬件要求:
- 至少两台物理服务器或虚拟机(节点)
- 每节点建议配置:
- 4核CPU或以上
- 16GB内存或以上
- 100GB系统磁盘空间
- 共享存储(ASM磁盘组所需)
软件要求:
- openEuler 22.03 LTS-SP3操作系统
- Oracle 19C RAC软件包(grid和database)
- 自动化部署脚本(如OracleShellInstall)
网络配置:
- 每节点需要配置三个网络接口:
- 公共网络(ens33):用于客户端访问
- 私有网络(ens37):用于节点间通信
- 存储网络(可选):用于共享存储访问
# 示例网络接口配置(节点1) ip a show ens33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:51:f8:ca brd ff:ff:ff:ff:ff:ff inet 192.168.6.130/24 brd 192.168.6.255 scope global noprefixroute ens33 ip a show ens37 3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:51:f8:de brd ff:ff:ff:ff:ff:ff inet 1.1.1.1/24 brd 1.1.1.255 scope global noprefixroute ens37提示:确保所有节点的网络配置正确,特别是私有网络需要低延迟和高带宽,这对RAC性能至关重要。
2. 自动化脚本核心功能解析
OracleShellInstall脚本通过参数化设计实现了RAC部署的全自动化,大幅减少了人工干预。以下是脚本的核心参数及其作用:
| 参数 | 示例值 | 说明 |
|---|---|---|
| -n | openEuler | 主机名前缀 |
| -hn | openEuler01,openEuler02 | RAC节点主机名 |
| -cn | openEuler-cls | 集群名称 |
| -rp/-gp/-op | welcome1 | root/grid/oracle用户密码 |
| -lf | ens33 | 公共网络接口名 |
| -pf | ens37 | 私有网络接口名 |
| -ri | 192.168.6.130,192.168.6.131 | 节点公共IP |
| -vi | 192.168.6.132,192.168.6.133 | 虚拟IP |
| -si | 192.168.6.134 | SCAN IP |
| -od | /dev/sdb | OCR ASM磁盘 |
| -dd | /dev/sdc | DATA ASM磁盘 |
| -o | lucifer | 数据库名 |
脚本执行流程主要包含以下阶段:
- 系统参数检查与优化
- 用户和组创建
- 内核参数配置
- 存储设备准备
- 软件包安装与解压
- Grid Infrastructure安装
- Oracle数据库软件安装
- 数据库创建与配置
# 典型执行命令示例 ./OracleShellInstall -n openEuler \ -hn openEuler01,openEuler02 \ -cn openEuler-cls \ -rp welcome1 -gp welcome1 -op welcome1 \ -lf ens33 -pf ens37 \ -ri 192.168.6.130,192.168.6.131 \ -vi 192.168.6.132,192.168.6.133 \ -si 192.168.6.134 \ -od /dev/sdb -dd /dev/sdc \ -o lucifer \ -ds AL32UTF8 -ns AL16UTF16 \ -redo 100 -dp oracle3. 关键配置与优化项
自动化脚本在部署过程中会进行多项关键配置,确保Oracle RAC在openEuler上的最佳性能表现。
内核参数优化:
# /etc/sysctl.conf 关键配置 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 7795077119 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 vm.swappiness = 10用户资源限制:
# /etc/security/limits.conf 配置 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 grid soft nofile 1024 grid hard nofile 65536ASM磁盘配置: 脚本会自动识别并配置ASM磁盘,这是RAC共享存储的核心。典型的ASM磁盘组配置如下:
# ASM磁盘组信息查询 asmcmd lsdg State Type Rebal Sector Block AU Total_MB Free_MB Name MOUNTED EXTERN N 512 4096 1048576 51200 51092 DATA/ MOUNTED EXTERN N 512 4096 4194304 10240 9900 OCR/注意:ASM磁盘的权限和所有权必须正确配置,通常grid用户需要拥有asmadmin和asmdba组权限。
4. 部署验证与故障排查
部署完成后,需要进行全面验证以确保RAC集群正常运行。以下是关键检查点:
集群状态检查:
# 检查集群资源状态 crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.DATA.dg 1 ONLINE ONLINE openEuler01 STABLE 2 ONLINE ONLINE openEuler02 STABLE ora.LISTENER.lsnr 1 ONLINE ONLINE openEuler01 STABLE 2 ONLINE ONLINE openEuler02 STABLE ora.OCR.dg 1 ONLINE ONLINE openEuler01 STABLE 2 ONLINE ONLINE openEuler02 STABLE ora.asm 1 ONLINE ONLINE openEuler01 Started,STABLE 2 ONLINE ONLINE openEuler02 Started,STABLE数据库连接测试:
-- 使用SQL*Plus连接测试 sqlplus sys/oracle@lucifer as sysdba SQL> SELECT instance_name, status FROM v$instance; INSTANCE_NAME STATUS --------------- -------- lucifer1 OPEN常见问题排查:
ASM磁盘无法识别:
- 检查磁盘权限:
ls -l /dev/asm* - 确认multipath配置:
multipath -ll - 验证udev规则:
cat /etc/udev/rules.d/99-oracle-asmdevices.rules
- 检查磁盘权限:
节点间通信问题:
- 测试私有网络连通性:
ping 1.1.1.2(从节点1到节点2) - 检查SSH互信配置:
ssh openEuler02 date
- 测试私有网络连通性:
资源启动失败:
- 查看集群日志:
crsctl lsct -a - 检查alert日志:
tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log
- 查看集群日志:
5. 自动化部署的优势与扩展
与传统手动部署相比,自动化脚本带来了显著优势:
效率对比:
| 任务 | 手动部署时间 | 自动化部署时间 |
|---|---|---|
| 系统配置 | 2-4小时 | 10分钟 |
| 软件安装 | 3-5小时 | 30分钟 |
| 数据库创建 | 1-2小时 | 15分钟 |
| 总耗时 | 6-11小时 | 约1小时 |
扩展应用场景:
- 持续集成/交付:将脚本集成到CI/CD流水线中,实现数据库环境的快速部署和更新
- 多环境部署:通过参数调整,快速部署开发、测试、生产等不同环境的RAC集群
- 灾备系统搭建:结合存储复制技术,实现跨数据中心的自动化灾备部署
脚本自定义扩展: 对于有特殊需求的环境,可以修改脚本实现:
- 自定义数据库参数模板
- 集成特定补丁包
- 添加后置检查任务
- 实现与配置管理工具(如Ansible)的集成
# 示例:添加自定义检查任务 post_install_check() { echo "执行后置检查..." # 检查监听状态 lsnrctl status LISTENER # 检查数据库组件状态 sqlplus -s / as sysdba <<EOF SET PAGESIZE 1000 SELECT comp_name, version, status FROM dba_registry; EXIT; EOF }通过自动化部署Oracle RAC集群,企业可以大幅降低部署成本,提高环境一致性,并为后续的运维自动化奠定基础。特别是在国产化替代背景下,openEuler与Oracle的结合为企业提供了可靠的技术选择。