Oracle數據庫HA架構方案介紹
摘要:Oracle數據庫在各類應用系統中負責存儲平臺所有的用戶數據,數據庫的可靠性及安全性直接影響平臺的安全運行,目前采用的Oracle Replication方式來實現的數據庫高可靠性已經顯示出了弊端,本文介紹并分析了目前比較流行的幾種數據庫高可用性的架構:Oracle Replication、Oracle Rac、Oracle 主機HA等,希望給大家一個參考。
1 什么是高可用性(High Availability)
高可用(HA)性有兩種不同的含義,在廣義環境中是指整個系統的高可用性,在狹義方面一般指主機、服務的冗余,如主機HA、應用程序的HA等,無論那種情況,高可用性都可以包含如下一些方面:
? 系統失敗或崩潰
? 應用層或者中間層錯誤
? 網絡失敗
? 介質失敗:指一些存放數據的媒體介質故障
? 人為錯誤
? 系統的容災備份
? 計劃內的維護或者重啟
可見,高可用性不僅包含了系統本身故障、應用層的故障、網絡故障、認為操作的錯誤等,還包含數據的冗余、容災及計劃的維護時間等,也就是說一個真正的高可用環境,不僅能避免系統本身的問題,還應該能防止天災、人禍,并且有一個可靠的系統升級及計劃維護操作。
本文探討的Oracle 數據庫層面的高可用性,不可避免也會涉及到一些主機、存儲、操作系統方面的高可用性,因為要實現Oracle服務的連續性保障是離不開硬件層面的支持 的。隨著Oracle技術的發展(Oralce 8i/9i/10g/11g),高可用性越來越完善、越來越可靠,本文介紹了四種Oracle 高可用性的相關產品,并通過其實現方式和性能的比較得到在現在和未來的Vas2000系統中更適合的數據庫高可用性方案:
? Oracle Parallel Server/Oracle Real Application Cluster(Oracle Rac)
? Oracle Standby Database/Oracle Data Guard
? Oracle Advanced Replication/Oracle Stream
? Oracle Server HA
2 Oracle并行數據庫OPS/RAC
OPS 從Oracle 8i開始提供,從Oracle 9i開始成為RAC,并且隨著高性能PC SERVER的普及,Oracle Rac也成為Oracle高可用性產品最流行的一種架構,Oracle Rac通過組織多個服務器的Cluster來獲得更大的計算處理能力和故障處理能力的集群。
2.1 Oracle RAC架構介紹
RAC通過不同的節點(node)使用一個(一般是一個)或者多個Oracle實例(Instance)與一個數據庫(Database)連接,該 數據庫存放于多個節點的公用存儲(Share Storage)上,通過高速緩存合并技術使得集群中的每個節點可以通過高速集群互聯高效的同步其內存高速緩存,從而最大限度地減低磁盤IO,并且自動 并行處理及均勻分布負載,當其中一個節點發生故障時可以自動容錯和恢復能力來實現節點的故障切換(Failover),從而保證數據庫7X24小時的高可 用性,下圖1 是以兩個節點為例來簡單介紹一個RAC架構的軟、硬件結構:
圖1 Oracle RAC結構圖
在上圖的結構中采用了2節點(node)的RAC,通過共享的存儲介質使兩個節點同時訪問Database,在實際的工作環境中共享存儲一般通過存 儲網絡(SAN)提供,應用層服務器通過連接RAC的VIP(Virtual IP)負載均衡的連接到任何一個節點提供服務,當其中的任何一個節點發生故障時,另一個正常的節點可以自動接管其服務,對于應用來說不需要做任何切換, 只需通過VIP的自動跳轉來實現失敗節點的切換,在故障切換時Oracle會自動恢復故障節點中的事物,以便使整個數據庫處于一致狀態,整個切換過程一般 持續1~5分鐘,具體取決于應用環境的壓力大小和復雜程度。
Oracle RAC除了硬件的組成外,還需要Oracle的軟件組件來支持,主要包含如下5個層次的軟件環境:
? CRS:Oracle 10g以上版本的Cluster軟件,管理整個RAC環境,包括VIP、監聽、ASM、DB等,除了Oracle自己的Cluster軟件外,目前也有 很多第三方的Cluster軟件可用,比如:Sun Cluster、Lifekeeper、Leagto等,可以根據具體部署環境的要求來選擇
? RAC:Oracle的Cluster支持組件
? Listener:監聽與Oracle網絡
? ASM Inst:ASM的實例,提供存儲管理,使得存儲空間之間可以提供給Cluster數據庫使用,在很多OS上如果使用了第三方的Cluster軟件則必須采用第三方的存儲管理軟件(LVM),如IBM的HACMP、Veritas的VCS等
DB Inst:這里是RAC環境的最上層,DB層,數據庫就運行在該層
2.2 Oracle RAC特點
1) 單一的Cluster環境
從Oracle 10g開始推出的CRS軟件與ASM存儲管理設置,可以完全脫離第三方的Cluster軟件而在各個平臺上安裝使用,從而不但降低了RAC環境的成本,也使安裝、維護更加簡單
2) 實現Oracle的持續服務和負載均衡
通過VIP訪問RAC,當一個節點發生故障時這個VIP會轉移到其他節點上,從而保證應用的不間斷服務,同時CRS也可以對訪問RAC的服務負載均衡的分布到環境中的每個node上。RAC環境也是一個可伸縮的環境,在不影響當前業務的條件下,可以方便的增加和刪除節點。
3) 在線補丁升級
RAC系統支持補丁滾動方式的升級,當補丁應用大一個節點上時其他節點可以正常的運行提供服務,同時根據補丁產生的編號,將不定標記為是否是否作為滾動升級來安裝,如果需要滾動升級則可以在不影響提供服務的前提下自動應用到每個節點。
4) 需要與其他容災組件配合完成存儲的備份
RAC的Data file、Control file、Redo log等都存放到共享的存儲上,RAC只具備主機、應用的保護和負載均衡,并不具備容災的功能,如共享磁盤設備損壞或者不可預料的損失將導致RAC環境 的不可使用,所以RAC一般要與其他的容災組件配合使用來保證數據的安全,一般依靠RAID、LV鏡像、活Data Gua來實現數據的冗余。
3 Oracle備用數據庫Standby/Data Guard
Standby database/Data Guard是Oracle退出的另一種高可用性數據庫方案,在主要和備用節點之間通過日志同步來保證數據同步,備用節點作為主節點的備份,可以實現快速 的切換與災難性恢復。從Oralce 9i開始,Standby數據庫更名為數據庫保護(Data Guard)
3.1 Oracle Data Guar結構介紹
Data Guard一般包括兩套數據庫環境,一臺主要數據庫,一臺備用數據庫,與RAC不同的是,以一般情況下只有一個節點處于活動狀態,所有應用都連接到主服 務器上,只有當主服務器發送故障時才考慮切換到備用服務器。備用服務器一般不提供讀寫的操作,只有當需要時才提供只讀的操作,或者當主站點出現故障時經過 切換操作才變為主數據庫,提供正常的讀寫操作,由于存在Active/Standby兩套主機、存儲環境,所以較RAC多了數據保護盒容災的功能,圖2為 Data Guard的結構圖:
圖2 Oracle Data Guard結構圖
在以上結構中,主備數據庫各一套,在實際的應用環境中可以根據環境的不同配置多套主、備用數據庫。物理Standby其實是采用備份與恢復的原理實 現的,在主、備數據庫之間,采用Standby的日志傳送方式,歸檔日志活聯機日志通過網絡傳送到備用端,所以可以把Standby看做是一個正在不停恢 復中的數據庫,因為主數據庫一直在運行,所以備用數據庫一直處于應用日志狀態,或者等待下一個日志應用。因為Standby的主數據庫與備用數據庫是兩個 獨立的數據庫,基本上沒有太大的聯系,所以該體系結構遠沒有RAC那么復雜,只要兩個數據庫直接網絡相通就可以。從Oracle 9i開始,既可以傳送歸檔日志也可以傳送聯機日志,根據傳送日志的不同分別由ARCH和LGWR進程來處理,但由于傳送聯機日志需要實時的同步,所以要 求在備用數據庫建立對應的日志文件(Standby log),并且可能會對LGWR進程造成一定的影響,所以從Oracle 10g以后默認采用歸檔日志傳送,這種方式不需要額外的配置,只需要簡單的修改Standby數據庫的歸檔路徑即可。
3.2 Oracle Data Guard特點
1) 可以實現數據庫主機及存儲的完全冗余保護,該冗余甚至可以跨地域做成容災保護,是Oracle主推的容災產品。在Standby中主用數據庫必須運行在歸檔模式下,以保證備用節點的數據一致性,因此該特性并不適合數據倉庫。
2) Standby主節點對OS的環境要求較高,一般要必須是相同或者相近的OS環境,并且對數據庫版本也有特定的要求,不能實現跨數據庫版本的備份。
3) 不能自動的故障切換,如果主站點損壞要切換到備用站點,則需要在切換前完全同步主站點當前的聯機日志,否則會發生切換后數據丟失的現象。
4 Oracle高級復制與流
Advanced Replication/Streams的設計目的是更靈活的實現數據分布,這種技術可以講一個數據庫中的表、用戶(Schema)、表空間 (Tablespace)或者整個數據庫復制到另一數據庫上中,甚至是雙向的同步,Oracle 9iR2開始實現這種方式更傾向于Streams技術,Advanced Replication是基于內部觸發器的技術,而Streams采用挖掘日志的方式,對系統的壓力大大的減小。
4.1 Streams結構介紹
在Oracle 9iR2之前,如果想實現數據庫的復制,除了備用數據庫(Standby Database)和高級復制(Advanced Replication)等技術外,沒有其他號的辦法,而Standby Database主要應用于容災,是這個數據庫的完全復制,而Advanced Replication配置相對復雜,并且對性能影響比較大,因此在應用上都有弊端,Oracle在9iR2版開始推出Streams技術,它與 Standby備份數據庫技術內部運行機制非常相似,都是捕獲主數據庫的日志然后傳送到目標機器上應用日志而恢復,圖3是Streams技術的結構圖:
圖3Streams結構圖
雖然與Standby一樣都是捕獲主機的日志后進行數據同步,但Streams技術卻比Standby具體很多優點:
? 支持部分復制,可以只復制一個表、一個用戶或者一個表空間,這個是Standby無法實現的
? 支持一個數據庫內部復制也可以跨數據庫復制甚至跨數據庫產品(從數據庫到非Oracle數據庫之間的復制
? 支持雙向復制,而Standby備用數據庫除了能提供查詢外在備用狀態下是不支持寫操作的
Streams技術通過高級隊列(Advanced Queuing)、日志挖掘(Logminer)、和作業調度(Job Schedule)等技術,來實現集捕獲、傳輸、共享的數據共享通道。Streams Replication的處理過程主要分為三個階段,包括:捕獲(Capture)、傳播(Propagate)與應用(Apply),下面我們具體介 紹這三個階段的工作原理:
? 捕獲:根據站點定義的捕獲規則(Rules),將符合捕獲的事物及操作(DML、DL)從數據庫的聯機日志或者歸檔日志中解析出來,變成邏輯改變記錄LCR(Logical Change Records)
? 傳播:主要是網絡傳播過程,作為Job Queues進行調度,它負責將消息隊列中的LCRs傳送到目標隊列中,它提供了“一對多”、“多對一”、“一對一”的傳播方式,還支持不同環境中的傳播
應用:負責從目標站點消息隊列提前LCRs,并且根據Streams Replication目標站點定義的規則(Rules)解析出一句提交的事物,然后按照以來關系與執行順序來組織好這些事物分配給應用進程應用這些事物。
4.2 Oracle Streams特點
1) Oracle Streams最大的特點就是靈活,可以跨平臺對單獨表、用戶、表空間或者整個數據庫進行復制,而復制的壓力更小,基本對數據庫造成額外的壓力,這也是對Advanced Replication更加先進的體現
2) Streams可以實現雙向復制和多源復制,靈活的跟進應用特點定義復制的方式
3) 可以實現數據庫主機、存儲的完全容易備份,大大提高了系統的可用性、擴展性和安全性
4) Streams技術雖然得到了很大的完善,但該技術缺少像RAC、Data Guard技術那樣在高可用環境下的驗證,所以目前對該技術的認知度還有待提高
5 數據庫主機HA
Oracle主機HA(Server HA)屬于我們開始說的狹義意義上的HA,它是基于OS的技術,采用OS支持的Cluster Soft來保證主機的冗余保護,當主機或者網絡發生故障時來實現自動保護切換,它和RAC一樣使用共享存儲來保證數據的一致性
5.1主機HA結構介紹
主機HA技術出現的比較早,技術也比較成熟,現在市場上也有很多優秀的支持各種OS的Cluster Soft,所以主機HA技術應用非常廣泛,而且主機HA的集群技術與數據庫的版本、特性無關,在不同的數據庫版本甚至不同的數據庫上都可以實現主機的 HA,它與RAC的工作模式有所不同,RAC主要工作在雙機雙工的末實現,而主機HA則工作在雙機熱備或者雙機互備的模式下,同時RAC是居于數據庫而完 成的高可用性,而主機HA是基于OS完成的主機高可用性來保證數據庫的高可用性,圖4為主機HA的結構圖:
圖4 主機HA結構圖
主機HA技術是一個或者多個主機共享一臺備用主機的集群技術,所以它能解決主機故障包括OS故障、主機網卡故障、單個主機的網絡故障等,通過 Cluster軟件將兩臺或者多臺數據庫主機綁定一個服務IP,所有的Data file、Contr File、Redo log等都存放于共享的存儲上,主機HA集群通過一個服務IP對外提供服務,通過HA Soft軟件的管理集群中的各個主機運行在Active/Standby方式下,當其中一臺主機發送故障時,HA Soft軟件會自動的檢測到故障并且將提供服務的IP切換到正常的主機上提供服務,從而保證了數據庫服務的連續性和故障的自動切換。現在支持主機HA的 Cluster軟件有很多種,只要的有:Veritas的VCS,IBM的HACMP,HP的ServiceGuard,SUN的Sun Cluster等。
5.2主機HA特點
1) 主機HA的最大優點就是可以解決服務器的單點故障,Database所有的文件都建立在共享存儲上,存儲的冗余需要依賴其他技術(RAID、LVS等)來實現
2) 主機HA的技術簡單成熟,所以在實際的應用中被廣使用,但對主機資源的浪費比較嚴重,基本上要保證對等的資源處于等待狀態
6 Oracle高可用性架構舉例
Oracle數據庫的穩定與安全關乎整個平臺的穩定與安全,下圖描述的體系結構是實現Oracle高可靠性的一種不錯的架構,數據庫采用了 RAC+ASM+STANDBY的結構體系,應用層采用Oracle自己的Application Server。用戶通過負載均衡設備訪問不同的Oracle應用服務器,而應用服務器通過自動負載均衡及Failover特性訪問當前的主數據庫。
當主站點出現故障的時候,Data guard可以手工或者是自動切換到備用端,應用服務器的訪問也將自動被切換到備用站點,以保證系統的最大可用性與業務連續性。
7 總結
以上我們介紹了當今世界上流行的Oracle 高可用性的架構方案,但對于我們現實的工作中,隨業務的不斷發展,根據硬件的投入與產出的比例,平臺到底適合哪種數據庫的高可用性方案比較合適呢?我認 為可以根據平臺業務、硬件配置的不同選擇不同的數據庫高可用性方案,從而既極大的發揮了平臺中硬件設備的性能同時也保證了數據的冗余,主要可依據現網數據 庫主機的配置和對數據庫訪問的并發需求來選擇,具體如下:
1) 現網兩臺數據庫主機配置相當并且數據庫并發訪問量較大
對于這種平臺由于數據庫訪問量相對較大,并且數據庫主機的硬件配置相當,建議采用Oracle Advanced Replication/Streams的架構來實現數據庫的高可用性,這樣兩臺數據庫服務器都作為主用服務器提供服務,在保證了并發數的同時又保證數 據的冗余備份。
2) 現網數據庫主機性能較低但需要支持大量的并發訪問
對于這種平臺建議采用Oracle RAC的架構方案,該方案可以使多臺連接的PC組成一個支持大量訪問的集群,并且可以靈活的增加、刪除集群中的節點來實現平臺的平滑擴容和升級,但需要相應的存儲、容災方案的配合。
3) 現網只有一臺數據庫主機并且該主機基本滿足平臺需求
對于這種平臺建議采用備用數據的方案(Standby/Data Guard),一臺性能不錯的主機作為主數據庫,增加一條檔次較低的主機(pc server)作為備用數據庫,備用數據庫只做主用數據庫的冗余,不提供讀寫操作,在主用數據庫發生故障時可以臨時啟用備用數據庫提供服務。
來自:http://blog.sina.com.cn/s/blog_7273b6cc0100p0sr.html