新聞中心
這篇文章主要介紹“Oracle的高可用集群方案有哪些”,在日常操作中,相信很多人在Oracle的高可用集群方案有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”O(jiān)racle的高可用集群方案有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、成都網(wǎng)站建設與策劃設計,沂南網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設10年,網(wǎng)設計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:沂南等地區(qū)。沂南做網(wǎng)站價格咨詢:18980820575
Oracle的三種高可用集群方案
1 RAC(Real Application Clusters)
多個Oracle服務器組成一個共享的Cache,而這些Oracle服務器共享一個基于網(wǎng)絡的存儲。這個系統(tǒng)可以容忍單機/或是多機失敗。不過系統(tǒng)內(nèi)部的多個節(jié)點需要高速網(wǎng)絡互連,基本上也就是要全部東西放在在一個機房內(nèi),或者說一個數(shù)據(jù)中心內(nèi)。如果機房出故障,比如網(wǎng)絡不通,那就壞了。所以僅僅用RAC還是滿足不了一般互聯(lián)網(wǎng)公司的重要業(yè)務的需要,重要業(yè)務需要多機房來容忍單個機房的事故。
2 Data Guard.(最主要的功能是冗災)
Data Guard這個方案就適合多機房的。某機房一個production的數(shù)據(jù)庫,另外其他機房部署standby的數(shù)據(jù)庫。Standby數(shù)據(jù)庫分物理的和邏輯的。物理的standby數(shù)據(jù)庫主要用于production失敗后做切換。而邏輯的standby數(shù)據(jù)庫則在平時可以分擔production數(shù)據(jù)庫的讀負載。
3 MAA
MAA(Maximum Availability Architecture)其實不是獨立的第三種,而是前面兩種的結(jié)合,來提供最高的可用性。每個機房內(nèi)部署RAC集群,多個機房間用Data Guard同步。
RAC概述
共享存儲文件系統(tǒng)(NFS),或甚至集群文件系統(tǒng)(如:OCFS2)主要被用于存儲區(qū)域網(wǎng)絡(所有節(jié)點直接訪問共享文件系統(tǒng)上存儲器),這就使得節(jié)點失效而不影響來自其他節(jié)點對文件系統(tǒng)的訪問,通常,共享磁盤文件系統(tǒng)用于高可用集群。
Oracle RAC的核心是共享磁盤子系統(tǒng),集群中所有節(jié)點必須能夠訪問所有數(shù)據(jù)、重做日志文件、控制文件和參數(shù)文件,數(shù)據(jù)磁盤必須是全局可用的,允許所有節(jié)點訪問數(shù)據(jù)庫,每個節(jié)點有它自己的重做日志和控制文件,但是其他節(jié)點必須能夠訪問它們以便在那個節(jié)點出現(xiàn)系統(tǒng)故障時能夠恢復。
Oracle RAC 運行于集群之上,為 Oracle 數(shù)據(jù)庫提供了最高級別的可用性、可伸縮性和低成本計算能力。如果集群內(nèi)的一個節(jié)點發(fā)生故障,Oracle 將可以繼續(xù)在其余的節(jié)點上運行。Oracle 的主要創(chuàng)新是一項稱為高速緩存合并的技術(shù)。高速緩存合并使得集群中的節(jié)點可以通過高速集群互聯(lián)高效地同步其內(nèi)存高速緩存,從而最大限度地低降低磁盤 I/O。高速緩存最重要的優(yōu)勢在于它能夠使集群中所有節(jié)點的磁盤共享對所有數(shù)據(jù)的訪問。數(shù)據(jù)無需在節(jié)點間進行分區(qū)。Oracle 是唯一提供具備這一能力的開放系統(tǒng)數(shù)據(jù)庫的廠商。其它聲稱可以運行在集群上的數(shù)據(jù)庫軟件需要對數(shù)據(jù)庫數(shù)據(jù)進行分區(qū),顯得不切實際。企業(yè)網(wǎng)格是未來的數(shù)據(jù)中心,構(gòu)建于由標準化商用組件構(gòu)成的大型配置之上,其中包括:處理器、網(wǎng)絡和存儲器。Oracle RAC 的高速緩存合并技術(shù)提供了最高等級的可用性和可伸縮性。Oracle 數(shù)據(jù)庫 10g 和 OracleRAC 10g 顯著降低了運營成本,增強了靈活性,從而賦予了系統(tǒng)更卓越的適應性、前瞻性和靈活性。動態(tài)提供節(jié)點、存儲器、CPU 和內(nèi)存可以在實現(xiàn)所需服務級別的同時,通過提高的利用率不斷降低成本。
RAC 集成集群件管理
Oracle RAC 10g 在 Oracle 數(shù)據(jù)庫 10g 運行的所有平臺上提供了一個完整集成的集群件管理解決方案。這一集群件功能包括集群連接、消息處理服務和鎖定、集群控制和恢復,以及一個工作負載管理框架(將在下文探討)。Oracle RAC 10g 的集成集群件管理具有以下優(yōu)勢:
(一) 成本低。Oracle 免費提供這一功能。
(二) 單一廠商支持。消除了相互推諉的問題。
(三) 安裝、配置和持續(xù)維護更簡單。Oracle RAC 10g 集群件使用標準 Oracle 數(shù)據(jù)庫管理工具進行安裝、配置和維護。這一過程無須其它的集成步驟。
(四) 所有平臺,質(zhì)量始終如一。與第三方產(chǎn)品相比,Oracle 對新軟件版本進行了更嚴格的測試。
(五) 所有平臺,功能始終如一。例如,一些第三方集群件產(chǎn)品限制了集群內(nèi)可以支持的節(jié)點的數(shù)量。借助Oracle RAC 10g,所有平臺可以支持多達 64 個節(jié)點。用戶還可以在所有平臺上獲得一致的響應體驗,從而有效解決了高可用性挑戰(zhàn),包括服務器節(jié)點故障、互連故障以及 I/O 隔離現(xiàn)象等。
(六) 支持高級功能。這包括集成監(jiān)視和通知功能,從而在發(fā)生故障時,在數(shù)據(jù)庫和應用層之間實現(xiàn)快速協(xié)調(diào)的恢復。
RAC 的體系結(jié)構(gòu)
RAC 是 Oracle 數(shù)據(jù)庫的一個群集解決方案,是有著兩個或者兩個以上的數(shù)據(jù)庫節(jié)點協(xié)調(diào)運作能力的。如下圖所示的 RAC 結(jié)構(gòu)圖:
集群管理器(Cluster Manager)在集群系統(tǒng)中對其他各個模塊進行整合,通過高速的內(nèi)連接來提供群集節(jié)點之間的通信。各節(jié)點之間內(nèi)連接使用心跳線互聯(lián),心跳線上的信息功能確定群集邏輯上的節(jié)點成員信息和節(jié)點更新情況,以及節(jié)點在某個時間點的運行狀態(tài),保證群集系統(tǒng)正常運行。通信層管理節(jié)點之間的通信。它的職責是配置,互聯(lián)群集中節(jié)點信息,在群集管理器中使用由心跳機制產(chǎn)生的信息,由通信層負責傳輸,確保信息的正確到達。還有一些群集監(jiān)視進程不斷驗證系統(tǒng)的不同領(lǐng)域運行狀況。例如,心跳監(jiān)測不斷驗證的心跳機制的運作是否良好。在一個應用環(huán)境當中,所有的服務器使用和管理同一個數(shù)據(jù)庫,目的是分散每一臺服務器的工作量。硬件上至少需要兩臺以上的服務器,而且還需要一個共享存儲設備;同時還需要兩類軟件,一類是集群軟件,另外一類就是 Oracle 數(shù)據(jù)庫中的 RAC 組件。同時所有服務器上的 OS 都應該是同一類 OS,根據(jù)負載均衡的配置策略,當一個客戶端發(fā)送請求到某一臺服務的 listener 后,這臺服務器根據(jù)負載均衡策略,會把請求發(fā)送給本機的 RAC組件處理,也可能會發(fā)送給另外一臺服務器的 RAC 組件處理,處理完請求后,RAC 會通過群集軟件來訪問共享存儲設備。邏輯結(jié)構(gòu)上看,每一個參加群集的節(jié)點有一個獨立的實例,這些實例訪問同一個數(shù)據(jù)庫。節(jié)點之間通過集群軟件的通信層(Communication Layer)來進行通信。同時為了減少 I/O 的消耗,存在一個全局緩存服務,因此每一個數(shù)據(jù)庫的實例,都保留了一份相同的數(shù)據(jù)庫 cache。RAC 中的特點如下:
l 每一個節(jié)點的實例都有自己的 SGA;
l 每一個節(jié)點的實例都有自己的后臺進程
l 每一個節(jié)點的實力都有自己的 redo logs
l 每一個節(jié)點的實例都有自己的 undo 表空間
l 所有節(jié)點都共享一份 datafiles 和 controlfiles
RAC 的結(jié)構(gòu)組成和機制
在 Oracle9i 之前,RAC 稱為 OPS(Oracle Parallel Server)。RAC 與 OPS 之間的一個較大區(qū)別是,RAC 采用了Cache Fusion(高緩存合并)技術(shù),節(jié)點已經(jīng)取出的數(shù)據(jù)塊更新后沒有寫入磁盤前,可以被另外一個節(jié)點更新,然后以最后的版本寫入磁盤。在 OPS 中,節(jié)點間的數(shù)據(jù)請求需要先將數(shù)據(jù)寫入磁盤,然后發(fā)出請求的節(jié)點才可以讀取該數(shù)據(jù)。使用 Cache Fusion 時,RAC 的各個節(jié)點間數(shù)據(jù)緩沖區(qū)通過高速、低延遲的內(nèi)部網(wǎng)絡進行數(shù)據(jù)塊的傳輸。下圖是一個典型的 RAC 對外服務的示意圖,一個 Oracle RAC Cluster 包含了如下的部分
集群的節(jié)點(Cluster node)——2 個到 N 個節(jié)點或者主機運行 Oracle Database Server。
私有網(wǎng)絡(Network Interconnect)——RAC 之間需要一個高速互聯(lián)的私有網(wǎng)絡來處理通信和 Cache Fusion。
共享存儲(shared Storage)——RAC 需要共享存儲設備讓所有的節(jié)點都可以訪問數(shù)據(jù)文件。
對外服務的網(wǎng)絡(Production Network)——RAC 對外服務的網(wǎng)絡。客戶端和應用都通過這個網(wǎng)絡來訪問。
RAC 后臺進程
Oracle RAC 有一些自己獨特的后臺進程,在單一實例中不發(fā)揮配置作用。如下圖所示,定義了一些 RAC 運行的后臺進程。這些后臺進程的功能描述如下。
(1)LMS(Global cache service processes 全局緩存服務進程)進程主要用來管理集群內(nèi)數(shù)據(jù)塊的訪問,并在不同實例的 Buffer Cache 中傳輸數(shù)據(jù)塊鏡像。直接從控制的實例的緩存復制數(shù)據(jù)塊,然后發(fā)送一個副本到請求的實例上。并保證在所有實例的 Buffer Cache 中一個數(shù)據(jù)塊的鏡像只能出現(xiàn)一次。LMS 進程靠著在實例中傳遞消息來協(xié)調(diào)數(shù)據(jù)塊的訪問,當一個實例請求數(shù)據(jù)塊時,該實例的 LMD 進程發(fā)出一個數(shù)據(jù)塊資源的請求,該請求指向主數(shù)據(jù)塊的實例的 LMD 進程,主實例的 LMD 進程和正在使用的實例的 LMD 進程釋放該資源,這時擁有該資源的實例的 LMS 進程會創(chuàng)建一個數(shù)據(jù)塊鏡像的一致性讀然后把該數(shù)據(jù)塊傳遞到請求該資源的實例的BUFFER CACHE 中。LMS 進程保證了在每一時刻只能允許一個實例去更新數(shù)據(jù)塊,并負責保持該數(shù)據(jù)塊的鏡像記錄(包含更新數(shù)據(jù)塊的狀態(tài) FLAG)。RAC 提供了 10 個 LMS 進程(0~9),該進程數(shù)量隨著節(jié)點間的消息傳遞的數(shù)據(jù)的增加而增加。(2)LMON(Lock Monitor Process,鎖監(jiān)控進程)是全局隊列服務監(jiān)控器,各個實例的 LMON 進程會定期通信,以檢查集群中各個節(jié)點的健康狀況,當某個節(jié)點出現(xiàn)故障時,負責集群重構(gòu)、GRD 恢復等操作,它提供的服務叫做 Cluster Group Service(CGS)。
LMON 主要借助兩種心跳機制來完成健康檢查。
(一) 節(jié)點間的網(wǎng)絡心跳(Network Heartbeat):可以想象成節(jié)點間定時的發(fā)送 ping 包檢測節(jié)點狀態(tài),如果能在規(guī)定時間內(nèi)收到回應,就認為對方狀態(tài)正常。
(二) 通過控制文件的磁盤心跳(controlfile heartbeat):每個節(jié)點的 CKPT 進程每隔 3 秒鐘更新一次控制文件的數(shù)據(jù)塊,這個數(shù)據(jù)塊叫做 Checkpoint Progress Record,控制文件是共享的,所以實例間可以互相檢查對方是否及時更新來判斷。
(三) LMD(the global enqueue service daemon,鎖管理守護進程)是一個后臺進程,也被稱為全局的隊列服務守護進程,因為負責對資源的管理要求來控制訪問塊和全局隊列。在每一個實例的內(nèi)部,LMD 進程管理輸入的遠程資源請求(即來自集群中其他實例的鎖請求)。此外,它還負責死鎖檢查和監(jiān)控轉(zhuǎn)換超時。
(四) LCK(the lock process,鎖進程)管理非緩存融合,鎖請求是本地的資源請求。LCK 進程管理共享資源的實例的資源請求和跨實例調(diào)用操作。在恢復過程中它建立一個無效鎖元素的列表,并驗證鎖的元素。由于處理過程中的 LMS 鎖管理的首要職能,只有一個單一的 LCK 進程存在每個實例中。
(五) DIAG(the diagnosability daemon,診斷守護進程)負責捕獲 RAC 環(huán)境中進程失敗的相關(guān)信息。并將跟蹤信息寫出用于失敗分析,DIAG 產(chǎn)生的信息在與 Oracle Support 技術(shù)合作來尋找導致失敗的原因方面是非常有用的。每個實例僅需要一個 DIAG 進程。
(六) GSD(the global service daemon,全局服務進程)與 RAC 的管理工具 dbca、srvctl、oem 進行交互,用來完成實例的啟動關(guān)閉等管理事務。為了保證這些管理工具運行正常必須在所有的節(jié)點上先start gsd,并且一個 GSD 進程支持在一個節(jié)點的多個 rac.gsd 進程位ORACLEHOME/bin目錄下,其log文件為ORACLEHOME/bin目錄下,其log文件為ORACLE_HOME/srvm/log/gsdaemon.log。GCS 和 GES 兩個進程負責通過全局資源目錄(Global Resource Directory GRD)維護每個數(shù)據(jù)的文件和緩存塊的狀態(tài)信息。當某個實例訪問數(shù)據(jù)并緩存了數(shù)據(jù)之后,集群中的其他實例也會獲得一個對應的塊鏡像,這樣其他實例在訪問這些數(shù)據(jù)是就不需要再去讀盤了,而是直接讀取 SGA 中的緩存。GRD 存在于每個活動的 instance 的內(nèi)存結(jié)構(gòu)中,這個特點造成 RAC 環(huán)境的 SGA 相對于單實例數(shù)據(jù)庫系統(tǒng)的 SGA 要大。其他的進程和內(nèi)存結(jié)構(gòu)都跟單實例數(shù)據(jù)庫差別不大。
RAC 共享存儲
RAC 需要有共享存儲,獨立于實例之外的信息,如上面提到的ocr 和 votedisk 以及數(shù)據(jù)文件都存放在這個共享存儲里的。有OCFS、OCFS2、RAW、NFS、ASM 等這樣的一些存儲方式。OCFS(Oracle Cluster File System) 和 OCFS2 就是一個文件系統(tǒng)而已,和 NFS 一樣,提供一種集群環(huán)境中的共享存儲的文件系統(tǒng)。RAW 裸設備也是一種存儲方式,是 oracle11g 之前的版本中 RAC 支持的存儲方式,在 Oralce9i 之前,OPS/RAC的支持只能使用這樣的方式,也就是把共享存儲映射到 RAW Device,然后把 Oracle 需要的數(shù)據(jù)選擇 RAW device存儲,但是 RAW 相對于文件系統(tǒng)來說不直觀,不便于管理,而且 RAW Device 有數(shù)量的限制,RAW 顯然需要有新的方案來代替,這樣就有了 OCFS 這樣的文件系統(tǒng)。當然,這只是 Oracle 自己的實現(xiàn)的集文件系統(tǒng)而已,還有其他廠商提供的文件系統(tǒng)可以作為存儲的選擇方案。ASM 只是數(shù)據(jù)庫存儲的方案而已,并不是 cluster 的方案,所以這里 ASM 應該是區(qū)別于 RAW 和 OCFS/OCFS2同一級別的概念,RAW 和 OCFS/OCFS2 不僅可以作為數(shù)據(jù)庫存儲的方案,同時也可以作為 Clusterware 里的存儲方案,是 CRS 里需要的 storage,而 ASM 僅作為數(shù)據(jù)庫的存儲而已,嚴格來說僅是 RAC 中的一個節(jié)點應用(nodeapps)。ASM 對于 clusterware 安裝時需要的 ocr 和 votedisk 這兩項還不支持,畢竟 ASM 本身就需要一個實例,而 CRS 是完全在架構(gòu)之外的,這也就是為什么使用了 ASM 的方案,卻總還要加上 OCFS/OCFS2 和 RAW 其中的一個原因。各種 RAC 共享存儲方式的對比如下:
集群文件系統(tǒng)——支持 windows 和 Linux 的 OCFS/OCFS2
AIX 下的 GPFS 等方式——優(yōu)點是管理方便,表示也很直觀,但缺點是基于文件系統(tǒng)管理軟件,又要經(jīng)過 OS 的 cache 處理,性能上和穩(wěn)定性上都有欠缺,所以不適合在生產(chǎn)環(huán)境下使用??梢灾С?CRS 集群軟件文件和數(shù)據(jù)庫文件。
RAW 裸設備方式——通過硬件支持的共享存儲系統(tǒng),直接用 RAW 設備存儲,可以支持集群軟件文件和數(shù)據(jù)庫文件。
網(wǎng)絡文件系統(tǒng)(NFS)——通過 NFS 實現(xiàn)共享存儲,不過需要經(jīng)過 Oracle 認證的 NFS 才行,可以支持CRS 集群軟件文件和數(shù)據(jù)庫文件。
ASM——集合 RAW 方式 I/O 高性能和集群文件系統(tǒng)易管理等優(yōu)點,Oracle10g 下推出的共享存儲方式,但是本身 ASM 就是需要 Oracle 的實例支持,所以 ASM 僅支持數(shù)據(jù)庫文件,而不支持 CRS 文件。
RAC 數(shù)據(jù)庫和單實例數(shù)據(jù)庫的區(qū)別
為了讓 RAC 中的所有實例能夠訪問數(shù)據(jù)庫,所有的 datafiles、control files、PFILE/Spfile 和 redo log files 必須保存在共享磁盤上,并且要都能被所有節(jié)點同時訪問,就涉及到裸設備和集群文件系統(tǒng)等。RAC database 在結(jié)構(gòu)上與單實例的不同之處:至少為每個實例多配置一個 redo 線程,比如:兩個實例組成的集群至少要 4 個 redo log group。每個實例兩個 redo group。另外要為每一個實例準備一個 UNDO 表空間。
1、redo 和 undo,每個實例在做數(shù)據(jù)庫的修改時誰用誰的 redo 和 undo 段,各自鎖定自己修改的數(shù)據(jù),把不同實例的操作相對的獨立開就避免了數(shù)據(jù)不一致。后面就要考慮備份或者恢復時 redo log 和歸檔日志在這種情況下的特殊考慮了。
2、內(nèi)存和進程各個節(jié)點的實例都有自己的內(nèi)存結(jié)構(gòu)和進程結(jié)構(gòu).各節(jié)點之間結(jié)構(gòu)是基本相同的.通過 Cache Fusion(緩存融合)技術(shù),RAC 在各個節(jié)點之間同步 SGA 中的緩存信息達到提高訪問速度的效果也保證了一致性。
到此,關(guān)于“Oracle的高可用集群方案有哪些”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
文章標題:Oracle的高可用集群方案有哪些
文章網(wǎng)址:http://fisionsoft.com.cn/article/ieojjj.html