暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

rac搭建

原创 唯唯 2020-06-02
1391

CentOS6u9 Oracle11g RAC 搭建部署(一)集群规划和主机部署

0-简单说明:

本实验使用VirtualBOX虚拟机软件测试部署
VirtualBOX虚拟机软件可以方便共享存储硬盘的添加设置
VirtualBOX虚拟机软件存在问题,双网卡绑定的断网验证实验会失败
本实验包含集群规划、集群搭建、各项优化、OGG预部署和简单日检多项部分
本实验是2节点的11gRAC实验
本实验不面向0基础

1-集群规划:
节点主机本地文件系统划分:

/boot 200M
SWAP 20000M
/ 剩余全部

节点主机文件系统只需要划分三个分区即可,其中SWAP分区20G,因为Oracle官档推荐当物理内存大于16G时,SWAP需要至少16G
如果是生产物理机,本地磁盘也不会太过紧张,直接分配一个大于16G的SWAP空间即可
软件安装目录/u01独立划分一个分区是防止影响根分区或者受根分区影响,例如当两者中某一个使用率到100%时会同时影响另一个
对于一套正规的经常会做巡检和设置监控告警的生产库,将/u01单独划分一个分区意义是不大的

共享存储需求和划分:

需要独立的dg存储集群信息,容量需求并不大,但是信息较为重要,建议三份冗余
需要根据当前库容量和数据增量以及历史数据转储策略预估存放数据的dg容量
需要将日志和归档存放在共享存储中,需要根据当前的每日归档容量预估归档dg容量
数据备份最好也放在共享存储上,而且和数据dg处于不同的物理存储设备中
考虑后期使用OGG做灾备同步,因此需要共享存储存放OGG文件
综上,本实验的共享存储划分如下:
lun_crs01 1g
lun_crs02 1g
lun_crs03 1g
lun_data01 10g
lun_arch01 4g
lun_back01 4g
lun_ogg01 4g
生产环境需要根据当前库情形和存储配额以及项目生命周期等各方面情况进行综合设计

共享存储配置方法:

网络配置划分:

生产服务器一般拥有四个网口,一般网口1和网口2处于同一块网卡上,网口3和网口4处于另一块网卡上
为了保证库的可用性,一般会对public网段做双网卡绑定,注意绑定的两个网口要处于不同的网卡上,否则还是单点
因此一般将网口1和网口3或者是网口1和网口4做双网卡绑定
私有网段,在Oracle11.2.0.2之后支持haip技术,因此剩余的两块网卡分别配置两个私有网段
综上,节点1和节点2的IP配置如下:
节点1 public 192.168.77.11
节点1 private1 10.10.10.11
节点1 private2 10.10.11.11
节点2 public 192.168.77.12
节点2 private1 10.10.10.12
节点2 private2 10.10.11.12

hosts 文件配置如下:

192.168.77.11 rac01
192.168.77.12 rac02
192.168.77.10 racscan
192.168.77.13 rac01vip
192.168.77.14 rac02vip
10.10.10.11 rac01priv1
10.10.10.12 rac02priv1
10.10.11.11 rac01priv2
10.10.11.12 rac02priv2

2-主机网络部署:
1° 依据《CentOS6实验机模板搭建部署》克隆两台实验机,调整内存为16G,修改主机名和hosts文件:

节点1:

HOSTNAME=rac01
hostname HOSTNAMEecho"HOSTNAME echo "(grep -E ‘127|::1’ /etc/hosts)">/etc/hosts
echo “$(ifconfig eth0|grep inet|awk -F’[ :]’ ‘{print $13}’) (hostname)">>/etc/hostssedi"s/HOSTNAME.(hostname)">>/etc/hosts sed -i "s/^HOSTNAME.*/HOSTNAME=$HOSTNAME/g” /etc/sysconfig/network

节点2:

