Oracle RAC體系結構介紹

1、 Oracle集羣體系結構

       Oracle RAC,全稱是Oracle Real Application Cluster,即真正的應用集羣,是oracle提供的一個並行集羣系統,整個集羣系統由Oracle Clusterware (集羣就緒軟件)和 Real ApplicationClustersRAC)兩大部分組成。

       oracle RAC的實質是位於不同操作系統的Oracle實例節點同時訪問同一個Oracle數據庫,每個節點間通過私有網絡進行通信,互相監控節點的運行狀態,oracle數據庫所有的數據文件、聯機日誌文件、控制文件等均放在集羣的共享存儲設備上,而共享存儲設備可以是RAWASMOCFS2等,所有集羣節點可以同時讀寫共享存儲。Oracle RAC的基本拓撲結構如下所示:

 

1、 Oracle集羣體系結構

       由拓撲結構可知:

 

       一個Oracle Rac數據庫有多個服務器節點組成,每個服務器節點上都有自己獨立的OSClusterWareoracle Rac數據庫程序,並且每個節點都有自己的網絡監聽器。ClusterWare是一個集羣軟件,主要用於集羣系統管理,oracle Rac數據庫程序用於提供oracle實例進程,以供客戶端訪問集羣系統,監聽服務主要用於監控自己的網絡端口信息,所有的服務和程序通過操作系統都去訪問一個共享存儲,最終完成數據的讀寫。共享存儲的實現方式有很多種,可以通過使用自動存儲管理(ASM)、Oracle集羣文件系統(OCFS)、裸設備(Raw)、網絡區域存儲(NAS)等來保證整個集羣系統數據的一致性。

       從Oracle10g起,Oracle提供了自己的集羣軟件,即Oracle clusterware,它通過CRS(即Cluster ReadyServices)來實現這個軟件是安裝oracle rac的前提,也是RAC環境穩定運行的基礎,在oracle10g之前的版本,安裝RAC時必須藉助與第三方的集羣軟件,而在oracle10g以後,安裝oracle rac時,可以用oracle自帶的集羣軟件,也可以使用經過RAC認證的第三方集羣軟件來代替。

       1、 Oracle集羣體系結構

       oracle的運行機制來說,集羣中每臺服務器就是一個oracle實例,多個oracle實例對應同一個oracle數據庫,組成了oracle數據庫集羣。請看下圖:

       從圖中可以看出,運行在兩個節點上的數據庫實例訪問同一個RAC數據庫,並且兩個節點的本地磁盤僅用來存放oracle安裝程序和ClusterWare軟件,而在共享存儲上,存放了oracle的數據文件、控制文件、聯機日誌文件、歸檔日誌文件等,這是安裝oracleRac時的一種數據存儲分配方式,Jesse備註:典型的方式)其實,RAC提供了多種數據存儲方式,這個將在下面進行獨立介紹。

 

2、 Oracle Clusterware體系結構與進程介紹

2.1、Oracle Clusterware 簡介

       Cluster Ready Services,簡稱CRS,是oracle開發的一個集羣軟件,與其它集羣軟件類似,CRS主要完成集羣成員管理、心跳監控、故障切換等功能CRS要求每個集羣節點的操作系統必須相同(Jesse備註:重點),這樣,通過CRS將多個節點的操作系統綁定到了一起,客戶端對集羣的訪問,就像訪問一臺服務器一樣。

       CRS主要有兩個集羣套件組成,分別是voting diskOracle Cluster Registry

       voting disk,即爲表決磁盤,集羣中每個節點定期評估自身的健康情況,然後會把它的狀態信息放入到表決磁盤上。並且節點間也會互相查看其運行狀態,並把信息傳遞給其他節點進而寫入表決磁盤。當集羣節點發生故障時,還可以通過表決磁盤進行投票仲裁等,因此,表決磁盤必須放在共享存儲設備上。以保證每個節點都能訪問到。表決磁盤可以是一個裸磁盤分區,也可以是一個獨立的文件。由於它僅記錄節點運行信息,磁盤大小一般在10-20M左右即可。

       Oracle Cluster Registry,簡稱OCR,即集羣註冊服務,OCR主要用於記錄RAC中集羣和數據庫的配置信息。這些信息包括了集羣節點的列表、集羣數據庫實例到節點的映射以及CRS應用程序資源信息。

       CRS使用兩種心跳設備來驗證節點成員的狀態,保證集羣的完整性:一個是表決磁盤,集羣同步服務進程每隔幾秒鐘都會向表決磁盤寫入一條心跳信息,集羣通過表決磁盤即可驗證節點的狀態,如果某個節點在指定的最大時間段內沒有向表決磁盤寫入信息,集羣就認爲此節點失效了,進而執行故障切換。另一個心跳是節點間私有以太網的心跳,通過這個心跳機制可以判斷節點間是否出現了網絡故障兩種心跳機制的結合,有效的增加了集羣的可靠性。

       另外,CRS建議用於內部通訊的私有以太網心跳必須與用於RAC節點間通訊的網絡分開,也就是不能在同一網絡中,如果RAC節點間通訊的網絡與私有以太網心跳在同一個網絡內,那麼,必須保證該網絡不能被非集羣系統的節點訪問到。

 

