Oracle rac架構和原理


   

Oracle RAC

  Oracle Real Application Cluster (RAC,實時應用集群)用來在集群環境下實現多機共享數據庫,以保證應用的高可用性;同時可以自動實現並行處理及負載均衡,並能實現數據庫在故障時的容錯和無斷點恢復。它是oracle數據庫支持網絡計算環境的核心技術。它是oracle數據庫支持網絡計算環境的核心技術。

rac架構和原理" title="Oracle rac架構和原理" width="539" height="224">

 

  共享緩存技術 減少io負擔

 多主機共享一個數據庫,每個節點宕掉后,通過vip到下一個節點

rac架構和原理" title="Oracle rac架構和原理" width="690" height="484">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="507">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="450">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="433">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="496">

Oracle RAC的原理

    集群環境層面:

  並發控制,健忘症,腦裂,IO隔離;

     共享存儲層面:

  存儲層,網絡層,集群件層,應用層

    數據庫實例層面:

  並發訪問和控制

 

1、集群環境&共享存儲層面

 並發控制

Oracle RAC中,使用Distribute Lock Managerment(DLM)機制進行多個節點間並發訪問的控制

   健忘症(一個節點更改,其他人不知道)

整個集群只有一份集群配置信息,Oracle RAC使用OCR(oracle 集群注冊器) Disk文件解決

 

     腦裂

  在Oracle RAC中Voting Disk用來記錄節點間成員的狀態,出現腦裂時,通過投票機制,獲得最高票數或者最早達到的獲得投票的,幸存,其他節點被踢出。

 

     IO隔離

   Oracle RAC采取直接重啟故障節點來限制已剔除節點對共享數據的訪問

如果某個節點有故障,則踢出后並重啟該節點,達到不讓其訪問數據的目的,實現自愈

 

 

  共享存儲的共享和並發訪問

  需要解決存儲設備的共享和並發訪問問題

 

2、RAC層面

      - 存儲層

Cache fusion lock

 

   - 網絡層

    共4種網絡環境:

 Public網絡-對外提供數據查詢服務、數據庫維護等

 Virtua網絡-提供應用連接

 Private網絡-用於RAC心跳和cache fusion

存儲網絡-存儲設備、HBA卡、光纖交換機等組成

  

     集群件層

  Oracle clusterware:集群管理軟件保證多主機之間的協調工作

 

     應用層

  oracle RDBMS層面:由若干CRS Resourcezucheng

 oracel RAC提供高可用服務:LMON進程監控應用(CRS Resource),應用異常時對其進行重啟、切換等;

 

Oracle RAC 的關鍵技術

  Oracle  RAC的關鍵技術有:

  •     OCR Disk
  •   votiong
  •   vip
  •   DLM
  •   cache Fushion
  •   Failover
  •   loadbalance
  •   ASM

 

  OCR Disk

 

  OCR Disk主要用來解決集群的“健忘”問題

 在linux系統中信息如下:

rac架構和原理" title="Oracle rac架構和原理" width="530" height="120">

rac架構和原理" title="Oracle rac架構和原理" width="408" height="89">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="258">

不是每個節點都可以操作OCR Disk,每個節點上都有一份其內容的拷貝,在一塊叫OCR cache的內存中。

 

OCR master node:

  可以更改OCR Disk的節點

  負責更新本地和其他節點的OCR cache內容

 

OCR Disk每四個小時自動備份一次

 

Voting Disk

   voting Disk用來解決“腦裂”問題,仲裁哪個節點或者partition獲得集群的控制權。

  所以做RAC 至少兩塊盤

 在linux系統中信息如下:

rac架構和原理" title="Oracle rac架構和原理" width="453" height="118">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="139">

VIP

  Oracle RAC引入VIP,解決TCP/IP協議棧超時問題

 VIP和IP的不同是:VIP是浮動的,IP是固定到物理網卡上的。

 節點出現故障,VIP會漂移,保證業務連續性

  VIP故障,應用程序感知快,捕獲錯誤的時間大大縮短。

rac架構和原理" title="Oracle rac架構和原理" width="440" height="172">

rac架構和原理" title="Oracle rac架構和原理">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="272">

VIP 會在安裝clusterware的最后階段由vipca腳本創建,並作為CRS Resource注冊到OCR中,會綁定到每個節點的Public網卡上。

 

 DLM

   DLM(Distributed lock)分布式鎖管理器,負責協調節點間資源的競爭,保證並發的有效性,保護共享數據的安全性。

rac架構和原理" title="Oracle rac架構和原理">

 cache Fusion

  提供傳輸的擴展性,在實例間傳輸block的image,跟蹤資源的當前位置和狀態,每個實例的sga的目錄結構中保存現有傳輸資源信息。

    Cache fusion模型:

   Global Resource Directory由Global Cache Service來管理記錄資源的模式、資源的角色、block在實例中的狀態、在各個活動的節點發布資源的master、在必要的時候重新發布master(確如實例的啟動和關閉)

   Global Cache Service(GCS):

 三種資源模式:null(默認的),share(查詢),exclusive(x)可以block的內容,其他的實例就是null mode)

 

 兩種資源角色

    local:第一次請求資源的初始模式:只有一個實例可以有這個block的dirly copy global:當一個block在多個實例中變dirty時,local 就變成了global block,只能由global cacheservice寫到磁盤中

 

