【趙強老師】Oracle RAC集羣的概念

1、什麼是Oracle RAC(Real Application Cluster)?

Oracle RAC 是一個具備共享緩存架構的集羣數據庫,它克服了傳統的無共享方法和共享磁盤方法的限制,爲您的全部業務應用提供了一種具備高度可擴展性和可用性的數據庫解決方案。Oracle RAC 是 Oracle 私有云架構的關鍵組成部分。

Oracle Real Application Clusters 能夠消除數據庫服務器單點故障問題,從而爲客戶提供優秀的數據庫可用性。在集羣服務器環境中,數據庫自己在服務器池之間實現共享,這意味着若是池中的任何服務器出現故障,數據庫將繼續在正常的服務器上運行。Oracle RAC 不只讓客戶可以在服務器發生故障時繼續處理數據庫負載,並且有助於縮短數據庫計劃內脫機維護時間,進而下降停機成本。

Oracle Real Application Clusters 支持在集羣服務器池上透明地部署 Oracle 數據庫。這讓客戶可以輕鬆地將單個服務器上的 Oracle 數據庫從新部署到數據庫服務器集羣上,從而充分利用集羣數據庫服務器提供的整合內存容量和處理能力。

Oracle Real Application Clusters 提供了全部必備的軟件組件,讓您能夠在服務器池上輕鬆部署 Oracle Database,充分利用集羣提供的性能、可擴展性和可用性。Oracle RAC 利用 Oracle Grid Infrastructure 做爲 Oracle RAC 數據庫系統的基礎。Oracle Grid Infrastructure 包括 Oracle Clusterware 和 Oracle 自動存儲管理 (ASM),能夠在高度可用和可擴展的數據庫雲環境中高效地共享服務器和存儲資源。算法

2、Oracle RAC的體系架構

 RAC與單實例最大的區別是,多個實例管理一個數據庫。這個數據庫必須安裝在共享存儲上。這樣的架構有以下優勢:數據庫

  • 高可用 其中某個或者某些實例宕機,並不影響該系統對外提供服務。
  • 高性能 集羣的事務處理功能大大加強,多個實例能夠併發的工做。
  • 可擴展 當系統性能遇到瓶頸時,經過增長節點能夠提升數據庫的性能。

RAC中的實例,除了有單實例固有的那些後臺進程,還會多一些用來進行RAC實例之間進行交互的進程。在RAC中,每一個實例有本身單獨的redo log和undo表空間。由於每一個實例都要獨自處理事務。可是這些redo和undo文件一樣要放置在共享磁盤中,由於一旦實例崩潰,其餘的實例要能讀取到該實例的redo和undo進行事務的恢復。緩存


RAC中引入了一個叫cache fusion的機制。也就是把全部機器的內存當成一個大的總體的內存來管理。

要管理這塊內存,Oracle引入了GCS(Global Cache Service)、GES(Global Enqueue Service)、GRD(Global Resource Directory)這三個概念。服務器

  • GRD:用來記錄數據庫cached block在各個instance上的分佈狀況,以及block的狀態。
  • GRD分佈在各個實例中,每一個實例維護GRD的一部分。
  • GRD由GCS和GES共同管理,GCS管理buffer cache中的數據塊緩存的一致性,GES管理數據塊的鎖信息。

既然每一個實例只維護GRD的一部分,那麼我要請求一個塊時,是否是每一個機器都要請求?顯然不是這樣的,由於這樣效率會很是的低。那麼GCS和GES會根據必定的算法,在RAC的各個節點中選擇出一個節點做爲Resource Master。這個Resource Master負責處理數據塊的請求。而且Resource Master會在內存中記錄每一個instance中GRD的索引。架構

相關文章
相關標籤/搜索