首頁  >  文章  >  資料庫  >  Oracle經典技巧RAC詳解

Oracle經典技巧RAC詳解

WBOY
WBOY轉載
2022-03-14 17:28:113808瀏覽

這篇文章為大家帶來了關於Oracle的相關知識,其中主要介紹了RAC的相關問題,Oracle Real Application Cluster用來在叢集環境下實現多機共享資料庫,以保證應用程式的高可用性,希望對大家有幫助。

Oracle經典技巧RAC詳解

推薦教學:《Oracle教學

應對業務量的不斷增加場景通常有兩個大方向,一種是縱向擴展,也就是增加單一伺服器的CPU運算能力、記憶體容量和磁碟承載能力等;另一種是橫向擴展,也就是透過增加伺服器的數量來增加處理能力。前者存在業務中斷和擴展上限等諸多的問題,特別是互聯網業務的迅猛發展,單台伺服器幾乎無法滿足業務負載要求,因此目前比較流行的方式橫向擴展的方式。

什麼是Oracle RAC?

Oracle Real Application Cluster (RAC,即時應用叢集)用來在叢集環境下實現多機共享資料庫,以確保應用程式的高可用性;同時可以自動實現並行處理及負載平衡,並能實現資料庫在​​故障時的容錯和無斷點復原。它是oracle資料庫支援網路運算環境的核心技術。

共享儲存多活集群

在該架構中叢集中多個節點運行的是同一個資料庫實例,資料完全一致,且使用者層面無論從哪個節點訪問,獲取到的資料都是相同的。下圖是Oracle RAC的示意圖,透過3個節點構成一個集群,它們共享資料。
Oracle經典技巧RAC詳解
RAC 的特點可總結如下:

  • 節點互聯起來,向外顯示為1台伺服器;
  • 叢集軟體把內部結構遮蔽起來;
  • 磁碟是共享的;
  • 每台機器使用相同的作業系統;
  • 多個實例存取同一個資料庫;
  • 每個節點有一個實例;
  • 資料庫檔案支援物理或邏輯存取;
  • 資料的讀寫透過軟體控制。

Oracle經典技巧RAC詳解
Oracle經典技巧RAC詳解

Oracle RAC和單一資料庫伺服器的差異

如下圖,主要差異還是RAC是叢集式資料庫,透過集群軟體管理。
Oracle經典技巧RAC詳解
Oracle經典技巧RAC詳解

Oracle RAC硬體架構

為了確保整個叢集的可用性,Oracle RAC在部署的時候對硬體有比較多的要求。在網路層面,Oracle RAC總共有3個網路系統,分別是外部存取網路、內部私有網路和儲存網路。

外部存取網路不用多說,相信大家都理解。內部私有網路則主要用來進行Oracle叢集內部使用,包括資料傳輸、心跳和叢集管理等。這部分網路在部署的時候要求雙交換器和雙實體鏈路,保證不會因為鏈路故障導致群集異常。後面是儲存網絡,儲存網路用於RAC叢集存取儲存資源,這部分也是鏈路冗餘的。
Oracle經典技巧RAC詳解

再例如下圖,為一個兩節點RAC系統,可以看出,從主機到交換機,都做了冗餘,無論哪台設備出了故障,業務不會受影響。共享儲存是自帶RAID冗餘的。
Oracle經典技巧RAC詳解
其中,主機叫做節點(Node),它們要有相同的CPU、內存等配置,每台至少兩個網卡,訪問內外網,還有HBA卡連接共享存儲,但更多是透過FC交換器連接到FC儲存陣列。共享存儲是RAC架構中的核心,絕大部分的文件都在共享存儲,很多功能都是為了共享存儲的安全性而開發。一般是光纖透過FC介面連接,運行SCSI協定。

Oracle RAC軟體架構

如下圖,是個雙節點RAC系統,Oracle RDBMS是資料庫軟體,Oracle Clusterware是叢集軟體。驅動主要是網卡,HBA卡,ASMLib等。