Cache fusion block的傳輸:

 例如:有ABCD四個節點,Global Cache Service:GCS

 

1.Read with no transfer

   如果C節點需要向共享磁盤文件上讀一個Block,那么它向GCS發送請求,這個時候請求被定向到D,D是這個Block的master(每個資源都有master)。GCS把資源授權為share mode和local Role,在目錄中記錄下了他的狀態(目錄在節點D),然后通知C,C把這個資源從Null改成share。C開始I/O,現在C有了這個Block以share模式從磁盤文件讀取權限。

  1. Read to write transfer

    B也要這個Block,並且不僅是讀,而且還要改變它的內容。B向D(這個Blocak的master)的GCS發出請求,GCS向C發出請求,要求C把這個Block給B,B收到后,告訴GCS,現在B可以修改這個Block了。

   3. Wirte to write transfer 

      A向D節點的GCS發出請求,GCS告訴B節點放棄他的Exclusive鎖,並且把當前的image傳到A,如果這個請求沒有完成,就會放到GCS的隊列里,B把這個block傳到A,這個時候,要寫log,強制log flush,把模式變成null。發送到A,並且告訴它這個exclusive的資源可以用了。A收到了這個Block的image,會通知GCS並且告訴它block的status是exclusive。這個時候,B不能對這個block做操作,雖然他的buffer cache中,它還有這個block的copy

   4.write to read transfer

         C要讀這個BLOCAK,先向D(master)發出請求,GCS要求A把它傳輸到C,A接受到請求完成它的工作,這可能會A寫LOG和log flush。在發送這個block之前,A會把它的exclusive鎖降低到share模式。C把從A收到的BLOCK的SCN取出來,建設成一個資源Assumption信息為GCS更新global resource directory。

 

 Failover

   Failover 是oracle RAC高可用性的基礎,它指集群中任何一個節點的故障都不會影響用戶的使用,連接到故障節點的用戶會被自動轉移到健康節點,用戶感知不到節點故障。

 

Failover方式:

   1.Client-side Connect time failover

 2.TAF

 3.Server-side TAF

 

1.client-side connect time failover

  含義:如果用戶端tnsnames中配置了多個地址,用戶發起連接請求時,會先嘗試連接地址表中的第一個地址,如果這個連接嘗試失敗,則繼續嘗試使用第二個地址,直至連接成功或者遍歷了所有的地址。

特點:只在建立連接那一時刻起作用。連接建立之后,節點出現故障都不會做處理。會話斷開、用戶程序必須重新建立連接。

啟用方法:在客戶端的tnsnames.ora中failover=on條目,這個參數默認就是on。tnsnames.ora配置實例如下:

rac架構和原理" title="Oracle rac架構和原理" width="690" height="112">

rac架構和原理" title="Oracle rac架構和原理" width="522" height="404">

rac架構和原理" title="Oracle rac架構和原理" width="529" height="500">

Loadbalance

  

  Loadbalance就是把負載平均的分配到集群的各個節點,從而提高整體的吞吐能。

  分散負載的方法:

1.通過connection balance,按照某種算法把用戶分配到不同的節點。也可認為是純技術的分散均衡

2.通過service 在應用層上進行分散,也可認為是面向業務的分散負載。(需要基於軟件開發)

 

Conection Bablancing

 在用戶請求建立連接時,根據每個節點的負載決定把連接分配給哪個實例。連接建立后,會話的所有操作就都在這個實例上完成,而不會分派給其他節點了

   1.1 客戶端均衡(Client-side LB)

   Oracle 8使用的方法,配置方法是在客戶端的insnames。ora文件中加入:LOAD_BALANCE=YES條目。當客戶端發起連接時,會從地址列表中隨機的選取一個,再使用隨機算法把連接請求分配到各個實例。

  缺點:由於隨機未考慮節點實際負載,可能出現負載不均衡情況。若在短時間內同時發起多個連接,有可能被分配到同一個節點(更壞:故障節點)

    Connection Balancing

   在用戶請求建立連接時,根據每個節點的負載決定把連接分配給哪個實例。連接建立后,會話的所有操作就都在這個實例上完成,而不會分派給其他節點了。

  1.2 服務器端均衡(server-side LB)

     有了PMON的自動注冊機制后,集群的每個節點的listener都掌握所有節點的負載情況,當收到客戶端連接請求時,就會把連接轉給負載最小的節點,這個節點有可能是自己也有可能是其他節點,

   listener的節點選擇方法根據用戶所請求的連接方式會有所不同:

  1)如果用戶請求的Delicate專有連接,listener首先選擇負載最小的節點,如果多個節點負載相同,則從節點選擇負載最小的實例。

  2) 如果用戶請求的是share server共享功能連接,除了做節點負載比較和實例負載比較之外,還要在所選擇實例上,選擇負載最小的dispatcher進行轉發。

    利用Service分散負載

 通過把應用按照功能模擬進行划分分成service,進而把每個service固定在某個RAC節點上,從而從根本上提升系統的性能。這種分散負載的方法不是僅靠DBA進行配置就能完成的,需要DBA和開發人員合作,在了解業務數據特點之后才可能看到效果。

 

  ASM

  ASM:Automatic Storage Managerment,一種面向Oracle的存儲解決方案與RDBMS相似,由實例和文件組成,可通過sqlplus工具來維護。

  ASM實例的創建和刪除也可以用ASMCA這個命令來操作。ASM實例需要CSS進程。

  ASM實例

 由SGA和后台進程組成。

 1.1 SGA組成

 ASM實例的SGA包括Buffer cache share pool,Large Pool等。需要注意的是share pool,因為extent map要放在這部分的內從中,需要根據數據量來估計extent map的大小做相應的調整。

