RAC重構型別

不一樣的天空w發表於2017-04-01

RAC隔離體系可分為3層:DB層,clusterware層和OS層
每一層都提供了機制用於保證RAC正常工作,每一層也都可引發RAC重構;


DB層
由LMON程式維護,其提供了CGS和NM兩個服務,CGS位於NM之上
NM:每個instance的所有程式被看作一個組註冊到clusterware,其中LMON為主程式;其為DB和clusterware的通訊通道,同時負責和其他節點NM定期通訊;
Instance正常啟動或關閉時,其NM向clusterware進行註冊或取消註冊,同時通知其他節點的NM,然後由NM通知CGS負責重構;
Startup/shutdown normal --〉 local NM--〉 remote NM --〉 remote CGS --〉GCS/GES reconfiguration

如果instance異常關閉或LMON/LMS/LMD通訊超時,則需要由CGS進行IMR,將重構的結果記錄到控制檔案的CFVRR欄位(control file vote result record),由各instance讀取該欄位以獲悉自己是否被驅逐

Shutdown abort/ipc timeout --〉 IMR --〉 control file

由上所述,DB層由於timeout引發重構可分為兩種:

LMON通訊超時:預設300秒,因LMON/LMS/LMD通訊異常導致

NAME                                               VALUE                     ISDEFAULT ISMOD      ISADJ

-------------------------------------------------- ------------------------- --------- ---------- -----

_cgs_send_timeout                                  300                       TRUE      FALSE      FALSE

控制檔案超時:預設900秒,ckpt每3秒更新一次控制檔案,如果超過規定時間仍無相應則會觸發IMR

NAME                                               VALUE                     ISDEFAULT ISMOD      ISADJ

-------------------------------------------------- ------------------------- --------- ---------- -----

_controlfile_enqueue_timeout                       900                       TRUE      FALSE      FALSE

另據What is Split Brain in Oracle Clusterware and Real Application Cluster [ID 1425586.1]記載

Controlfile is used similarly to voting disk in clusterware layer to determine which instances survive and which instances evict. The voting result is similar to clusterware voting result

控制檔案在RAC層充當voting disk的角色


Clusterware層

由OCSSD負責,其提供兩種心跳機制,分別為network heartbeat和disk heartbeat,其引數值分別如下

[oracle@ ~]$  crsctl get css disktimeout

CRS-4678: Successful get disktimeout 200 for Cluster Synchronization Services.

[oracle@ ~]$ crsctl get css misscount

CRS-4678: Successful get misscount 30 for Cluster Synchronization Services.

網路心跳超時會導致叢集被分隔成n個子叢集,擁有節點數最多的子叢集最終獲取控制權,其餘節點會被剔出重啟(11R2引入新機制取代了fast reboot);
The group with lower node member in case of same number of node(s) available in each group
如果兩個子叢集節點數一樣多,用於較低節點號的子叢集會最終存活

磁碟心跳超時:如果ocssd沒有在規定時間內更新voting disk則oracle認定其offline,如果offline數量大於online數量該節點則會被驅逐;


OS層

Hangcheck-Timer:用於檢測linux是否hang
Oprocd:10204起linux引入此程式,每1秒執行一次檢查,如果失敗則sleep 500毫秒後繼續嘗試;11R2起被cssdagent替代;
 

原貼連結
http://www.itpub.net/forum.php?mod=viewthread&tid=1784415&page=1#pid21357066
多謝Yong的回覆

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

相關文章