HOSTNAME=rac02
hostname HOSTNAMEecho"HOSTNAME echo "(grep -E ‘127|::1’ /etc/hosts)">/etc/hosts
echo “$(ifconfig eth0|grep inet|awk -F’[ :]’ ‘{print $13}’) (hostname)">>/etc/hostssedi"s/HOSTNAME.(hostname)">>/etc/hosts sed -i "s/^HOSTNAME.*/HOSTNAME=$HOSTNAME/g” /etc/sysconfig/network

2° 虚拟机关机,新增三块网卡设备,全部桥接,依据《CentOS6u9 双网卡绑定》做eth0和eth2的双网卡绑定:

节点1:

cd /etc/sysconfig/network-scripts
cat >ifcfg-bond0<ifcfg-eth0<ifcfg-eth2<<EOF
DEVICE=eth2
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
TYPE=Ethernet
EOF
reboot

此处不再保留网卡的UUID和HWADDR信息,生产推荐保留,保留方法参见《CentOS6u9 双网卡绑定》

节点2:

cd /etc/sysconfig/network-scripts
cat >ifcfg-bond0<ifcfg-eth0<ifcfg-eth2<<EOF
DEVICE=eth2
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
TYPE=Ethernet
EOF
reboot

此处不再保留网卡的UUID和HWADDR信息,生产推荐保留,保留方法参见《CentOS6u9 双网卡绑定》

3° 配置eth1和eth3的两个私有网段:

节点1:

cd /etc/sysconfig/network-scripts
cat >ifcfg-eth1<<EOF
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.11
NETMASK=255.255.255.0

GATEWAY=10.10.10.11

EOF
cat >ifcfg-eth3<<EOF
DEVICE=eth3
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.11.11
NETMASK=255.255.255.0

GATEWAY=10.10.11.11

EOF
/etc/init.d/network restart

生产环境请根据真实的私有网段的gateway填写对应的信息

节点2:

cd /etc/sysconfig/network-scripts
cat >ifcfg-eth1<<EOF
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.12
NETMASK=255.255.255.0

GATEWAY=10.10.10.12

EOF
cat >ifcfg-eth3<<EOF
DEVICE=eth3
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.11.12
NETMASK=255.255.255.0

GATEWAY=10.10.11.12

EOF
/etc/init.d/network restart

生产环境请根据真实的私有网段的gateway填写对应的信息

4° /etc/hosts文件配置:

节点1和节点2均执行

echo “$(grep -E ‘127|::1’ /etc/hosts)”>/etc/hosts
cat >>/etc/hosts<<EOF
192.168.77.10 racscan
192.168.77.11 rac01
192.168.77.12 rac02
192.168.77.13 rac01vip
192.168.77.14 rac02vip
10.10.10.11 rac01priv1
10.10.10.12 rac02priv1
10.10.11.11 rac01priv2
10.10.11.12 rac02priv2
EOF

两节点均测试

for i in rac01 rac02 rac01priv1 rac02priv1 rac01priv2 rac02priv2;do ping -c 3 $i;echo;done

5° 依据《CentOS5u11 Oracle 10g 静默安装手工建库统一配置方案》调整SWAP为20G,具体操作略

3-系统预部署:
1° 软件包安装和升级:

节点1和节点2均操作

yum -y install binutils compat-libcap1 gcc gcc-c++
glibc.x86_64 glibc-devel.x86_64 compat-libstdc+±33.x86_64
ksh make sysstat libgcc.x86_64 libstdc++.x86_64 libstdc+±devel.x86_64
libaio.x86_64 libaio-devel.x86_64 ntpdate openssh-clients
tigervnc-server xterm unzip readline-devel elfutils-libelf-devel
glibc.i686 libgcc.i686 smartmontools parted

以上的包在CentOS-6.8-x86_64-bin-DVD1.iso中

yum -y install libstdc++.i686 libstdc+±devel.i686
compat-libstdc+±33.i686 glibc-devel.i686 libaio.i686 libaio-devel.i686