2、 Oracle Clusterware體系結構與進程介紹

2.2、Oracle Clusterware 進程介紹

       Oracle Clusterware 通過ClusterReady Services來完成集羣功能,CRS包含了一組相互協作的後臺進程,下面詳細介紹下CRS中幾個很重要的後臺進程。

1     Cluster Synchronization Services

       簡稱CSS,用於管理與協調集羣中各節點的關係,並用於節點間通信,當節點在加入或離開集羣時,都由css進行通知集羣。CSS在集羣中對應的後臺進程爲CSSD,該進程由oracle用戶運行和管理當節點發生故障時,cssd會自動重啓操作系統。

2     Cluster Ready Services

       簡稱CRS,是管理羣集內高可用操作的主要程序,在集羣中CRS管理所有資源,包括數據庫、服務、實例、vip地址、監聽器、應用進程等,CRS在集羣中對應的後臺進程爲CRSD,該進程可以對集羣資源進行啓動、停止、監視和容錯等操作,正常狀態下,CRSD監控節點各種資源,當某個資源發生異常時,自動重啓或者切換該資源。

3     Process Monitor Daemon

       簡稱OPROCD,此進程被鎖定在內存中,用於監控集羣及提供I/O防護(I/O fencing)。OPROCD運行在每個節點上,且定期執行健康檢測,如果在超過它所希望的間隔內,仍然不能和某個節點通信,那麼,OPROCD將會重置處理器及重啓節點。一個OPROCD故障也將導致Clusterware重啓節點。

4     Oracle Notification Service

       簡稱ONS,即oracle通告服務,主要用於發佈和訂閱FastApplication Notification事件。

5     Event Management

       簡稱EVM,是一個事件檢測的後臺進程,由oracle用戶運行和管理。

3、 RAC數據庫體系機構與進程

3.1、RAC簡介

       RAC是一個具有共享緩存體系結構的集羣數據庫,它克服了傳統的不共享和共享磁盤方法的限制,爲所有業務應用程序提供了一種具有可伸縮性和可用性的數據庫解決方案,它一般與Oracle Clusterware 或第三方集羣軟件共同組成Oracle集羣系統。

       RAC是一個全共享式的體系架構,它的所有數據文件、控制文件、聯機日誌文件、參數文件等都必須存放在共享磁盤中,因爲只有這樣,集羣所有節點才能訪問到,RAC支持多種存儲方式,可以使用下面幾種方式的任意一種:

1)裸設備(Raw devices

       也就是不經過文件系統,將數據直接寫入磁盤中,這種方式的好處是磁盤I/O性能很高,適合寫操作頻繁的業務系統,但缺點也很明顯:數據維護和備份不方便,備份只能通過dd命令或者基於塊級別的備份設備來完成,這無疑增加了維護成本

2)集羣文件系統

       爲了支持共享存儲,oracle開發出了集羣文件系統OCFS,這個文件系統可用於Windows、Linux和Solaris,現在已經發展到了OCFS2,通過OCFS2文件系統,多個集羣節點可以同時讀寫一個磁盤而不破壞數據,但對於大量讀寫的業務系統,性能不是很高。另外,oracle RAC也支持第三方的集羣文件系統,例如RedhatGFS等。

(3)網絡文件系統(NFS)

(4)Automated Storage Management

        Automated Storage Management,簡稱ASM,是Oracle推薦的共享數據存儲方式,它是Oracle數據庫10g包含的一個特性。ASM其實就是RAW方式存儲數據,但是加入了數據管理功能,它通過將數據直接寫入磁盤,避免了經過文件系統而產生的I/O消耗。因而,使用ASM可以很方便地管理共享數據並提供異步I/O的性能。ASM還可以通過分配I/O負載來優化性能,免除了手動調整I/O的需要。

 

3、 RAC數據庫體系機構與進程

3.2、Oracle RAC的特點

通過RAC數據庫,可以構建一個高性能、高可靠的數據庫集羣系統,RAC的優勢在於:

