??? 24*7(有些叫法也為24*7*365)的高可用系統越來越多的受到廣泛重視與應用,那是因為在實際環境中,不間斷的系統代表的就是不間斷的義務收入。但是
??? ◆怎么樣搭建與管理24*7的高可用環境?
??? ◆各種各樣的高可用環境之間到底有什么差別?
??? ◆我們是否適合于哪種環境?
??? ◆現在高可用環境的主要方式以及以后的發展趨勢是什么?
??? 這些話題,都是決策者與實施者都應當考慮的,也是本文所探討的,我們需要搭建一個怎么樣的高可用環境,才能真正做到最適合。
?
一、什么是高可用(High Availability)
??? 在高可用的解釋方面,有人給出了如下的詮釋:
??? (1)系統失敗或崩潰 (system faults and crashes)
??? (2)應用層或者中間層錯誤 (application and middleware failures)
??? (3)網絡失敗 (network failures)
??? (4)介質失敗,一般指存放數據的媒體故障 (media failures)
??? (5)人為失誤 (Human Error)
??? (6)容災 (Disasters and extended outages)
??? (7)計劃宕機與維護 (Planned downtime, maintenance and management tasks)
??? 可見,高可用不僅僅包含了系統本身故障,應用層的錯誤,人為錯誤等等,還應當包括數據冗余、容災以及計劃的維護時間,也就是說,一個真正的高可用環境,不僅僅是能避免系統本身的問題,還應當能防止天災人禍,以及有一個簡單可靠的系統維護方法(如微碼升級、軟件升級等等計劃停機維護)。
??? 現在高可用的計算方法一般以年在線率來計算,如規定一年之中的可用環境要達到99.95%,那么24*365*(1-99.95%)=4.38小時(包括維護時間)。那么假定一個系統本身一年之中故障時間是1小時,但是計劃維護時間卻花了20小時,那么這個系統也不能算是一個滿足設計要求的高可用環境。
??? 現階段使用環境中,基本沒有真正的100%的在線環境,或者說,如果達到100%的在線能力,將花費非常多的代價,所以一般能達到99.95%以上的可用性的環境,一般都可以認為是高可用環境。
??? 對于高可用性在線效率的計算,我們可以參考如下方法:
??? 在公司收益與投入成本計算方面取得一個平衡,則是我們所希望的在線效率,但是收益與成本的計算方法則是決策者與實施者需要著重考慮的問題了,也是我們下面希望能試圖解釋的問題。
?
二、Oracle高可用相關功能的產品概述
??? 因為高可用的范圍定義太廣泛,本文我們只討論與Oracle數據庫有關系的高可用設計,如數據庫主機的錯誤,數據所在的存儲錯誤,介質損壞以及主機與數據的冗余保護等等,并不討論應用層的設計,Oracle 提供支持high availability 相關產品主要有下面幾種:
??? (1) Oracle Parallel Server(8i)/ Real Application Cluster(9i/10g)
??? (2) Oracle Standby Database(8i)/Oracle Data Guard(9i/10g)
??? (3) Oralce Advanced Replication(8i)/Oracle Stream(9i/10g)
??? (4) Oracle Server HA
??? (5) Other: Mv/RMAN/Oracle Log Miner/Oracle Flashback Query(9/10gi)
??? 等等,還有其他很多小的功能,如在線表的重定義,新的安全審計功能等,也都是為在線系統而設計的,但是,我們這里主要只考慮構架方面的高可用設計,也就是與成本有關系的高可用設計,怎么樣達到成本與收益的最大平衡。
??? 所以,我們將主要討論的是Oracle OPS/RAC、Standby/Ddata guard、Advanced Replocation/Stream以及與Oracle Server相關的OS HA(雙機)。
1、OPS /RAC
??? OPS/RAC 最原始的設計初衷就是system/application high availability。與其他產品相比較: OPS/RAC 是多個服務器的cluster,組成具有更大計算處理能力與故障處理能力的集群。cluster 里面不同的 node 使用一個(一般是一個)或多個oracle instances 與一個database 連接(Shared Storage)。
??? 主要的技術特點:
??? (1) database 所有的data files 是建立在共享存儲(Shared Storage)上面的,一般可以采用raw設備,共享文件系統或者是ASM(10g提供),因此在技術方面對OS 的設置有很高的依賴性,需要有OS支持的cluster軟件。
??? (2) OPS/RAC在共享存儲方面并沒有冗余保護,不具備在共享存儲陣列損壞的情況下具有切換的能力,因此 media failure 方面,要依靠RAID (redundant array of inexpensive disk) Subsystem、LV鏡相(LV Mirror)、卷復制(Volume Replication)或者是Standby/Data guard來實現數據的冗余保護。
??? (3)該技術是Oracle近來主推的技術,特別是10g以后的網格計算與線型擴展能力,在電信、移動、銀行行業使用廣泛。如果還是老的OPS,則不建議再使用,但是9i以后的Rac技術逐漸成熟,可以使用在高可用環境下,但是其管理成本與技術的復雜性,則也是需要考慮的。