11.2.0.4 RAC生产环境删除节点与增加节点
场景:反欺诈业务系统为DB为双活RAC,其中一个服务器硬件损坏且无法修复。导致业务系统发生故障转移,单节点RAC虽仍可以保证业务的系统正常运行。但是单节点风险依然存在,经团队讨论抽调一台服务器加入RAC中替换故障节点,进而恢复双活的RAC结构。
具体解决方案评估与计划思路如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
1.解决方案1.1 尽快恢复双活的RAC1.2 删除故障节点残留RAC节点信息,加入新服务器成为替代故障节点的服务器1.3 应用测试2.风险评估1.1 单节点运行风险与运行时间评估1.2 删除故障节点2是否影响整个RAC风险评估1.3 加入新节点是否影响整个RAC风险评估1.4 应用测试与使用风险评估3.测试3.1 删除残留配置信息3.2 加入新节点对RAC影响4.执行备注:工作计划内容:存储,服务器,网络,GI,DB,其他软件,应用测试等等工作 |
RAC添加删除节点
1、配置文件检查(新增节点配置与现运行节点配置一致)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
/etc/hosts/etc/fstab/etc/group/etc/security/limits
.conf/etc/security/limits
.d
/90-nproc
.conf/etc/selinux/config /etc/pam
.d
/login/etc/sysctl
.conf/etc/profile/etc/mulitipath
.conf/etc/udev/rules
.d/*/etc/default/grub/home/grid/
.bash_profile/home/oracle/
.bash_profile$ORACLE_HOME
/network/admin/
*(grid 用户)$ORACLE_HOME
/network/admin/
*(oracle用户)/etc/sysconfig/network-scripts/
* |
2、环境检查
|
1
2
3
4
5 |
$ORACLE_HOME
/OPatch/opatch
lspatchesdf
-hcrsctl stat res -t(grid用户执行)ps
-ef |
grep
lsnrcrontab
-l(所有用户) |
3、删除节点2(node2)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 |
3.1 备份ocr(保留节点执行)#查看OCR备份[root@node2 bin]
# ./ocrconfig -showbackup#手动备份OCR[root@node2 bin]
# ./ocrconfig -manualbackup#如需查看OCR内容,可转储OCR备份文件[root@node2 bin]
# ./ocrdump -backupfile OCR_backup_file_name#默认文件名OCRDUMPFILE3.2 删除实例3.2.1 检查数据库参数设置[grid@node2 ~]$ srvctl config database -d racdb3.2.2 关闭删除节点实例#检查实例对应的threadSQL>
select
instance_name ,THREAD
# from gv$instance;INSTANCE_NAME THREAD
#---------------- ----------racdb1 1racdb2 2 <=故障节点[grid@node2 ~]$ srvctl stop instance -d racdb -i racdb23.2.3 保留节点执行disable thread 命令SQL> alter database disable thread 2;Database altered.3.2.4 保留节点oracle用户执行dbca静默方式删除实例[oracle@node1 ~]$ dbca -silent -deleteInstance -nodeList node2 -gdbName racdb -instanceName racdb2 -sysDBAUserName sys -sysDBAPassword oracle3.2.5 检查删除后的资源状态并确认删除成功[grid@node2 ~]$ crsctl stat res -t--------------------------------------------------------------------------------NAME TARGET STATE SERVER STATE_DETAILS --------------------------------------------------------------------------------Local Resources--------------------------------------------------------------------------------... --------------------------------------------------------------------------------Cluster Resources--------------------------------------------------------------------------------... ora.racdb.db
1 ONLINE ONLINE node1 Open <=node2故障节点实例已删除...#也可以使用srvctl命令来查看当前RAC的实例情况 •[grid@node2 ~]$ srvctl config database -d racdb...Database instances: racdb1 <=node2故障节点实例已删除...3.3 删除oracle软件3.3.1 停止删除节点监听(保留节点执行)[grid@node1 ~]$ srvctl status listener[grid@node1 ~]$ srvctl stop listener -l listener -n node2[grid@node1 ~]$ srvctl disable listener -l listener -n node2[grid@node1 ~]$ srvctl status listener[grid@node1 ~]$ srvctl stop vip -n node2 3.3.2 更新节点清单(保留节点,oracle用户执行)[oracle@node1 ~]$ $ORACLE_HOME
/oui/bin/runInstaller
-updateNodeList ORACLE_HOME=$ORACLE_HOME
"CLUSTER_NODES={node1}"3.4 从clusters删除节点3.4.1 查看运行状态(保留节点,root执行)[root@node1 ~]
# cd /u01/app/grid/11.2.0/bin/[root@node1 bin]
# ./olsnodes -s -tnode1 Active Unpinnednode2 Active Unpinned注:如果状态为Inactive为异常,官网建议执行.
/crsctl
unpin css3.4.2 停止删除节点集群(删除节点,root执行)[root@node2 bin]
# cd /u01/app/grid/11.2.0/bin/[root@node2 bin]
# ./crsctl stop crs#故障节点2的CRS已经down无需STOP3.4.3 检查集群资源[root@node1 bin]
# ./crsctl stat res -t 注:只剩一个节点3.4.4 删除节点(保留节点,root执行)[root@node1 bin]
# cd /u01/app/grid/11.2.0/bin/[root@node1 bin]
# ./crsctl delete node -n node2CRS-4661: Node node2 successfully deleted.3.4.5 更新节点信息(保留节点,grid执行)[grid@node1 ~]$ $ORACLE_HOME
/oui/bin/runInstaller
-updateNodeList ORACLE_HOME=$ORACLE_HOME
"CLUSTER_NODES={node1}"
CRS=TRUE -silent注:CLUSTER_NODES={node1}要包含所有保留节点的主机名,逗号隔开3.4.6 检查集群资源信息(保留节点)[grid@node1 ~]$
cd
/u01/oraInventory/[grid@node1 oraInventory]$
more
ContentsXML
/inventory
.xml
/saved_with
>
/minimum_ver
><
/version_info
>
<
/node
name=
"node1"
><
/node_list
>
<
/node
name=
"node1"
><
/node_list
><
/home
name=
"oradb11g_home1"
loc=
">
<
/compositehome_list
><
/inventory
> 3.4.7 集群节点删除完毕至此集群2节点删除完毕。 |
4、新增服务器按节点1安装系统与各种配置
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 |
4.1 系统管理员重装系统相同系统版本与补丁,安全基线等;更改主机名,配置网卡、多路径存储等4.2 按第一章中备份的内容恢复相关配置文件1、
/etc/hosts2、
/etc/fstab3、
/etc/security/limits
.conf4、
/etc/security/limits
.d
/90-nproc
.conf5、
/etc/selinux/config6、
/etc/pam
.d
/login7、
/etc/sysctl
.conf8、
/etc/default/grub9、
/etc/profile10、创建grid和oracle用户(具体根据实际情况修改)/usr/sbin/groupadd
-g 1000 oinstall/usr/sbin/groupadd
-g 1300 dba/usr/sbin/groupadd
-g 1301 oper/usr/sbin/groupadd
-g 1201 asmdba/usr/sbin/groupadd
-g 1200 asmadmin/usr/sbin/groupadd
-g 1202 asmoper/usr/sbin/useradd
-u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid/usr/sbin/useradd
-u 1101 -g oinstall -G dba,asmdba,oper oraclepasswd
oraclepasswd
grid11、
/home/grid/
.bash_profile12、
/home/oracle/
.bash_profile13、配置udev文件
/etc/udev/rules
.d/*14、配置本地yum源,安装lib包15、根据1节点创建目录并授权(具体根据实际情况)mkdir
-p
/u01/gridmkdir
-p
/u01/app/grid/11
.2.0chown
-R grid:oinstall
/u01mkdir
-p
/u01/oraInventorychown
-R grid:oinstall
/u01/oraInventorymkdir
-p
/u01/oraclechown
-R oracle:oinstall
/u01/oraclechmod
-R 775
/u01重启服务器。 |
5、集群软件增加节点(保留节点,grid执行)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 |
5.1 grid用户建立互信新增节点执行:[grid@node2 ~]$
mkdir
~/.
ssh[grid@node2 ~]$
ssh
-keygen -t rsa[grid@node2 ~]$
ssh
-keygen -t dsa保留节点执行:[grid@node1 ~]$
cp
-r ~/.
ssh
~/.ssh_bak[grid@node1 ~]$
ssh
node2
cat
~/.
ssh
/id_rsa
.pub >> ~/.
ssh
/authorized_keys [grid@node1 ~]$
ssh
node2
cat
~/.
ssh
/id_dsa
.pub >> ~/.
ssh
/authorized_keys[grid@node1 ~]$
scp
~/.
ssh
/authorized_keys
node2:~/.
ssh
/authorized_keys注:由于保留节点中有源剔除节点的信息,会报错,将
/home/grid/
.
ssh
/known_hosts
中删除节点主机的相关的删除所有节点验证:[grid@node2 ~]$
ssh
node1
date
;
ssh
node2
date
;
ssh
node1-priv
date
;
ssh
node2-priv
date
;增加集群软件前验证
检测集群和新加节点(node1,grid用户)#检测node2的连通性及共享存储访问$ cluvfy stage -post hwos -n node2 -verbose#比较节点1和节点2属性$ cluvfy comp peer -refnode node1 -n node2 -verbose#检测集群和新加节点完整性$ cluvfy stage -pre nodeadd -n node2 -fixup -verbose5.2 增加集群软件[grid@node1 ~]$
export
IGNORE_PREADDNODE_CHECKS=Y[grid@node1 ~]$ $ORACLE_HOME
/oui/bin/addNode
.sh
"CLUSTER_NEW_NODES={node2}"
"CLUSTER_NEW_VIRTUAL_HOSTNAMES={node2-vip}"
"CLUSTER_NEW_PRIVATE_NODE_NAMES={node2-priv}"#PRKC-1025 error;解决办法Increase JRE_MEMORY_OPTIONS=" -mx1024m"[root@node2 ~]
# /u01/oraInventory/orainstRoot.sh[root@node2 ~]
# /u01/app/grid/11.2.0/root.sh注:redhat 7上有个bug,需做如下处理[root@node2 ~]
# touch /usr/lib/systemd/system/ohas.service[root@node2 ~]
# vi /usr/lib/systemd/system/ohas.service[root@node2 ~]
# systemctl daemon-reload[root@node2 ~]
# systemctl enable ohas.serviceCreated
symlink
from
/etc/systemd/system/multi-user
.target.wants
/ohas
.service to
/usr/lib/systemd/system/ohas
.service.[root@node2 ~]
# systemctl start ohas.service |
6、增加数据库节点(保留节点,oracle用户执行)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
6.1 oracle用户建立互信新增节点执行:[oracle@node2 ~]$
mkdir
~/.
ssh[oracle @node2 ~]$
ssh
-keygen -t rsa[oracle @node2 ~]$
ssh
-keygen -t dsa保留节点执行:[oracle @node1 ~]$
cp
-r ~/.
ssh
~/.ssh_bak[oracle @node1 ~]$
ssh
node2
cat
~/.
ssh
/id_rsa
.pub >> ~/.
ssh
/authorized_keys [oracle @node1 ~]$
ssh
node2
cat
~/.
ssh
/id_dsa
.pub >> ~/.
ssh
/authorized_keys[oracle @node1 ~]$
scp
~/.
ssh
/authorized_keys
node2:~/.
ssh
/authorized_keys注:由于保留节点中有源剔除节点的信息,会报错,将
/home/oracle/
.
ssh
/known_hosts
中删除节点主机的相关的删除所有节点验证:[oracle @node2 ~]$
ssh
node1
date
;
ssh
node2
date
;
ssh
node1-priv
date
;
ssh
node2-priv
date
;6.2 增加数据库节点[oracle@node1 ~]$ $ORACLE_HOME
/oui/bin/addNode
.sh -silent
"CLUSTER_NEW_NODES={node2}"[root@node2 ~]
# /u01/oracle/product/11.2.0/db_1/root.sh |
7、数据库增加实例(保留节点,oracle用户执行)
[oracle@node1 ~]$ dbca -silent -addInstance -nodeList node2 -gdbName racdb -instanceName racdb2 -sysDBAUserName sys -sysDBAPassword oracle
8、检查集群状态
[grid@node1 ~]$ crsctl stat res -t
附表:
addNode.sh执行过程中,会使用java迁移grid下的软件,其中JRE_MEMORY_OPTIONS默认值一般过小,迁移过程中可适当增大。
报错: java.lang.OutOfMemoryError: Java heap space
参考:Addnode.sh or Fresh Install Fails With PRKC-1025 and Java.Lang.OutOfMemoryError (Doc ID 1085893.1)
########################################################################################
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!【QQ交流群:53993419】
QQ:14040928 E-mail:dbadoudou@163.com
本文链接: http://blog.itpub.net/26442936/viewspace-2747126/
########################################################################################