以上的包在CentOS-6.8-x86_64-bin-DVD2.iso中

如果你的服务器在系统预部署之时就无法上网,则可以通过切换ISO光盘的形式使用yum安装以上所需的软件包

图形安装时,还需要的系统包:

yum -y groupinstall “X Window System”
yum -y groupinstall “Desktop”
yum -y install tigervnc-server.x86_64

本实验不使用静默安装的方式安装RAC

sed -i ‘s/id:5/id:3/g’ /etc/inittab

启动级别保持在命令行模式

chkconfig --list|grep 3:on

再一次检查开机启动项,进行优化

配置共享存储策略的时候需要多路软件

yum -y install device-mapper-multipath

2° 动态DNS解析配置文件删除:

节点1和节点2均操作

/etc/resolv.conf
chattr +i /etc/resolv.conf

将配置文件清空,然后加锁,防止误操作

1
2
3
4
3° ntpd服务卸载,ntpdate时钟服务器修改:

节点1和节点2均操作

两节点均安装了图形组件,会依赖安装上ntp服务,需要卸载或者删除配置文件

chkconfig ntpd off
rm -rf /etc/ntp.conf

ntpserver=182.92.12.11
sed -i “s/ntp1.aliyun.com/ntpserver/g"/etc/rc.localsedi"s/ntp1.aliyun.com/{ntpserver}/g" /etc/rc.local sed -i "s/ntp1.aliyun.com/{ntpserver}/g” /var/spool/cron/root

内网配置ntp服务器,将模板机指向的阿里云ntp服务器指向内网服务器IP

注意,我们是将ntpd服务进程卸载删除,使用ntpdate命令做时钟校正

当ntpd服务进程启动着的时候,RAC搭建会报错,因此要卸载ntpd服务

11gRAC有自己独有的时钟服务进程,在新系统时钟相差很大时也能保证集群的正常运行

但是有些SQL会使用诸如sysdate命令,使用系统本地的时间,如果不配置时钟校正,则会造成业务数据失真

4-集群和数据库用户配置:
1° 用户创建:

节点1和节点2均操作

groupadd -g 1000 oinstall
groupadd -g 1001 asmadmin
groupadd -g 1002 dba
groupadd -g 1003 asmdba
groupadd -g 1004 asmoper
useradd -u 1005 -g oinstall -G oinstall,asmadmin,dba,asmdba,asmoper grid
useradd -u 1006 -g oinstall -G oinstall,asmadmin,dba,asmdba,asmoper oracle
echo oracle|passwd --stdin grid
echo oracle|passwd --stdin oracle

暂时配置grid和oracle密码均为oracle,可根据需求更改

2° 软件安装目录创建配置:

节点1和节点2均操作

mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory
mkdir -p /u01/app/grid
chown -R grid:oinstall /u01/app/grid
mkdir -p /u01/11.2.0/grid
chown -R grid:oinstall /u01/11.2.0/grid
chmod -R 775 /u01/11.2.0/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/cfgtoollogs
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall /u01/app/oracle/product/11.2.0/db_1
chmod -R 775 /u01/app/oracle/product/11.2.0/db_1

备份用目录配置:

mkdir /backup
chown -R oracle: /backup

如果备份放在共享存储,后续还需要额外配置

3° 主机内核参数配置:

节点1和节点2均操作

参见《CentOS6u9 Oracle11g 安装部署的内核参数设置简录》

echo ‘fs.aio-max-nr = 3145728’>>/etc/sysctl.conf
echo ‘fs.file-max = 6815744’>>/etc/sysctl.conf

如果物理内存大于64G,则打开使用

echo ‘kernel.shmmax = 137438953472’>>/etc/sysctl.conf