SQL>show sga

rac架構和原理" title="Oracle rac架構和原理" width="625" height="277">

 ASM

 1.2 后台進程

 ASM實例比RDBMS實例多2個進程:RBAL和ABRn。

 RBAL:Rebalancer進程,負責規划ASM磁盤組的rebanlance活動。

 ABRn:是RBAL進程的子進程,可以有多個,n可取1-9,這組進程負責真正完成rebanlance活動。(可用ps-ef|grep asm 查看ASM相關的進程)

 使用ASM作為存儲的RDBMS實例也會多出2個進程:RBAL和ASMB

RBAL:打開每個磁盤的所有磁盤和數據的rebalance。

 ASMB:作為ASM實例和數據庫實例之間的信息通道。負責與ASM實例的通信,它先利用Diskgroup Name從CSS獲得管理該Diskgroup的ASM實例的連接串,再建立到ASM的持久連接,兩個實例之間通過這條連接定期交換信息,同時也是一種心跳機制。

  

  RDBMS實例想要使用ASM作為存儲,RDBMS實例必須在啟動時從ASM實例獲得extent map,以后發生磁盤組的維護操作,ASM實例還要把Extent MAP的更新信息通知給RDBMS實例,這個2個實例間的信息交換就是通過ASMB進程完成的。這也就是為什么:ASM實例必須要先於數據庫實例啟動,和數據庫實例同步運行,遲於數據庫實例關閉。

  ASM配置

 ASM可以使用裸設備或者ASMLib方式。

 ASM磁盤組

  直接管理磁盤,而不是文件

   一組磁盤作為一個邏輯單元

  原有的磁盤空間被划分為統一的管理單元

  ASM把文件均勻的分布在所有的磁盤上

  磁盤組中的磁盤可以不斷添加和應用類型分組

 

 自動的存儲管理

   內置的高性能集群文件和卷管理(專門針對Oracle數據文件)

   有效的分散數據到所有的存儲設備上,實現負載均衡,達到最優性能和資源利用

    集成的Mirroring和Strip功能,實現高可靠性和高性能

     簡化存儲管理的復雜性

    移除對第三方磁盤管理和文件系統的需要

Stripe:

   動態、聯機的重組存儲資源

  磁盤發生變化時,自動的重新平衡數據分布

  在存儲設置過程中,消滅了手工I/O調優的需要

rac架構和原理" title="Oracle rac架構和原理" width="670" height="82">

 Oracle RAC的優缺點

 Oracle RAC是一種高可用集群架構,與其他架構相比:

 1、資源使用

 雙機熱備:平時有一台服務器閑置

  雙機互備:每台服務器都要預留一部分資源,接管備用

   ORACLE RAC:每台服務器資源可以充分利用

2、維護管理

    雙機熱備:集群層面維護相對簡單,數據庫維護相同

    雙機互備:集群層面維護相對簡單,數據庫維護相同

    Oracle RAC:集群層面維護相對復雜,數據庫維護相同

 3、接管時間

       雙機熱備:基於操作系統層面,數據庫需要重啟,接管時間相對較長

       雙機互備:基於操作系統層面,數據庫需要重啟,接管時間相對較長

      Oracle RAC:基於數據庫層面,數據庫不需要重啟,接管時間相對較短

 4、性能狀況

       雙機熱備:數據庫相當於單點,數據庫性能好

       雙機互備:資源需要預留,數據性能相對單點差

      Oracle RAC:並發查詢性能好,針對不同業務和配置,事務處理能力不一致,性能表現不一致

 

 Oracle RAC架構的延伸

  Oracle RAC架構的延伸主要在以下幾方面:

 Oracle RAC和RMAN(基於數據庫還原、備份的工具):兩者結合,可更高地保障數據庫數據的安全性

  Oracle RAC和Data Guard(基於日志復制技術的數據同步軟件):兩者結合,解決共享存儲出現故障的問題

  Oracle RAC和Streams:兩者結合,構成分布式系統,解決Oracle RAC系統負載過高的問題

   Oracle RAC和Golden Gate

rac架構和原理" title="Oracle rac架構和原理" width="690" height="467">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="488">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="433">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="462">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="382">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="415">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="512">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="540">

rac架構和原理" title="Oracle rac架構和原理" width="690" height="634">


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM