淺談資料庫高可用性技術
資料庫高可用是一個複雜的系統工程,本文主要介紹了幾種資料庫高可用的基本技術:HADR、 HACMP、 數據複製,存儲層容災和DPF高可用。並結合實踐實際,分別論述了它們的適用場景和技術特徵。在不同場景,不同的業務連續性級別下,我們可以組合使用這幾種技術,以實現從存儲,網路,系統,資料庫到應用的高可用技術。
一.DB2HADR
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/電信軟體與核心網業務部資深專家。
重新發布:2018.11.17
TAG:架構師技術聯盟 |