echo ‘kernel.sem = 250 32000 100 128’>>/etc/sysctl.conf
echo ‘net.ipv4.ip_local_port_range = 9000 65000’>>/etc/sysctl.conf
echo ‘net.core.rmem_default = 262144’>>/etc/sysctl.conf
echo ‘net.core.rmem_max = 4194304’>>/etc/sysctl.conf
echo ‘net.core.wmem_default = 262144’>>/etc/sysctl.conf
echo ‘net.core.wmem_max = 1048576’>>/etc/sysctl.conf
echo ‘kernel.shmmni = 4096’>>/etc/sysctl.conf

这一项无需配置,系统默认已满足官档需求,但是grid安装检查时候会报警告…

sysctl -p

4° 用户资源限额配置:

节点1和节点2均操作

echo ‘grid soft nofile 4096’>>/etc/security/limits.conf
echo ‘grid hard nofile 65536’>>/etc/security/limits.conf
echo ‘grid soft nproc 2047’>>/etc/security/limits.conf
echo ‘grid hard nproc 16384’>>/etc/security/limits.conf
echo ‘grid soft stack 10240’>>/etc/security/limits.conf
echo ‘grid hard stack 32768’>>/etc/security/limits.conf
echo ‘oracle soft nofile 4096’>>/etc/security/limits.conf
echo ‘oracle hard nofile 65536’>>/etc/security/limits.conf
echo ‘oracle soft nproc 2047’>>/etc/security/limits.conf
echo ‘oracle hard nproc 16384’>>/etc/security/limits.conf
echo ‘oracle soft stack 10240’>>/etc/security/limits.conf
echo ‘oracle hard stack 32768’>>/etc/security/limits.conf

5° 节点1 用户环境变量配置:

SID=orcl
NLS=UTF8

cat >>/home/grid/.bash_profile<<EOF
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/11.2.0/grid
export ORACLE_SID=+ASM1

export ORACLE_SID=+ASM2

export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT=‘yyyy-mm-dd hh24:mi:ss’
export NLS_LANG=AMERICAN_AMERICA.${NLS}
EOF

需要根据实际生产需求更改

cat >>/home/oracle/.bash_profile<<EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export ORACLE_SID=${SID}1

export ORACLE_SID=${SID}2

export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT=‘yyyy-mm-dd hh24:mi:ss’
export NLS_LANG=AMERICAN_AMERICA.${NLS}
EOF

6° 节点2 用户环境变量配置:

SID=orcl
NLS=UTF8

cat >>/home/grid/.bash_profile<<EOF
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/11.2.0/grid

export ORACLE_SID=+ASM1

export ORACLE_SID=+ASM2
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT=‘yyyy-mm-dd hh24:mi:ss’
export NLS_LANG=AMERICAN_AMERICA.${NLS}
EOF

需要根据实际生产需求更改

cat >>/home/oracle/.bash_profile<<EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export ORACLE_SID=${SID}1

export ORACLE_SID=SID2exportPATH=$ORACLEHOME/bin:$PATHexportNLSDATEFORMAT=yyyymmddhh24:mi:ssexportNLSLANG=AMERICANAMERICA.{SID}2 export PATH=\$ORACLE_HOME/bin:\$PATH export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss' export NLS_LANG=AMERICAN_AMERICA.{NLS}
EOF


CentOS6u9 Oracle11g RAC 搭建部署(二)共享存储配置

5-共享存储配置:
依据《CentOS6u9 Oracle11g RAC 共享存储配置》添加7块共享存储盘,配置多路软件+udev权限绑定:

1° 配置多路软件

节点1和节点2均操作

共享设备挂载验证

for i in (ls/dev/sdgrepv[09]grepvsda)doechone"(ls /dev/sd*|grep -v [0-9]|grep -v sda) do echo -ne "(fdisk -l ${i}|grep ^Disk|grep ${i}|awk '{print $1,$2,$3,4}') WWID:" /sbin/scsi_id -g -u -d "{i}"
done|sort -k5|column -t

