Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说oracle rac集群部署(一),希望能够帮助你!!!。
Oracle Real Application Clusters (RAC)
Oracle Real Application Clusters 是屡获殊荣的 Oracle Database 企业版的一个选件。Oracle RAC 是一个具有共享缓存架构的集群数据库,它克服了传统的无共享方法和共享磁盘方法的限制,为您的所有业务应用提供了一种具有高度可扩展性和可用性的数据库解决方案。Oracle RAC 是 Oracle 私有云架构的关键组成部分。
Oracle Real Application Clusters 可以消除数据库服务器单点故障问题,从而为客户提供优秀的数据库可用性。在集群服务器环境中,数据库本身在服务器池之间实现共享,这意味着如果池中的任何服务器出现故障,数据库将继续在正常的服务器上运行。Oracle RAC 不仅让客户能够在服务器发生故障时继续处理数据库负载,而且有助于缩短数据库计划内脱机维护时间,进而降低停机成本。
Oracle Real Application Clusters 支持在集群服务器池上透明地部署 Oracle 数据库。这让客户能够轻松地将单个服务器上的 Oracle 数据库重新部署到数据库服务器集群上,从而充分利用集群数据库服务器提供的整合内存容量和处理能力。
Oracle Real Application Clusters 提供了所有必备的软件组件,让您可以在服务器池上轻松部署 Oracle Database,充分利用集群提供的性能、可扩展性和可用性。Oracle RAC 利用 Oracle Grid Infrastructure 作为 Oracle RAC 数据库系统的基础。Oracle Grid Infrastructure 包括 Oracle Clusterware 和 Oracle 自动存储管理 (ASM),可以在高度可用和可扩展的数据库云环境中高效地共享服务器和存储资源。
两个节点硬件、系统、网络及存储规划
|
节点 |
||||||
|
节点名称 |
数据库实例名 |
grid实例名 |
数据库版本 |
操作系统 |
配置 |
说明 |
|
rac01 |
orcl1 |
+ASM1 |
12.2.0.1 |
CentOS 7.6 - (x86_64) |
Mem:4GB Disk:50G |
集群节点2 |
|
rac02 |
orcl2 |
+ASM2 |
12.2.0.1 |
CentOS 7.6 - (x86_64) |
Mem:4GB Disk:50G |
集群节点2 |
|
envir01 |
CentOS 7.6 - (x86_64) |
Mem:1GB Disk:80G + 3x8G + 2x20G + 2x20G |
存储服务器 |
|||
|
envir1 |
CentOS 7.6 - (x86_64) |
DNS服务器 |
||||
|
网络配置 |
||||||
|
节点名称 |
公共IP地址 |
专用IP地址 |
虚拟IP地址VIP |
SCAN名称 |
SCAN IP 地址 |
说明 |
|
rac01 |
10.10.0.50 |
192.168.10.50 |
10.10.0.60 |
scan |
10.10.0.70,10.10.0.71,10.10.0.72 |
客户端连接地址 |
|
rac02 |
10.10.0.51 |
192.168.10.51 |
10.10.0.61 |
|||
|
存储 |
192.168.10.40 |
|||||
|
DNS |
10.10.0.10 |
|||||
|
Oracle 软件组件 |
||||||
|
软件组件 |
操作系统用户 |
主组 |
辅助组 |
主目录 |
Oracle 基目录/Oracle 主目录 |
|
|
Grid |
grid |
oinstall |
asmadmin、asmdba、asmoper |
/home/grid |
/u01/app/grid/u01/app/11.2.0/grid |
|
|
Oracle RAC |
oracle |
oinstall |
dba、oper、asmdba |
/home/oracle |
/u01/app/oracle /u01/app/oracle /product/11.2.0.4/dbhome_1/ |
|
|
存储组件 |
||||||
|
存储组件 |
文件系统 |
卷大小 |
ASM 卷组名 |
ASM 冗余 |
iSCSI设备 |
说明 |
|
OCR/表决磁盘 |
ASM |
8GB |
+CRS |
Normal |
/dev/oracleasm/ocr1,ocr2,ocr3 |
3块硬盘 |
|
数据库文件 |
ASM |
20GB |
+DATA |
Normal |
/dev/oracleasm/data,data2 |
2块硬盘 |
|
快速恢复区 |
ASM |
20GB |
+FRA |
Normal |
/dev/oracleasm/fra1,fra2 |
2块硬盘 |
|
资料档案库 |
ASM |
80GB |
+MGMT |
External |
1块硬盘 |
|
说明:
根据不同的数据库集群类型,磁盘空间大小要求也不同
Oracle独立集群
|
集群配置 |
冗余级别 |
集群注册表(OCR)和表决磁盘 |
资料档案库(MGMT) |
总需求 |
|
2节点, 4 MB AU, 1个ASM磁盘 |
External |
1.4 GB |
4节点以下最少37.6 GB,5个节点以上则额外增加4.7 GB |
39 GB |
|
2节点, 4 MB AU, 2 ASM磁盘 |
Normal |
2.5 GB |
75.5 GB |
78 GB |
|
2节点, 4 MB AU, 5个ASM磁盘 |
High |
3.6 GB |
113.4 GB |
117 GB |
|
2节点, 4 MB AU, 3个ASM磁盘 |
Flex |
2.5 GB |
75.5 GB |
78 GB |
Oracle域服务集群
|
集群配置 |
冗余级别 |
集群注册表(OCR)和表决磁盘 |
资料档案库(MGMT) |
MGMT 附加服务(可选) |
总存储 |
|
2节点, 4 MB AU, 1个ASM磁盘 |
External |
1.4 GB |
188 GB |
RHP:100 GB,超过4个节点,每个节点需要PDB:35GB |
4个Oracle集群成员189.4 GB |
|
2节点, 4 MB AU, 2个ASM磁盘 |
Normal |
2.5 GB |
376 GB |
RHP:200 GB,超过4个节点,每个节点需要PDB:70GB |
4个Oracle集群成员378.5 GB |
|
2节点, 4 MB AU, 5个ASM磁盘 |
High |
3.6 GB |
564 GB |
RHP:300 GB,超过4个节点,每个节点需要PDB:105GB |
4个Oracle集群成员567.6 GB |
|
2节点, 4 MB AU, 3个ASM磁盘 |
Flex |
2.5 GB |
376 GB |
RHP:200 GB,超过4个节点,每个节点需要PDB:70GB |
4个Oracle集群成员378.5 GB |
说明:
参考:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/oracle-clusterware-storage-space-requirements.html#GUID-97FD5D40-A65B-4575-AD12-06C491AF3F41
本教程中所有仅需在一个节点执行的步骤,都在rac01节点执行
1.1.1 安装依赖软件
# yum -y install binutils unzip zip smartmontools ksh \
openssh-clients compat-libcap1 elfutils-libelf bind-utils \
elfutils-libelf-devel compat-libstdc++* gcc gcc-c++ glibc* \
glibc-devel* libgcc* libstdc++* libstdc++-devel* libaio* libaio-devel* \
make sysstat libXext unixODBC \
unixODBC-devel nfs-utils net-tools chrony libXrender libXtst
启动chrony,并设置开机启动
Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确
# systemctl strt chronyd&&systemctl enable chronyd
# chronyc sourcestats
210 Number of sources = 4
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
undefined.hostname.local> 2 0 2 +0.000 2000.000 -191ms 4000ms
111.230.189.174 2 0 2 +0.000 2000.000 -200ms 4000ms
ntp8.flashdance.cx 2 0 2 +0.000 2000.000 -220ms 4000ms
stratum2-1.ntp.led01.ru.> 2 0 2 +0.000 2000.000 -166ms 4000ms
1.1.2 内核参数修改
# cat >>/etc/sysctl.conf<<EOF
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
EOF
# sysctl -p
1.1.3 禁用selinux和Firewalld
# setenforce 0
# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux
# systemctl stop firewalld
# systemctl disable firewalld
如果有ntp服务,记得停止以及禁用
1.1.4 配置网络、修改hosts文件
1.1.4.1 配置IP地址
根据实际情况,修改IP为静态IP地址。
rac1 public网络配置如下
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="731034a7-3f4c-4e7e-8399-4e3c1fe9c2de"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="10.10.0.50"
PREFIX="24"
GATEWAY="10.10.0.2"
DNS1="10.10.0.10"
IPV6_PRIVACY="no"
rac1 私有网络配置如下
# cat /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=c764fa6f-85b9-4cd2-ab6e-324aa64012ad
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.10.50
PREFIX=24
IPV6_PRIVACY=no
根据实际情况,修改rac2 IP地址
1.1.4.2 配置nozeroconf
echo "NOZEROCONF=yes" >>/etc/sysconfig/network
1.1.4.3 配置host文件
# cat>>/etc/hosts<<'EOF'
##Public Network - (eth0)
10.10.0.50 rac1 rac1.orac.com
10.10.0.51 rac2 rac2.orac.com
##Private Interconnect - (eth1)
192.168.10.50 rac1-priv rac1-priv.orac.com
192.168.10.51 rac2-priv rac2-priv.orac.com
##Public Virtual IP (VIP) addresses - (eht0:1)
10.10.0.60 rac1-vip rac1-vip.orac.com
10.10.0.61 rac2-vip rac2-vip.orac.com
##Single Client Access Name (SCAN)
10.10.0.70 scan scan.orac.com
10.10.0.71 scan scan.orac.com
10.10.0.72 scan scan.orac.com
EOF
注意:
确保 /etc/hosts 文件的环回地址中不包含节点名(rac01 或 rac02)。如果计算机名出现在环回地址条目中,如下所示:
127.0.0.1 racnode1 localhost.localdomain localhost
如果有则,需要将其删除,如下所示:
127.0.0.1 localhost.localdomain localhost
如果 RAC 节点名出现在环回地址中,您在 RAC 安装期间将收到以下错误消息:
ORA-00603: ORACLE server session terminated by fatal error
或者
ORA-29702: error occurred in Cluster Group Service operation
1.1.5 安装并配置DNS
DNS主要解决SCAN IP问题,有三种实现SCAN IP方式
一、使用/etc/hosts文件
这个是我们目前用的最多的方式,但是缺点只能对应一个SCAN IP,该方法Oracle 不推荐,但是简单,不需要单独的DNS 服务器,使用该方法,客户端还是需要VIP来链接。 Oracle 推荐使用其他的2种方法来 实现SCAN 功能。
二、在DNS中定义域名,只需要在DNS中配置即可实现SCAN 功能。
三、通过Grid Naming Server(GNS),需要配置DNS 和DHCP才能实现SCAN 功能。
SCAN VIP 最多能有三个,它们循环地被客户端所请求到。SCAN VIP 数量和节点数是没有任何关系的,SCAN VIP 会落到哪个节点上都是随机的。
安装DNS工具软件
# yum install -y bind bind-chroot bind-utils
bind-utils和bind-chroot dns的常用工具,不下也可以,不影响服务
cp -R /usr/share/doc/bind-9.11.4/sample/var/named/* /var/named/chroot/var/named/
touch /var/named/chroot/var/named/data/cache_dump.db
touch /var/named/chroot/var/named/data/named_stats.txt
touch /var/named/chroot/var/named/data/named_mem_stats.txt
touch /var/named/chroot/var/named/data/named.run
mkdir /var/named/chroot/var/named/dynamic
touch /var/named/chroot/var/named/dynamic/managed-keys.bind
chmod -R 777 /var/named/chroot/var/named/data
chmod -R 777 /var/named/chroot/var/named/dynamic
cp -R /etc/named* /var/named/chroot/etc/
chown -R root.named /var/named/chroot/
编辑配置文件
# vim /var/named/chroot/etc/named.conf
options {
listen-on port 53 { any; }; 修改为any
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; 修改为any
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes; 启用递归
dnssec-enable yes;
dnssec-validation yes; 其他保持默认
修改域空间配置文件
# vim /var/named/chroot/etc/named.rfc1912.zones
zone "orac.com" IN { 设置域名
type master; DNS服务类型,这里我们是搭建的第一个DNS服务器,则就定为主服务器,即默认的master
file "orac.com.zone"; 域名配置文件名 ,这个文件名会在 /var/named/chroot/var/named/ 这个目录下去寻找
allow-update { none; };
};
创建域配置文件
# cp /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/orac.com.zone
# vim /var/named/chroot/var/named/orac.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
添加记录
rac1 A 10.10.0.50
rac2 A 10.10.0.51
rac1-priv A 192.168.10.50
rac2-priv A 192.168.10.51
rac1-vip A 10.10.0.60
rac2-vip A 10.10.0.61
scan A 10.10.0.70
scan A 10.10.0.71
scan A 10.10.0.72
重启服务
# systemctl restart named-chroot
测试下:
# nslookup scan.orac.com
Server: 10.10.0.10
Address: 10.10.0.10#53
Name: scan.orac.com
Address: 10.10.0.70
注意:配置了DNS解析,hosts文件中SCAN IP记录可以不用写
1.1.6 /dev/shm配置
如果配置/dev/shm,grid安装检查的时候,将会出现下面的错误
PRVE-0421 : No entry exists in /etc/fstab for mounting /dev/shm
/dev/shm默认系统已经挂载,但是并未配置在/etc/fstab中。
查看当前/dev/shm大小
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 41G 1.4G 40G 4% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 20M 1.9G 2% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
在/etc/fstab中设置/dev/shm大小为2G,编辑/etc/fstab,添加下面内容
tmpfs /dev/shm tmpfs defaults,size=2G 0 0
参考:https://access.redhat.com/mt/zh-hans/solutions/1384183
1.2 创建用户组、用户、目录
|
描述 |
OS 组名 |
分配给该组的 OS 用户 |
Oracle 权限 |
Oracle 组名 |
|
Oracle 清单和软件所有者 |
oinstall |
grid、oracle |
||
|
Oracle 自动存储管理组 |
asmadmin |
grid |
SYSASM |
OSASM |
|
ASM 数据库管理员组 |
asmdba |
grid、oracle |
ASM 的 SYSDBA |
OSDBA for ASM |
|
ASM 操作员组 |
asmoper |
grid |
ASM 的 SYSOPER |
OSOPER for ASM |
|
数据库管理员 |
dba |
oracle |
SYSDBA |
OSDBA |
|
数据库操作员 |
oper |
oracle |
SYSOPER |
OSOPER |
1.2.1 创建组及用户
groupadd oinstall
groupadd asmadmin
groupadd asmdba
groupadd asmoper
groupadd dba
groupadd oper
useradd -g oinstall -G asmadmin,asmdba,asmoper,dba grid
echo grid|passwd --stdin grid
useradd -g oinstall -G dba,oper,asmdba oracle
echo oracle|passwd --stdin oracle
1.2.2 配置用户环境变量
配置gird用户环境变量配置
# su - grid
# cat>>~/.bash_profile<<'EOF'
umask 022
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid/app
export ORACLE_HOME=/u01/app/grid/12.2.0
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/lib64:/usr/lib64
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
EOF
注:RAC02节点 ORACLE_SID 变量修改为 +ASM2
配置oralce用户环境变量
# su - oracle
# cat>>~/.bash_profile<<'EOF'
umask 022
export ORACLE_SID=orcl1
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/dbhome_1/
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/lib64:/usr/lib64
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
EOF
注:RAC02节点 ORACLE_SID 变量修改为 orcl2
1.2.3 为gird、oracle用户设置资源限制
# cat >> /etc/security/limits.conf <<'EOF'
##for oracle user##
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle soft memlock 3145728
oracle hard memlock 3145728
##for grid user##
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
EOF
# cat >> /etc/pam.d/login <<'EOF'
session required /lib64/security/pam_limits.so
session required pam_limits.so
EOF
# cat >> /etc/profile<<'EOF'
if [ $USER = "oracle" ] || [ $USER = "grid" ];then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
1.2.4 创建Oracle基目录
创建目录并修改权限
mkdir -p /u01/app/grid/{app,12.2.0}
mkdir -p /u01/app/oracle
chown -R grid:oinstall /u01
chown -R grid:oinstall /u01/app/grid
chown -R oracle:oinstall /u01/app/oracle
chmod -R 755 /u01
1.2.5 为oracle、grid用户配置用户等效性
Oracle Universal Installer (OUI) 在软件安装过程中会使用安全 shell 工具 ssh 和 scp 命令对集群的其他节点运行远程命令并将文件复制到集群的其他节点上以及安装 Oracle 软件时使用 SSH 外,在软件安装之后,配置助手、Oracle Enterprise Manager、OPatch 以及其他执行从本地节点到远程节点的配置操作的特性也会使用 SSH。
Oracle 软件安装过程中必须对 SSH 进行配置,这些命令才不会要求输入口令。运行 SSH 命令而不要求输入口令,这种能力有时称作用户等效性。
# su - grid
# ssh-keygen -t rsa
# ssh-copy-id rac1
# ssh-copy-id rac2
# su - oracle
# ssh-keygen -t rsa
# ssh-copy-id rac01
# ssh-copy-id rac02
注:在rac01,rac02上分别执行1.1—1.2所有步骤,注意步骤1.2.2中ORACLE_SID变量修改,ssh-copy-id也需要拷贝本机
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章