每個節點上必須是相同的作業系統,版本必須一致,包括修補程式號碼等。如作業系統: RHEL AS 4.8 64bit,Linux核心版本: 2.6.9-89.EL。
Oracle經典技巧RAC詳解
為了更深入的理解Oracle RAC我們來看看其內部軟體模組的組成。整個資料庫層面沒有太多差異,這裡面主要多出如下內容:虛擬IP(VIP)、ASM、Clusterware和仲裁磁碟。這些新組件配合起來完成了Oracle的多活集群功能。

虛擬IP是應用存取資料庫的入口,該IP並非與任何伺服器綁定,而是可以在叢集的任意伺服器間漂移。由於具有這個特性,當出現伺服器宕機等情況時,資料庫叢集可以保證透過相同的介面對外提供服務。
Oracle經典技巧RAC詳解
ASM與Clusterware實現了叢集管理功能,其中ASM實現對磁碟的管理,避免同時存取磁碟導致資料不一致的風險,而Clusterware則用於管理Oracle叢集的軟體進程及資源調度。

仲裁磁碟用於叢集中伺服器的異常判斷,叢集中的節點透過定時更新仲裁磁碟中特定區域的資料標示自身的健康狀態。其它節點可以根據該資料判斷該節點是否宕機。

邏輯結構

下圖是Oracle RAC的邏輯結構,後面將依序介紹裡面的各個元件。
Oracle經典技巧RAC詳解

DLM:並發控制

每個節點都有對等的權利存取共享儲存的數據,Oracle RAC使用Distribute Lock Management( DLM)進行多個節點間並發存取的控制。分散式鎖定管理器負責協調節點間對共享資源的競爭,節點存取資料時,先透過DLM申請,確認不會和其他節點衝突時才能使用。

OCR:健忘症

健忘症:如果每個節點都有一份叢集配置訊息,那麼如果修改配置後沒有同步就會出錯。

所以,叢集只能有一個配置訊息,所有節點共享。 Oracle RAC使用OCR Disk檔案解決健忘症。

OCR Disk只有Master節點才能修改,每個節點都有一份Copy,在OCR Cache記憶體中。節點要修改OCR Disk時,請請求Master節點,該節點上OCR程序更新本地和其他節點OCR Cache內容。 OCR Disk每隔幾個小時定期備份。

Voting Disk:腦裂

腦裂:集群中節點之間透過心跳偵測來知道對方是不是好的,如果心跳出了問題,節點雙方都認為對方出錯了,就會要求獨享數據,這樣就會破壞數據的一致性。

Voting Disk用來記錄節點間成員的狀態,出現腦裂的時候,選擇票數高的取得控制權,踢出其他節點。

IO隔離:踢出去的節點,不能再讓它存取數據,所以要做IO隔離。 Oracle RAC的機制就是重啟故障節點。

Cache Fusion Lock

資料庫檔案是共用的,Cache Fusion Lock是在叢集層級之外解決儲存共用、並發存取控制。

四種網路

1.Public網路:用Public IP,對外提供資料查詢、資料庫維護、伺服器維護。

2.Virtual網路:用Virtual IP,提供應用程式連接,應用程式使用該IP。

TCP/IP協定中,TCP Header包含來源和目標端口,IP header包含來源和目標IP,應用層的資料庫監聽記錄IP和端口,在TCP逾時時知道資料庫或監聽出了問題。 TCP/IP協定棧逾時時間由OS決定,每個OS定義不一樣。為了縮短捕獲錯誤的時間,Oracle RAC使用了VIP。 Virtual IP是浮動的,並不與實體網卡綁定,某個節點故障,則VIP移到好的節點上,但好節點的監聽裡找不到該VIP,應用程式會立刻發現問題,轉而向其他VIP發送連線請求。

3.Private網路:使用Private IP,用於RAC心跳偵測和Cache Fusion Lock,速度要求很高。

4.儲存網路:儲存設備、HBA卡、FC網路組成。

Oracle Clusterware

