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