1可以實現多個節點間的負載均衡

       RAC數據庫集羣可以根據設定的調度策略,在集羣節點間實現負載均衡,因此,RAC數據庫每個節點都是工作的,同時也處於互相監控狀態,當某個節點出現故障時,RAC集羣自動將失敗節點從集羣隔離,並將失敗節點的請求自動轉移到其它健康節點上,從而實現服務透明切換。

2可以提供高可用服務

       這個是Oracle Clusterware實現的功能,通過CRS可以實現節點狀態監控,故障透明轉移,這保證了oracle數據庫可以對外不間斷的提供服務。

3)通過橫向擴展提高了併發連接數

       RAC這個優點非常適合大型的聯機事務系統中。

4通過並行執行技術提高了事務響應時間

       這個是RAC集羣的一大優勢,通常用於數據分享系統中。

(5)具有很好的擴展性

       在集羣系統不能滿足繁忙的業務系統時,RAC數據庫可以很方便的添加集羣節點,且可以在線完成節點的添加,並自動加入集羣系統,不存在宕機時間;同時在不需要某個集羣節點時,刪除節點也非常簡單。

3、 RAC數據庫體系機構與進程

       3.2、Oracle RAC的特點

       RAC數據庫也有一定的缺點:

       (1)與單機數據庫相比,管理維護更復雜,並對維護人員要求更高

       (2)底層規劃設計不好時,系統整體性能會較差,甚至不如單機系統的性能。所以,如果對RAC數據庫不是很瞭解,不建議馬上在生產環境中使用。

       (3)由於RAC集羣系統需要多個節點,那麼需要購買多臺服務器,同時需要oracle企業級版本數據庫,這無形中也增加了軟硬件成本。

3、 RAC數據庫體系機構與進程

       3.3、RAC進程管理

       RAC數據庫是由多個節點構成的,每個節點就是一個數據庫實例,而每個實例都有自己的後臺進程和內存結構,並且在RAC集羣中,每個實例的後臺進程和內存結構都是相同的,從整體上看起來,就像是一個單一數據庫的鏡像,但是,RAC數據庫在結構上與單實例庫也有不同之處:

(1)  RAC數據庫的每個實例至少擁有一個額外的重做線程(redo thread

(2)  RAC數據庫的每個實例都擁有自己的撤消表空間(undotablespace

       很顯然,這種機制是每個實例獨立的使用自己的重做線程和撤消表空間,各自鎖定自己修改的數據  RAC的這種設計方式,把多個實例的操作相對獨立的分開。

 

那麼RAC數據庫如何實現節點數據的一致性呢,其實每個RAC實例的SGA內有一個buffer cache(緩衝區),通過Cache Fusion(緩存融合)技術RAC在各個節點之間同步SGA中的緩存信息,從而保證了節點數據的一致性,同時也提高了集羣的訪問速度。

       RAC數據庫最大的特點是共享那麼如何實現多個節點有條不紊的數據共享呢,這就是要說的RAC的兩個進程:Global CacheService (GCS) the Global Enqueue Service (GES)

       全局緩存服務(GCS)和全局隊列服務(GES)是最基本的RAC進程,主要用於協調對共享數據庫和數據庫內的共享資源的同時訪問。同時,GESGCS通過使用全局資源目錄(Global Resource DirectoryGRD)來記錄和維護每個數據文件的狀態信息,GRD保存在內存中,內容分佈存儲在所有實例上。每個實例都管理部分內容。

3、 RAC數據庫體系機構與進程

       3.3、RAC進程管理

RAC中通過幾個特別的進程與GRD相結合,使得RAC可以使用緩存融合技術,這幾個特別進程是:

l      Global Cache Service Processes(LMSn)

LMS進程主要用來管理集羣內數據塊的訪問,並在不同實例的BUFFERCACHE中傳輸塊鏡像。

l      Global Enqueue Service Monitor(LMON)

LMON主要監視羣集內的全局資源和集羣間的資源交互,並管理實例和處理異常,以及集羣隊列的恢復操作。

l      Global Enqueue Service Daemon(LMD)

LMD進程主要管理對全局隊列和全局資源的訪問,並更新相應隊列的狀態,處理來自於其他實例的資源請求。

l      Lock Processes(LCK)

LCK進程主要用來管理實例間資源請求和跨實例調用操作,並管理除CacheFusion以外的資源請求,比如libraryrow cache的請求等。

l      Diagnosability Daemon(DIAG)

DIAG進程主要用來捕獲實例中失敗進程的診斷信息,並生成相應的TRACE文件。

發佈了209 篇原創文章 · 獲贊 23 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章