圖1在公司收益與投入成本計算方面取得一個平衡,則是我們所希望的在線效率,但是收益與成本的計算方法則是決策者與實施者需要著重考慮的問題了,也是我們下面希望能試圖解釋的問題。二、Oracle高可用相關功能的產品概述 因為高可用的范圍定義太廣泛,本文我們只討論與Oracle數據庫有關系的高可用設計,如數據庫主機的錯誤,數據所在的存儲錯誤,介質損壞以及主機與數據的冗余保護等等,并不討論應用層的設計,Oracle 提供支持high availability 相關產品主要有下面幾種: (1) Oracle Parallel Server(8i)/ Real Application Cluster(9i/10g)
圖2 2、Advanced Replication /Stream Advanced Replication/Stream用于高可用,一般是指對數據庫的整個復制,假如數據庫在異地,也還可以用于容災,所以,假如該技術用的好,是一個非常不錯的選擇。
圖3如上圖的結構中,主站點可以在城東,被復制站點可以在城西或者更遠的地方,數據通過城市網絡傳向被復制站點,在stream中,傳送的可以是被分析過的LCR anydata數據結構,到目標數據庫的時候再解析成對應的DML語句實現同步。這樣的話,主站點與被復制的站點可以分別的被應用訪問,雖然被復制站點可能比主站點的數據要延遲一些。 正因為Advanced Replication/Stream既實現了高可用,又實現了容災,在大型的在線電子商務網站中,一般使用成熟的share plex軟件實現讀寫分離,讀的站點可以分布在世界各地,既大大提高了網站系統的可用性,又大大提高了數據的安全性。 3、Standby/Data Guard Standby/Data guard因為技術簡單成熟,成本低廉(Oracle自帶的功能,不需要單獨購買),是廣泛采用的一種數據庫的高性能與容災方案,假如采用不同保護級別可能會有不同的性能結果,如想不丟失數據,則可能會影響性能,假如想最好的性能,則一定注重保證在主節點完全故障的時候,備用節點不會丟失數據。
圖4備用數據庫可以認為是一個主數據庫的鏡相,一個處于不斷恢復日志中的主數據庫。從9i開始,備用數據庫又分為物理備用數據庫與邏輯備用數據庫,我們這里只討論物理備用數據庫。 Standby/Data guard實現了數據庫的高可用以及數據的異地容災,與Advanced Replication/Stream不一樣的是,備用站點不能實時的被訪問,降低了資源的利用程度,而且假如主站點故障,一般需要手工切換。 但是,正因為其方便的治理,成熟的技術,低廉的價格,所以也被廣泛的使用在數據的容災上面,假如與RAC結合,RAC+Data Guard可以實現一個良好的高可用,高性能的數據庫。 4、OS相關HA HA很類似于RAC,兩種方式,都需要兩個Server,一個閑置。 在主機crash 的情況下,都可以提供某種程度的恢復,保持系統可用。 不過一個是OS Vendor的solution,一個是Oracle的solution,如,在一個 一備三 的系統結構中:
圖5在以上的結構中,正在被使用的數據庫服務器有3臺,其中3臺中任何一臺發生故障,可以被一臺備用主機接管,等待發生故障的機器修復,再手工切換會原來的結構。 HA的最好好處就是可以解決服務器的單點故障的問題,如機器故障,與Rac一樣,并不能解決磁盤故障問題或者是陣列故障問題。所以HA也必須采用附加的備份機制如LV鏡相與卷復制,或配套使用oracle standby。 HA的機制起源比較早,發展到現在已經日趨成熟,在實際安例中,使用還是比較廣泛的,但是它必須有一半的資源處于等待狀態,所以資源浪費跟standby一樣,比較嚴重。 四、Oracle高可用相關功能的對比說明與方案選擇 通過以上的具體說明,我們描繪了Oracle數據庫在高可用性方面可以達到的效果以及特性,并且從原理上與構架上,我們也可以分析到其成本(包括治理成本),再加上其技術的成熟程度以及使用程度,我們以一張表格來對照一下:
圖六注①:這里指單獨的使用該功能,但是假如與LV Mirror/ Volume Replication/Data guard等功能結合起來,是可以實現數據保護與容災功能的,假如設計合理,在災難切換時,也可以保證不丟失任何數據,但是也需要為以上功能付出更多的成本。 新聞熱點
疑難解答