11.2.0.4 RAC生產環境刪除故障節點與增加新服務節點

lovehewenyu發表於2021-01-03

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 儘快恢復雙活的RAC
1.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  lspatches
df  -h
crsctl stat res -t(grid使用者執行)
ps  -ef | grep  lsnr
crontab  -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
#預設檔名OCRDUMPFILE
 
3.2 刪除例項
3.2.1 檢查資料庫引數設定
[grid@node2 ~]$ srvctl config database -d racdb
3.2.2 關閉刪除節點例項
#檢查例項對應的thread
SQL>  select  instance_name ,THREAD # from gv$instance;
INSTANCE_NAME       THREAD #
---------------- ----------
racdb1                     1
racdb2                     2 <=故障節點
[grid@node2 ~]$ srvctl stop instance -d racdb -i racdb2
3.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 oracle
3.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 -t
node1 Active Unpinned
node2 Active Unpinned
注:如果狀態為Inactive為異常,官網建議執行. /crsctl  unpin css
3.4.2 停止刪除節點叢集(刪除節點,root執行)
[root@node2 bin] # cd /u01/app/grid/11.2.0/bin/
[root@node2 bin] # ./crsctl stop crs
#故障節點2的CRS已經down無需STOP
3.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 node2
CRS-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 
<!--?xml version= "1.0"  standalone= "yes"  ?-->
<!-- Copyright (c) 1999, 2013, Oracle and /or  its affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this  file  by hand. -->
<inventory>
<version_info>
    <saved_with>11.2.0.4.0< /saved_with >
    <minimum_ver>2.1.0.6.0< /minimum_ver >
< /version_info >
<home_list>
<home name= "ora11g_gridinfrahome1"  loc= " u01=" " app=" " grid=" " 11.2.0"  type = "O"   idx= "1"   crs= "true" >
    <node_list>
       <node name= "node1" >   <=節點資訊
    < /node  name= "node1" >< /node_list >
 
<home name= "oradb11g_home1"  loc= " u01=" " oracle=" " product=" " 11.2.0=" " db_1"  type = "O"   idx= "2" >
    <node_list>
       <node name= "node1" >
    < /node  name= "node1" >< /node_list >
 
< /home  name= "oradb11g_home1"  loc= "></home name=" ora11g_gridinfrahome1 " loc=" >< /home_list >
<compositehome_list>
< /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/hosts
2、 /etc/fstab
3、 /etc/security/limits .conf
4、 /etc/security/limits .d /90-nproc .conf
5、 /etc/selinux/config
6、 /etc/pam .d /login
7、 /etc/sysctl .conf
8、 /etc/default/grub
9、 /etc/profile
10、建立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  oracle
passwd  oracle
passwd  grid
11、 /home/grid/ .bash_profile
12、 /home/oracle/ .bash_profile
13、配置udev檔案 /etc/udev/rules .d/*
14、配置本地yum源,安裝lib包
15、根據1節點建立目錄並授權(具體根據實際情況)
mkdir   -p   /u01/grid
mkdir   -p   /u01/app/grid/11 .2.0
chown   -R  grid:oinstall   /u01
mkdir   -p   /u01/oraInventory
chown   -R  grid:oinstall   /u01/oraInventory
mkdir   -p   /u01/oracle
chown   -R  oracle:oinstall   /u01/oracle
chmod   -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 -verbose
5.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.service
Created  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/

########################################################################################

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26442936/viewspace-2747126/,如需轉載,請註明出處,否則將追究法律責任。

相關文章