1. 程式人生 > >淺談資料庫高可用性(HA)技術

淺談資料庫高可用性(HA)技術

 資料庫高可用是一個複雜的系統工程,本文主要介紹了幾種資料庫高可用的基本技術: HADR、 HACMP、 資料複製,儲存層容災和DPF高可用。並結合實踐實際,分別論述了它們的適用場景和技術特徵。在不同場景,不同的業務連續性級別下,我們可以組合使用這幾種技術,以實現從儲存,網路,系統,資料庫到應用的高可用技術。

 

淺談資料庫高可用性(HA)技術

一. DB2 HADR

 

      HADR全稱為High Availability Disaster Recovery ,是IBM DB2資料庫上的資料庫級別的高可用性資料複製機制,最初被應用於Informix資料庫系統中,稱為High Availability Data Replication(HDR)

,IBM收購Informix之後,這項技術就應用到了新的DB2發行版中。HADR有一主一備資料庫,在9.7之前備機不可讀,9.7之後備機可讀可以降低主資料庫的負擔。(這個Oracle的DataGuard邏輯備機可讀做的就很好,但是為什麼IBM會落後呢?)      在資料專線頻寬足且穩定的情況下,在要求主備完全資料無損的時候,推薦用同步方式傳送,或者能容忍一定少量的損失,可以用準同步,但是推薦在在生產中心和同城的災備中心之間(LAN或者MAN),如果在1000公里以上頻寬和時延都沒什麼保障的話,比如北京和上海,最好還是用非同步的方式,如果更差或者對OLTP的實時性要求較高還可以用超級非同步,當然這對流水的損失要有一定的容忍度。      HADR一個很不好的特點是不能用於DPF,只能適合單分割槽資料庫,這就限制了資料庫在高可用下的規模以及併發性。HADR從一些實際應用來看,切換速度要比DG要快,而且切換出現故障的可能性要小些。      談到HADR絕對不能離開DataGuard,實際上中國人民銀行對兩地三中心的規定就非常適合DataGuard的兩個備用資料庫的方式,生產中心用主資料庫,同城災備中心用物理備用,異地災備中心用邏輯備用。Oracle的DataGuard在網路故障恢復之後可以自動同步。      HADR有一個弱點就是不能進行資料壓縮和加密,如果沒有VPN就麻煩了,但是HADR可以整合第三方的SSH軟體。而DG本身就集成了SSH進行壓縮和加密功能。HADR最要命的是不能支援異構資料庫的複製,當然這個也不是他的主要場景。      DB2異地災備用HADR的比較多,在9.7之前用HADR的話備機不可讀很麻煩,所以有的時候就要用Q複製,這樣主備都可讀,如果要零容忍和短切換時間的話,用HADR比較靠譜。二. SQL複製和Q複製

 

      SQL複製主要應用於相同區域網內。Q複製遠端好一點,因為在網路比較差的時候,WebSphere MQ可以快取一段時間資料。Q複製一般結合HADR比較多,用於實現資料遠端異地複製(比如中國菸草總公司容災中心)。Q複製可以通過分析事務日誌來獲取系統變化,對系統的效能影響比較小。是高效率的複製方案。但是Q複製只是對DB2支援的比較好,對Oracle嘛就那樣,其他的資料庫支援的都不好。Q複製也支援表級別的複製。Inforsphere CDC(原來叫Data Mirror)支援多種資料庫的表複製。      Oracle也有GoldenGate,這個熟悉的人也知道,支援ORACLE最好,其他的嘛不好說。但是CDC在表依賴上有些複雜,會有點問題,需要具體處理。三、 HACMP

 

      HACMP Cascading模式中,有主又備,節點有優先順序,資源組在優先順序搞的節點執行,高優先順序節點故障恢復之後,資源組重新歸位。      Cascading用於主備機硬體效能有較大差別的環境,節約成本,這個對於不差錢的運營商、航空、銀行、政府絕對不會採用。Rotating模式中,有主有備,節點優先順序相同,資源組在先啟動節點執行,節點故障恢復後,資源組不會前移。Rotating適用於對可用性要求較高的場景,電信行業的資料業務,增值業務,彩鈴等產品多采用這種方式。      Concurrent模式無主備,節點優先順序同,資源組在所有節點執行,節點故障不會導致資源組切換,故障節點恢復後,資源組恢復可用,不發生前移,適合大容量據點。Concurrent模式一般和Oracle的RAC或者並行伺服器(OPS)合用較多。      電信業務中,增值特服大容量據點採用,智慧網、BOSS也有應用,這種模式的結合和PureScale十分類似。但是HACMP中資料庫只有一份,如果資料庫被破壞,主機和作業系統還好也沒毛用,所以還要結合HADR才更安全。HACMP一般是由網絡卡和機器Down機所觸發的,軟體改動不知道是否能夠觸發呢?我也不是很清楚。      其實HADR,HACMP在本地資料中心的效果最好,如果是異地的話最好是使用HAGEO,或者在儲存層的做,因為軟體層面效率並不是很高而且還很佔主機的系統資源和網路頻寬,當然不同公司的選擇和考慮是不一樣的。四、DPF的高可用方案

 

      關於DPF,其實DPF本身並沒有高可用性的方案。但是由於多節點技術,在某些條件滿足的情況下有一定程度上的容災。要求Catalog節點不能Down,如果非關鍵節點Down,DPF資料庫還是可以訪問的。      但是如果你要某些表可訪問,只有在該表所在表空間所覆蓋的分割槽節點沒有Down。DPF節點Down有幾種情況,如果是作業系統或者網路故障,可以通過HACMP恢復,如果是節點資料庫損壞,就沒有辦法了。其實DPF這麼多節點也是引入了故障點的概率,所以OLTP在沒有HA保障的話,是不敢建在DPF上的。      DPF在建庫的時候,最好規劃好關鍵節點的HA和備份工作,定期檢查表,表空間的分佈,並記錄下來,有問題可以迅速定位和恢復。表空間級別的備份在DPF還是很重要的。      如果資金保障比較充足的話,建議給所有幾點都做HA,因為一般資料庫本身導致的可用性問題要比OS和硬體網路導致的要少很多。DPF跨節點表和表空間特別多,千萬不要因為節點本身的問題造成表空間不可用那個。五、儲存層的容災

 

      談到高可用,不能離開儲存層的容災,比如磁碟映象技術,和第三方的備份技術。當然,Everyone都知道,儲存層的技術避免不了宕機的,要有一段切換時間。      SRDF一種比較複雜技術。SRDF在國外應用的非常多,國內銀行也開始應用。SRDF可以實現分層的資料備份和恢復。可以跨大樓,可以實現全球的資料複製。同樣的,和HADR和DG類似,也有同步,準同步和非同步的模式。覆蓋的距離可以多達幾千公里,但是因為無需考慮類似於HADR的實時性交易問題,另外SRDF支援所有的主機和資料庫系統。這個一般在資料中心搬遷的時候用的比較多。      如果在距離比較近的時候比如數公里的距離,可以使用裸光纖,如果較遠的話,就要用華為或者Cisco的DWDM進行光纖延伸,根據資料傳輸的需求制定線路的速率。SRDF非常昂貴,如果我們的資料和客戶交易不強相關的話,就可以使用笨笨的磁帶拷貝搬遷方法,建立應用系統,然後再用SRDF傳輸實時要求高的資料,啟動新資料中心的系統,切換網路。

      Veritas大家也非常瞭解了,論壇上用過的人該很多。通過 Veritas的BMR技術,可以直接連作業系統帶資料全部備份到資料中心。更為強悍的是,無需LAN的SAN多磁碟併發備份,減少對網路頻寬的影響。通過BMR可以製作啟動光碟,進行系統恢復。針對於不同的資料庫還提供相應的agent,提供線上熱備份技術。

六、高可用的網路、電力和制度方面

 

      網路就不用說了,網絡卡漂移,多子網,冗餘光纖等。一般來說,生產中心和災備中心之間要有四個交換機,以及四個儲存層主機實現高可用,並配備多路光纖。 電力的話,要有UPS備用電源和發電機。資料中心的電力和網路一定要求運營商提供第一流的保障級別,否則誰都付不起責任。當然還有自來水、便利的交通等等方面。

      大規模的電信運營商、銀行都有非常成熟的制度和流程。中國人民銀行也有非常詳盡的規範。各銀行也制定自己的一些細節規定。制度一定要控制濫用許可權、各種誤操作、以及指明應急時候的操作。前面的兄弟也有一些闡述,比如雙保險,及時進行災備切換演練,整體級別的,應用軟體級別的都要有。資料中心建成的時候,要各種切換和場景都要嘗試。

寫的累死了,等以後有時間,補充一下制度方面的資訊。我經驗不足,考慮的不是很全面和深入,很多思考也不是很準確,目的就是喚醒大家的討論,糾正我的理解的偏差。歡迎交流和討論。孫揚某運營商BG/電信軟體與核心網業務部資深專家。