两节点查询出的7块共享存储的WWID是一致的,说明共享存储成功挂接到了俩节点

软件安装,设置开机启动

yum -y install device-mapper-multipath

此时只能使用本地ISO镜像进行安装软件包

chkconfig multipathd on

生成默认配置文件,启动

mpathconf --enable
/etc/init.d/multipathd start

根据WWID和磁盘容量,规划出WWID和别名对应关系如下:

cat >/tmp/WWID_NAME.tmp<<EOF
1ATA_VBOX_HARDDISK_VB3162a19e-29809f6c lun_crs01
1ATA_VBOX_HARDDISK_VB4765ca8a-69855511 lun_arch01
1ATA_VBOX_HARDDISK_VBb14fa60c-44dd8372 lun_back01
1ATA_VBOX_HARDDISK_VBb2422726-0dda7629 lun_data01
1ATA_VBOX_HARDDISK_VBc658d55e-5480b7e7 lun_ogg01
1ATA_VBOX_HARDDISK_VBd513ae99-0f1351d8 lun_crs02
1ATA_VBOX_HARDDISK_VBf73d8287-f43a5d49 lun_crs03
EOF

生成新的配置文件

rm -rf /tmp/multipath.conf.tmp
cat /tmp/WWID_NAME.tmp|while read line
do
WWID=$(echo $line|awk '{print 1}') NAME=(echo $line|awk ‘{print $2}’)
echo -e "
multipath {
wwid ${WWID}
alias ${NAME}
path_grouping_policy multibus
path_selector “round-robin 0”
mode 0600
}">>/tmp/multipath.conf.tmp
done

先根据WWID和NAME的对应关系,拼出所有的multipath标签,存入文件

vendor=$(multipath -v3|grep sdb|grep ‘vendor’|awk '{print NF}') product=(multipath -v3|grep sdb|grep ‘product’|awk ‘{print (NF1),(NF-1),NF}’)
INFO=$(cat /tmp/multipath.conf.tmp)

将存入文件的multipath标签加载成变量

cat >/etc/multipath.conf<<EOF
defaults {
user_friendly_names yes
}
blacklist {
devnode “^sda”
}
multipaths {
{INFO} } devices { device { vendor "{vendor}"
product “${product}”
getuid_callout “/sbin/scsi_id -g -u -d /dev/%n”
failback immediate
no_path_retry fail
}
}
EOF

启动并验证

/etc/init.d/multipathd restart
ls -l /dev/mapper/

2° 配置udev权限绑定

节点1和节点2均操作

修复BUG

echo “options=–whitelisted --replace-whitespace” >> /etc/scsi_id.config
cat >>/lib/udev/rules.d/90-pulseaudio.rules<<EOF
GOTO=“pulseaudio_check_usb”
LABEL=“pulseaudio_check_usb”
EOF

生成配置文件

cd /etc/udev/rules.d
rm -rf 12-dm-permissions.rules
OWNER=grid
GROUP=asmadmin
for NAME in $(cat /tmp/WWID_NAME.tmp |awk '{print 2}'|grep -Ev 'lun_back01|lun_ogg01') do echo "ENV{DM_NAME}==\"{NAME}", OWNER:="{OWNER}\", GROUP:=\"{GROUP}", MODE:=“0660"”>>12-dm-permissions.rules
done

启动验证:

start_udev
ls -l /dev/dm-*

注意,备份盘和OGG盘并不做成ASM盘组,直接格式化后挂载到某一节点的文件系统上做备份

不建议使用ACFS挂载OGG盘,BUG太多

