1. 背景
某项目现场推售硬件扩容,需要增加现网rac的存储节点和计算节点(oracle 11.2.0.4),存储节点那边较为简单,主要是数据rebalance的时间长,且占用io。这里简单介绍下:
(1)存储节点创建pv,vg,lv
(2)ise_create添加加速盘,并设置ise和iSCSI target开机自启,targetcli ls查看磁盘映射状态
(3)各个计算节点识别target,iscsi_discovery,iscsiadm,scan_ise_disk
(4)计算节点查看多路径信息,multipath -ll,确认添加成功
(5)选择任一计算节点,添加failgroup,
alter diskgroup DATA01 add failgroup FG_DATA14 disk /dev/mapper/asm-cachedisk411 failgroup FG_DATA14 disk /dev/mapper/asm-cachedisk421;
(6)rebalance asm数据
alter diskgroupDATA01 rebalance power 1;
(7)查询同步状态,塞拉利昂2T多的数据,以power 1,rebalance了20小时左右
select * from v$asm_operation;
主要介绍下增加计算节点:
2. 前期准备
主机名 | 公网ip | 私网ip | 虚拟ip | scanip | 备注 |
rac1 | 10.45.53.30 | 10.0.10.1 | 10.45.53.34 | 10.45.53.36 | 节点1 |
rac2 | 10.45.53.31 | 10.0.10.2 | 10.45.53.35 |
| 节点2 |
myhost53 | 10.45.53.53 | 10.0.10.3 | 10.45.53.52 |
| 新节点 |
(1)按照集成标准文档初始化节点3,安装rpm包等
(2)增加节点3的私网网卡,并保证网卡名与现有两个节点的网卡名相同,配置私网网卡和地址(我用的是虚拟机的网卡,添加网卡后,默认的网卡名是ens256,需要看下配置/etc/udev/rules.d/70-persistent-net.rules,重启下udev,systemctl restart systemd-udev-trigger.service,重命名网卡为eno1,保证和现网网卡名一致,否则cssd无法启动)
grid@myhost53[/etc/sysconfig/network-scripts]$ cat ifcfg-eno1
BOOTPROTO=static
DEVICE=eno1
ONBOOT=yes
IPADDR=10.0.10.3
PREFIX=24
GATEWAY=10.0.10.254
HWADDR=00:50:56:80:14:e3
(3)节点3识别共享磁盘,iscsi_discovery,iscsiadm,scan_ise_disk等,检查multipath -ll(我用的虚拟机的磁盘,用的是udev,需要配置/etc/udev/rules.d/99-oracle-asmdevices.rules)
(4)修改现有节点的/etc/hosts,增加节点3的public ip,private ip和virtual ip,并配置节点3的/etc/hosts
cat /etc/hosts
#pubilc IP --bond0
10.45.53.30 rac1
10.45.53.31 rac2
#private --bond1
10.0.10.1 rac1-priv
10.0.10.2 rac2-priv
#virtual IP --bond0
10.45.53.34 rac1-vip
10.45.53.35 rac2-vip
#scan-ip,oracle rac service --bond0
10.45.53.36 rac-cluster-scan
#node3
10.45.53.53 myhost53
10.0.10.3 myhost53-priv
10.45.53.52 myhost53-vip
(5)节点3创建oinstall和dba组,保证gid与现有节点相同
(6)节点3创建grid和oracle用户(我这里是oraclerac用户),保证uid与现有节点相同
(7)节点3修改grid和oracle密码,保证密码与现有节点相同
(8)节点3配置grid和oracle的.bash_profile
grid:
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
umask 022
export ORACLE_BASE=/u01/app/grid/grid
export ORACLE_HOME=/u01/app/grid/product
export ORACLE_SID=+ASM3
export GRID_HOME=/u01/app/grid/product
export PATH=.:${PATH}:$ORACLE_HOME/bin:$GRID_HOME/bin:$GRID_HOME/OPatch
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
oracle:
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0
export ORACLE_SID=test3
export GRID_HOME=/u01/app/grid/product
export PATH=.:${PATH}:$ORACLE_HOME/bin:$GRID_HOME/bin:$GRID_HOME/OPatch:$ORACLE_HOME/OPatch
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
umask 022
(9)创建grid和oracle软件所在目录
mkdir -p /u01/app/grid/
mkdir -p /u01/app/oracle
mkdir -p /u01/app/grid/grid
chown -R grid:oinstall /u01
chmod -R 775 /u01
(10)配置limits.conf
# oraclerac
oraclerac soft nproc 2047
oraclerac hard nproc 16384
oraclerac soft nofile 1024
oraclerac hard nofile 65536
oraclerac soft stack 10240
# grid
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
(11)将现有节点/u01/app/grid/product/cv/rpm/cvuqdisk-1.0.10-1.rpm传到节点3的/soft下,安装此rpm包
(12)配置新节点和现有节点的grid和oracle用户无密码ssh(不会影响现网)
节点1执行:
su - oraclerac
$ORACLE_HOME/oui/bin/runSSHSetup.sh -user oraclerac -hosts 'rac1 rac2 myhost53' -advanced -exverify
su - grid
$ORACLE_HOME/oui/bin/runSSHSetup.sh -user grid -hosts 'rac1 rac2 myhost53' -advanced -exverify
从新节点ssh测试
(13)验证对等性
节点1:
su - grid
cluvfy comp nodecon -n rac1,rac2,myhost53
(14)手动备份ocr
/u01/app/grid/product/bin/ocrconfig -manualbackup
ocr保存了rac中节点列表、实例和节点的关联、以及rac各种资源(VIP、监听等)信息
3. 添加grid软件
在原有的某一节点执行addnode,11g和12c,18c,19c的方式有所不同
11g:
addNode.sh位于$ORACLE_HOME/oui/bin下,似乎不能图形化加节点,只能静默加,但是一般都不会完全满足安装的先决条件,需要在执行addNode.sh之前,将IGNORE_PREADDNODE_CHECKS设为Y,跳过预检查
export IGNORE_PREADDNODE_CHECKS=Y
./addNode.sh "CLUSTER_NEW_NODES={myhost53}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={myhost53-vip}" "CLUSTER_NEW_PRIVATE_NODE_NAMES={myhost53-priv}" "CLUSTER_NEW_NODE_ROLES={hub}"
最后在新节点执行root.sh,执行此脚本时有可能碰到各种问题,比如上文提到的私网网卡名不一致会导致cssd进程无法启动
/u01/app/oraInventory/orainstRoot.sh
/u01/app/grid/product/root.sh
12c:
12c的ORACLE_HOME下面新增了addnode目录,可以图形化起addnode.sh,比较直观方便
最后执行
/u01/app/oraInventory/orainstRoot.sh
/u01/app/grid/product/root.sh
此时新节点已经有ASM3实例在运行
4. 添加oracle软件
同样的方法,在原有的某一节点执行addnode,11g和12c,18c,19c的方式有所不同
由于grid执行后,新节点的/u01/app/grid/oraInventory目录不为空,此时需要删除目录下的文件,否则报错
cd /u01/app/grid/oraInventory
rm -rf *
11g:
addNode.sh位于$ORACLE_HOME/oui/bin下,似乎不能图形化加节点,只能静默加,但是一般都不会完全满足安装的先决条件,需要在执行addNode.sh之前,将IGNORE_PREADDNODE_CHECKS设为Y,跳过预检查
export IGNORE_PREADDNODE_CHECKS=Y
./addNode.sh "CLUSTER_NEW_NODES={myhost53}"
最后在新节点执行root.sh,此脚本比较简单
/u01/app/oracle/product/12.1.0/root.sh
12c:
12c的ORACLE_HOME下面新增了addnode目录,可以图形化起addnode.sh,比较直观方便
最后在新节点执行/u01/app/oracle/product/12.1.0/root.sh,执行完毕后,会有个提示如下
5. dbca添加实例
11g和12c都能用图形化来添加instance,静默方式如下(在现有节点执行):
dbca -silent -addInstance -nodeName myhost53 -gdbName test -instanceName test3 -sysDBAUserName sys -sysDBAPassword Oracle_123
添加instance的过程中,会在新节点的test3实例中添加redo和undo,并起实例,由于我的asm盘满了,dbca过程中显示成功但是日志报如下错误
清理了asm盘后,执行deleteInstance,将实例信息从集群中删除
dbca -silent -deleteInstance -nodeName myhost53 -gdbName test -instanceName test3 -sysDBAUserName sys -sysDBAPassword Oracle_123
再重新执行addInstance
图形化方式如下:
6. 修改service,使得新加实例可以参加负载均衡
当前服务只能识别test1和test2两个实例,需要添加新节点的实例
srvctl modify service -d test -s srv_test -n -i test1,test2,test3
启动test3实例的服务
srvctl start service -d test -s srv_test -i test3
olsnodes -s
olsnodes -n
7. 测试负载均衡
for i in `seq 1 10`; do sqlplus -s test/test@10.45.53.36:1522/test @2.sql; done
cat 2.sql
show parameter instance_name;
exit;
8. 备注
11gR2 RAC 添加节点不会影响现网的业务,主要分3个阶段:
(1)第一阶段主要工作是复制GIRD HOME到新节点,配置GRID,并且启动GRID,同时更新OCR信息,更新inventory信息。
(2)第二阶段主要工作是复制RDBMS HOME到新节点,更新inventory信息。
(3)第三阶段主要工作是DBCA创建新的数据库实例(包括创建undo 表空间,redo log,初始化参数等),更新OCR信息(包括注册新的数据库实例等)
但似乎asm只能跑在两个节点
oraclerac@rac1[/home/oraclerac]$crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE myhost53 STABLE
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.DATA.dg
ONLINE ONLINE myhost53 STABLE
ONLINE ONLINE rac1 STABLE
OFFLINE OFFLINE rac2 STABLE
ora.LISTENER.lsnr
ONLINE ONLINE myhost53 STABLE
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.chad
ONLINE ONLINE myhost53 STABLE
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.net1.network
ONLINE ONLINE myhost53 STABLE
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.ons
ONLINE ONLINE myhost53 STABLE
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE myhost53 STABLE
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE rac2 STABLE
ora.MGMTLSNR
1 ONLINE ONLINE rac1 169.254.115.81 10.0.
10.1,STABLE
ora.asm
1 ONLINE ONLINE rac1 Started,STABLE
2 ONLINE ONLINE myhost53 Started,STABLE
ora.cvu
1 ONLINE ONLINE rac1 STABLE
ora.mgmtdb
1 ONLINE ONLINE rac1 Open,STABLE
ora.myhost53.vip
1 ONLINE ONLINE myhost53 STABLE
ora.onenode.db
1 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
racle/product/12.1.0
,STABLE
ora.onenode.srv_onenode.svc
1 ONLINE ONLINE rac1 STABLE
ora.qosmserver
1 ONLINE ONLINE rac1 STABLE
ora.rac1.vip
1 ONLINE ONLINE rac1 STABLE
ora.rac2.vip
1 ONLINE ONLINE rac2 STABLE
ora.scan1.vip
1 ONLINE ONLINE myhost53 STABLE
ora.scan2.vip
1 ONLINE ONLINE rac2 STABLE
ora.test.db
1 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
racle/product/12.1.0
,STABLE
2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
racle/product/12.1.0
,STABLE
3 ONLINE ONLINE myhost53 Open,HOME=/u01/app/o
racle/product/12.1.0
,STABLE
ora.test.srv_test.svc
1 ONLINE ONLINE rac1 STABLE
2 ONLINE ONLINE rac2 STABLE
3 ONLINE ONLINE myhost53 STABLE
--------------------------------------------------------------------------------
9. 删除现有节点的方式与添加节点的步骤相反