Oracle HA和RAC的區別


淺談oracle RAC和HA的原理和異同 HA是High Availability的簡稱,即高可用性,在數據庫應用上通常的高可用性是指廣義的,應該是一種概念和模式而不是一種具體技術或者實現方式。簡單來說,HA是讓系統盡可能持續運行而不會中斷的技術,包括軟件的高可用,硬件的高可用,網絡的高可用等等。具體實現的方案包括操作系統的集群,數據庫的集群,硬件的冗余,網絡的冗余等等。就oracle 高可用性來說實現方式有:高級復制(Advance Repication)、OPS/RAC(Real Application Cluster)、數據衛士(Data Guard)、oracle流(Oracle Streams)、oracle GG(GoldenGate)以及狹義上的HA即雙機熱備等等,本文所指的HA即為狹義上的HA(雙機熱備或者多機熱備)。

實現原理: oracle RAC,全稱real application clusters,譯為“實時應用集群”,由2台或以上具有相同硬件和軟件配置的服務器(通常是性能比較高的機器,可以是微機、小機或者更高級別的機器)通過光纖連接到共享存儲,節點之間一般也通過光纖實現互連和通信。通過RAC軟件(三方的或者是oracle自己的cluster軟件)將所有節點在邏輯上構成一個群集,即一個數據庫對應多個實例,各個節點通過各自public ip同時對外提供服務,通過private ip進行內部通信(如心跳判斷等),在通過緩存融合技術將所有節點的數據庫緩存虛擬成一個整體,數據在虛擬的緩存中為各個節點提供一致性訪問,在保證各個節點訪問到數據的一致性的同時又充分利用了所有節點的cpu資源。從整體上來看,RAC對外提供單台服務器的N倍內存和N倍cpu資源的數據處理服務,只要整個RAC中還有一個節點未宕機,整個數據庫就能持續對外提供服務。 oracle HA,即狹義上的雙機熱備,一般由兩台具有相同硬件和軟件配置的服務器,通過光纖連接到共享存儲以及各個節點之間的通信,通過操作系統的群集軟件或者其他三方雙機切換軟件組成邏輯上的整體。在某一時刻,群集中只能有一個節點作為主服務節點能訪問共享存儲並提供對外服務。當主服務節點宕機,群集軟件將其他節點切換為主服務節點,保證最大限度的降低整體的服務中斷時間。原則上只要群集中還有一個節點未宕機,整個數據庫還能對外提供服務,但是由於節點之間的切換和接管會造成整體出現短暫的服務中斷。 同樣做為高可用性具體實現技術的HA和RAC,既有共同性又有差異性,以下就分別從這兩方面進行比較:

相同點: 首先在目的上,HA和RAC都是為了盡可能保證數據庫能持續運行而不間斷或者最大程度縮短宕機時間,從而最大程度減少或者降低企業的損失。 其次在硬件上,無論是HA還是RAC都使用共享存儲來存儲數據,都是通過多台具有相同硬件結構的機器構成一個群集,各個機器和存儲之間都使用光纖進行通信,每台機器都需要2個或者2個以上的網卡分別用於提供public和private連接,在IO上都要受到共享存儲IO的限制。 在軟件上HA和RAC環境中的所有機器都要裝相同的操作系統(可以是Windows、Linux、Unix或者是AIX等等),相同版本的oracle軟件和補丁等等。

差異性: rac中每個節點都有自己實例,自己undo表空間,自己的一套redo文件,自己的SGA,共享控制文件和其他數據文件;而HA每個節點都有自己的實例,共享redo文件,undo表空間和控制文件和其他數據文件。 在同一時刻,RAC 的所有節點都能分別對外提供服務,如果設置了負載均衡,群集軟件還能根據各個節點的負載情況選擇負載最小的節點為新的請求提供服務;而HA在同一時刻只能有一個節點對外提供服務,即使是群集中的其他節點都未發生宕機也是如此。 rac環境中,只要存在一個節點未宕機,則整體仍能持續對外提供服務,不會出現服務中斷的情況;而HA原則上雖然只要存在一個節點未宕機,群集仍能將其切換為主服務節點,但是切換服務的過程由於群集軟件的切換操作和節點的接管操作會造成短時間的服務中斷。 在同一時刻,HA對外所能提供的最大IO為共享存儲的IO,最大的內存和cpu資源均為當前主服務節點的資源;而在同一時刻rac對外所能提供的最大IO為共享存儲的IO,最大內存和cpu資源為當前活着的節點的總和,在數據處理並發服務方面比HA有了硬件上的絕對優勢。

結論: 在至少有一個節點存活的基礎上,rac能持續對外提供服務,而HA可能會出現短暫的服務中斷,因此rac在持續服務方面要優於HA; 由於在同一時刻rac能通過所以節點對外提供服務而HA只能由主服務節點提供對外服務,因此在並發服務和硬件資源上rac要明顯優於HA; 由於rac還需要rac軟件的license,而且一般rac的節點會比HA多,硬件資源配置一般也比較高,所以在成本投入方面rac要比HA高; 由於rac需要在多個節點之間進行數據同步和通信,原理和構成比HA更復雜,因此在維護性方面rac要比HA更復雜,一旦出現問題,需要投入更多的資源。


免責聲明!

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



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