如果将备份盘做成ASM盘组,备份到ASM中,当需要做备份恢复时,ASM库无法启动…

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 节点1:
  • 节点2:
  • 节点1:
  • 此处不再保留网卡的UUID和HWADDR信息,生产推荐保留,保留方法参见《CentOS6u9 双网卡绑定》
  • 节点2:
  • 此处不再保留网卡的UUID和HWADDR信息,生产推荐保留,保留方法参见《CentOS6u9 双网卡绑定》
  • 节点1:
  • GATEWAY=10.10.10.11
  • GATEWAY=10.10.11.11
  • 生产环境请根据真实的私有网段的gateway填写对应的信息
  • 节点2:
  • GATEWAY=10.10.10.12
  • GATEWAY=10.10.11.12
  • 生产环境请根据真实的私有网段的gateway填写对应的信息
  • 节点1和节点2均执行
  • 两节点均测试
  • 节点1和节点2均操作
  • 以上的包在CentOS-6.8-x86_64-bin-DVD1.iso中
  • 以上的包在CentOS-6.8-x86_64-bin-DVD2.iso中
  • 如果你的服务器在系统预部署之时就无法上网,则可以通过切换ISO光盘的形式使用yum安装以上所需的软件包
  • 图形安装时,还需要的系统包:
  • 本实验不使用静默安装的方式安装RAC
  • 启动级别保持在命令行模式
  • 再一次检查开机启动项,进行优化
  • 配置共享存储策略的时候需要多路软件
  • 节点1和节点2均操作
  • 将配置文件清空,然后加锁,防止误操作
  • 节点1和节点2均操作
  • 两节点均安装了图形组件,会依赖安装上ntp服务,需要卸载或者删除配置文件
  • 内网配置ntp服务器,将模板机指向的阿里云ntp服务器指向内网服务器IP
  • 注意,我们是将ntpd服务进程卸载删除,使用ntpdate命令做时钟校正
  • 当ntpd服务进程启动着的时候,RAC搭建会报错,因此要卸载ntpd服务
  • 11gRAC有自己独有的时钟服务进程,在新系统时钟相差很大时也能保证集群的正常运行
  • 但是有些SQL会使用诸如sysdate命令,使用系统本地的时间,如果不配置时钟校正,则会造成业务数据失真
  • 节点1和节点2均操作
  • 暂时配置grid和oracle密码均为oracle,可根据需求更改
  • 节点1和节点2均操作
  • 备份用目录配置:
  • 如果备份放在共享存储,后续还需要额外配置
  • 节点1和节点2均操作
  • 参见《CentOS6u9 Oracle11g 安装部署的内核参数设置简录》
  • 如果物理内存大于64G,则打开使用
  • echo ‘kernel.shmmax = 137438953472’>>/etc/sysctl.conf
  • 这一项无需配置,系统默认已满足官档需求,但是grid安装检查时候会报警告…
  • 节点1和节点2均操作
  • export ORACLE_SID=+ASM2
  • 需要根据实际生产需求更改
  • export ORACLE_SID=${SID}2
  • export ORACLE_SID=+ASM1
  • 需要根据实际生产需求更改
  • export ORACLE_SID=${SID}1
  • 节点1和节点2均操作
  • 共享设备挂载验证
  • 两节点查询出的7块共享存储的WWID是一致的,说明共享存储成功挂接到了俩节点
  • 软件安装,设置开机启动
  • 此时只能使用本地ISO镜像进行安装软件包
  • 生成默认配置文件,启动
  • 根据WWID和磁盘容量,规划出WWID和别名对应关系如下:
  • 生成新的配置文件
  • 先根据WWID和NAME的对应关系,拼出所有的multipath标签,存入文件
  • 将存入文件的multipath标签加载成变量
  • 启动并验证
  • 节点1和节点2均操作
  • 修复BUG
  • 生成配置文件
  • 启动验证:
  • 注意,备份盘和OGG盘并不做成ASM盘组,直接格式化后挂载到某一节点的文件系统上做备份
  • 不建议使用ACFS挂载OGG盘,BUG太多
  • 如果将备份盘做成ASM盘组,备份到ASM中,当需要做备份恢复时,ASM库无法启动…