RAC的作用
RAC可以提供實例級別的冗餘,避免單實例數據庫實例一旦出現故障會影響下游業務系統的問題,提供多個(n個)實例冗餘,即便n-1個實例出現故障,仍能保證業務的正常運行。
RAC一般與DataGuard用於主從結構的高可用災備解決方案,RAC用實例級的冗餘提供負載均衡與實例高可用性,DG用數據庫級冗餘提供數據存儲級高可用性和數據安全災備服務。
RAC的定義
以下引用自官方文檔:
Oracle Real Application Cluster :在服務器集群上運行,可調整集群中所有應用程序的
工作量,同時還提供以下功能:
• 集成式集群件:其中包括用於進行集群連接、消息傳送和鎖定、集群控制與恢復的
功能。在 Oracle Database 10g 或更高版本支持的所有平臺上均可使用這些功能。
• 自動工作量管理:可以定義一些規則,以便在正常操作和對故障作出響應期間將處理
資源自動分配給每個服務。用戶可以動態地修改這些規則,以滿足不斷變化的業務
需求。這種在數據庫網格中動態分配資源的功能是 Oracle RAC 特有的功能。
• 向中間層自動發送事件通知:集群配置發生更改後,中間層可以立即適應實例故障轉
移或可用的新實例。這樣,最終用戶在發生實例故障轉移時可繼續工作,不存在通常
由網絡超時引起的延遲。有新實例可用時,中間層可以立即開始與該實例建立負載平
衡連接。Oracle Database 10g 或更高版本中的 Java 數據庫連接 (JDBC) 驅動程序擁有
“快速連接故障轉移”功能,該功能可以自動啟用以處理以上事件。
總結一下,RAC是一種提供負載均衡高可用性的集群解決方案。RAC管理組件運用一定的規則控制協調集群內部多實例與該組件的互相通信,以達到自動管理、負載均衡、高可用等目的。
RAC的特點
1、集群內多臺服務器節點(m個)上存在多個實例(n個);
2、一個數據庫(database)文件系統存儲在共享存儲設備上,比如NAS、SAN;
3、實例之間通過內聯網絡及集成式集群件互相通訊、交換數據。
4、每一個節點的實例都有自己的SGA、後臺進程、Redo Logs、Undo Tablespace及參數配置文件(也可使用同一套公共的參數文件)。
RAC的缺陷
RAC並不能解決物理讀寫、數據安全等問題,因為不管多少個實例,數據都是存儲在一個共享存儲設備上。
儘管RAC可以通過多實例冗餘實現高可用性,但終究脫離不了集中式數據庫的本質,其與分佈式系統相比,硬盤讀寫速度、網絡帶寬及質量仍然是其瓶頸所在。因為它使用一套共享存儲系統,在多實例同時讀寫時,在網絡中傳輸大容量的數據顯然不如傳輸分發的數據處理任務訪問需要的數據分片方便快捷,而且分佈式集群中大部分任務都是使用局部本地數據庫,訪問速度效率更高。
RAC的網絡配置
對於RAC來說至少有兩套物理上不同的網絡,私有網絡是專門為實例之間的數據交互,公有網絡是專門對外提供服務的。
RAC節點負載均衡最佳實踐
Oracle提出的負載均衡基於最小負載的實現方法,增加了額外的cache fusion。在實際環境中,相似業務的最終用戶都將請求發送到同一RAC節點上。如果RAC系統有不同類型的最終用戶,我們會希望將負載均衡到不同的數據區域去。舉例來說,客戶處理可能在節點1上,訂單處理在節點2上,而產品處理則在節點3上。將RAC最終用戶通過數據需求來分組可以保證cache fusion負載降到最小。
RAC磁盤存儲管理最佳實踐
為了實施RAC系統,應該使用共享存儲設備因為很多服務器都必須同時存取磁盤。一個單實例數據庫可以使用Direct Attached Storage (DAS)這是一種連接到單一服務器上的一組廉價磁盤,而RAC則必須使用Storage Area Network (SAN),這是更昂貴更復雜的通常使用光纖通道連接到多個服務器的磁盤陣列。這需要一組獨立的硬件,從主機總線適配器連接到SAN上。因此DBA具有數據存儲層面的完整知識就顯得很重要。
閱讀更多 微科技分享 的文章