單機的時候只要OS就可以處理上層請求,但是多機的時候,集群管理軟體Oracle Clusterware會在OS核心之前截獲對其他節點的請求,和其他節點的Clusterware通訊完成請求。

應用層:RDBMS

應用層由若干CRS Resource組成,每個resource是若干個行程組成的完整服務。 LMON(Lock Monitor)監控CRS Resource,異常時進行重新啟動、切換等,確保Oracle RAC服務的高可用性。

Cache Fusion

Cache Fusion從字面就可以理解-快取融合,其實就是把各個節點的快取統一管理起來,避免了每次讀都是操作磁碟,加速IO效能。因為Private網路速度很快,比讀磁碟快。從不同位置讀取資料塊的時間:

  • 本機Cache:0.01 ms
  • 網路存取其他節點Cache:2.5 ms
  • 磁碟:14 ms。但現在有了儲存端的SSD或是全快閃陣列後,延遲就在1 ms左右了。所以有了全快閃陣列後,Cache Fusion估計就沒有意義了。

Cache Fusion透過GCS(Global Cache Service)管理,就是把大家的Cache看成是一個大Cache。

讀Cache流程

Oracle經典技巧RAC詳解

寫Cache流程

Oracle經典技巧RAC詳解

寫入磁碟流程

Oracle經典技巧RAC詳解

負載平衡

使用者像RAC發起各種請求的時候,負載平衡負責把任務平攤到不同機器上。

依照使用者分配

是從幾個機器裡面隨機的挑一個嗎? NO!那也太Low了,RAC會依照每台機器的狀態動態來分配任務。資料庫運行時,PMON後台進程節點的負載信息,登記到Listener,1-10分鐘更新一次。每個節點的Listener知道所有節點的負載狀況,把客戶端請求發給最閒的節點。

依服務分配

依照使用者分配有缺點,就是可能讓Cache Fusion更忙了。因為RAC節點資料共享,大家透過Cache Fusion同步數據,RAC的效能很大程度受限於Cache Fusion效能。要嘛讓Private網路更牛,例如用昂貴的InfiniBand,另一種是減少Cache Fusion的流量,其實就是減少節點實例之間的依賴。而依使用者分配的機制無益於後面的方案。

所以RAC支援根據服務分配節點,例如生產和銷售用不同節點,自己的資料都在自己的Cache裡面,就不用造訪別的節點了。性能得到提升。

三類叢集

  • 負載平衡叢集:以一定演算法將請求指派給不同成員;
  • 高效能叢集(HPC,High Performance Cluster):採用向量處理器等專用軟硬體組成的牛逼機器,運算效能強悍,價格超貴,例如天河電腦;
  • 高可靠性叢集(HAC:High Available Cluster,Failover Cluster):可靠性非常好,硬體和軟體的容錯性很強,日常使用的資料庫叢集屬於這類。

高可靠性集群

雙機熱備

平時有一個閒著待命,幹活的掛了,就讓候補的頂替。
Oracle經典技巧RAC詳解
雙機互備

平常兩台都乾自己的活,但是要預留一部分資源,因為有一個掛了,另一個就得乾兩個人的活。
Oracle經典技巧RAC詳解
雙機雙工

舉例:

老大老二合開一家店,平時老大主要賣包子,老二主要賣豆漿,老大有問題,老二就又賣包子,又賣豆漿,老二不行了,老大就又賣包子,又賣豆漿。

包子豆漿是數據,互相照應叫做心跳檢測,頂替對方工作叫做failover(故障轉移)。如果兩個兄弟突然都瞎了聾了,不知道現在對方到底是否正在幹活,都認為自己要頂對方的工作,這個叫做腦裂,然後需要第三者,比如他們的老爹來解決問題,這個叫做表決,或是讓他們兩個的媳婦過來拉走其中一個,這個叫做IO隔離。 Oracle RAC就是這一類,效能最好,系統最複雜。

Oracle經典技巧RAC詳解

推薦教學:《Oracle學習教學

以上是Oracle經典技巧RAC詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除