陳小建
(華東交通大學軌道交通學院,江西 南昌330013)
數據庫的容災技術是對數據庫實現高可用性的重要保障[1]。 一些黑客或恐怖分子經常對數據庫網絡進行攻擊,此外,地震、水災、火災、雷擊等自然災害也會對數據庫造成損害而無法繼續提供數據服務時,這對國家或企業將會造成不可估量的損失[2]。 如果擁有數據庫容災系統,可以及時接管受災數據庫系統,從而保證業務持續性。本質上,數據庫系統的容災技術就是當前對外服務的生產數據庫環境的一個備份[3]。基于此,本文重點對企業生產環境中基于操作系統及存儲級別的數據庫容災技術進行闡述。
備份是保證數據庫可用性的重要方式。根據備份對象的不同,可以將其分為物理備份和邏輯備份。物理備份的原理是基于數據塊的,實現方法使用操作系統命令或者專門的數據庫 物理備份工具,一般情況下都支持增量備份,恢復對象主要是對數據塊、數據文件等物理級別的恢復。邏輯備份的原理是基于具體的數據庫對象,如表、索引、過程等;實現方法是使用專門的數據庫邏輯備份工具進行備份,一般為數據庫對象的備份,但難以提供增量備份,恢復也只能是數據庫對象等邏輯層面的恢復。
根據備份的時間特點,又可分為靜態備份和動態備份。 靜態備份基于特定的時間點(RPO),超過特定時間點之后的數據就不能恢復,至于恢復時間(RTO),視備份集的大小、系統IO 能力等而定;備份的技術難度和維護成本都比較低。 動態備份的原理是從某個基準備份開始動態持續備份,可以實現0 或者接近于0 的RPO/RTO,備份的技術難度和維護成本都比較高。
影響數據庫容災的關鍵因素有:①網絡帶寬因素;②磁盤IO 因素;③RPO/RTO 指標;④網絡安全。這些因素在文獻[4]中已做了比較詳細的分析,在此不再敘述。
操作系統級容災可以基于以太網、SAN 網絡來實現,如圖1所示。

圖1 基于以太網/SAN 網絡的操作系統級容災原理Fig.1 The operating system level disaster tolerance principle based on the Ethernet/SAN network
操作系統級容災的工作方式是通過“基于以太網的容災”方式,或“基于SAN 網絡的容災”方式將源端(左邊)數據庫的變更傳遞到目標端數據庫(右邊)上,并在目標端數據庫上重現源端的變更,從而使兩邊的數據達到一致,實現容災目的[5]。
應用服務器群代表一個或者多個應用程序運行在這些服務器上面, 有的是出于業務種類的不一樣,需要使用多臺服務器,有的是因為某個業務訪問壓力太大,需要多個服務器來分擔壓力。 而數據庫服務器群可以是一個數據庫的集群,也可以是多個數據庫的簡單組合。 最下面的存儲是用于存放數據庫數據的硬件設備,帶庫是專門用做備份的磁帶設備。
以下從兩個方面闡述圖1的工作原理。
“基于以太網的容災”對應的是圖中的“電信部門以太網專線或Internet”那層。 它可以采用諸如VVR(Veritas Volume Replicator)的卷復制技術實現。 VVR 是Symantec 公司容災套件Storage Foundation 系列軟件中的一個模塊。 VVR 復制基于邏輯卷(Logical Volume, LV),復制前先將DBMS 所在的一個或多個卷定義為RVG(Replicated Volume Group),數據庫向RVG 中的卷寫入數據時,會先在SRL (Storage Replicator Log)卷中寫入日志,日志經過網絡傳輸后在目標端的RVG 上重現I/O[6-7]。SRL 保證數據復制嚴格按照寫順序進行,當SRL 卷寫滿后,DCM(Data Change Map)開始記錄變化過的數據塊塊號,以便在復制正常后仍保持主、備端的數據一致性。
VVR 復制的優點主要有:距離不限;支持異構的存儲和操作系統;支持同步和異步復制;默認自適應;在網絡延時情況較好、數據能夠及時復制;工作在同步方式,當網絡延時情況較差,數據不能及時復制;工作在異步方式下,保證主節點的I/O 性能;VVR 復制嚴格按照I/O 發生順序進行,無論在同步還是異步工作方式下,都能保證數據的完整性。
“基于SAN 網絡的容災”對應上圖中的“電信部門高速光纜專線”那層。 在操作系統級,也可以采用LVM鏡像的方式實現基于SAN 網絡的異地容災[8]。 業內較多地采用VxVM(Veritas Volume Manager)卷鏡像技術,像AIX, HP-UX 等操作系統,本身也有LVM 命令來實現鏡像,但由于操作系統LVM 的局限性,難以作為異地容災使用。VxVM 也是Symantec 公司容災套件Storage Foundation 系列軟件模塊之一。利用VxVM 卷鏡像技術構建容災系統比較簡單,它只有一個條件,就是將生產中心和災備中心之間的SAN 存儲區域網絡通過光纖連接起來,建立城域SAN 存儲網絡。 然后,就可以通過VxVM 提供的非常成熟的跨陣列卷鏡像技術來實現異地容災。 從原理上講,在城域SAN 上的兩套存儲系統之間的卷鏡像,和在同一個機房內的SAN 上的兩個存儲系統之間的鏡像并沒有任何區別。
使用VxVM 提供的邏輯卷鏡像技術有如下優點:
1) 易操作,利用城域SAN 網絡和VxVM 鏡像功能,可以非常輕松的實現數據系統的異地容災。
2) 維護方便,消除了復制技術(無論是同步還是異步)的切換的動作,從而保證零停機時間,零數據損失。
3) 由于磁盤或者鏈路等方面的故障導致主生產環境的邏輯卷不能訪問時, 應用或者數據庫不會因為故障而停止,會繼續在災備中心的LV 鏡像上執行I/O,整個過程對應用透明,不需要也不會中斷業務系統的正常運行。
4) 當邏輯卷的鏡像被破壞時, 可以利用VxVM 的DCO (Data Change Object) 與FMR (Fast Mirror Resync)技術進行鏡像的快速增量同步。
但是,邏輯卷鏡像技術會受到距離限制,在較近范圍內進行,生產中心與災備中心通過裸光纖將兩邊的SAN 環境聯接起來。如果距離較遠,無法直接部署光纖聯接,可以租用運營商光纖將生產中心和災備中心的SAN 網絡連接起來。 常用的技術有DWDM(Dense Wave Division Multiplexing)技術。
在主機或者數據庫層面實施數據庫容災方案,除了對存儲IO 性能會有一定影響外,還會消耗部分主機資源以及影響數據庫性能。 如果使用基于陣列的復制技術,則可以減輕主機與數據庫在這方面的負擔。
基于陣列的復制技術有本地復制和遠程復制兩種。
和正常的數據庫備份一樣,我們也可以在存儲端定期對存儲設備進行本地復制,創建存儲設備的一致性PIT(point in time)本地副本。再配合遠程復制技術,就能實現滿足容災規劃要求的RPO 指標,該種實現方式遠程站點的RPO 通常在小時級。 基于陣列的復制技術可以記錄源設備和目標設備上的變化情況,因而,所有再同步操作都可以增量完成。 容災過程如圖2所示。
在PIT 上, 數據或者備份的數據是滿足一致性的。而增量備份,是在基準備份的基礎上進行的,基準備份之后,如果源設備上面的數據發生了變更,則下次備份時,可以只備份基準備份以后發生變化的那部分數據。
可以用于陣列本地復制的技術主要有: EMC Symmetrix 陣 列 的TimeFinder 系列產品以及EMC CLARiiON 與Celerra 陣列的SnapView 與SnapSure 產品;IBM 存儲產品的FlashCopy 以及VolumeCopy 技術;HDS 的ShadowImage 技術等。
基于陣列的遠程存儲復制主要有同步、異步模式,比較如表1所示。

圖2 基于陣列的本地復制與容災原理圖Fig.2 Local replication and disaster tolerance principle based on the array

表1 基于陣列的遠程容災復制比較Tab.1 Comparison of remote disaster tolerance replication based on array
與同步復制相比,異步遠程復制提供了一種非0 的RPO 災難恢復解決方案,RPO 取決于站點緩沖區大小、網絡帶寬、源端寫負載。
遠程站點的數據副本可以在復制分離操作下被正常訪問,可用于備份、測試、數據倉庫報表生成、以及決策支持等。在數據副本使用的過程中,副本數據由于IO 操作發生變化。當副本數據使用完畢,可以丟棄副本數據變化重新建立復制關系,或者采用還原操作保留遠程數據副本而丟棄主站點數據變化繼續進行復制。
典型的用于陣列遠程復制的技術有:EMC Symmetrix 支持的SRDF, CLARiiON 支持的EMC MirrorView,EMC SAN Copy, HDS 廠商的TrueCopy, HUR, 以及IBM 的PPRC, Remote Mirror, HP 的BusinessCopy 等等。
為了進一步減少主站點上存儲的I/O 壓力,一些存儲廠商把容災復制過程中的“推數據”方式改成“拉數據”方式,容災環境會主動地將數據從主站點拉回,如HDS HUR 復制技術。
通常在兩站點存儲復制中,當主站點出現故障,可以將應用切換到容災站點繼續服務,而當兩站點間網絡失效或者容災站點出現故障時,主站點能繼續工作,只是沒有了遠程災備保障。 在同步復制模式下,兩站點間的距離通常較近,當發生區域性災難時,兩站點可能同時遭到破壞,從而導致額外的RPO/RTO。 區域性災難一般不會影響到異步復制模式下的容災站點,因此,在不考慮成本的情況下,三站點復制可以用來緩減兩站點復制的風險同時又能滿足低的RPO/RTO 要求。
三站點容災又叫兩地三中心容災,有如圖3所示三站點級聯容災和三站點星型容災兩種。

圖3 三站點容災結構原理Fig.3 Three-site disaster tolerance structure principle
三站點容災中,主站點與同城容災站點距離較近,采用同步復制模式,當主站點出現災難性故障,可以快速切換到同城容災站點,理論上可以實現0 或者接近于0 的RPO 與RTO。然而,在區域性的大災難中,主站點和同城站點都有可能被破壞,這時,異地容災站點可以接管業務系統。由于主站點或同城容災站點到異地容災站點間采用的是異步復制模式,從而會存在有限的RPO。 在級聯式容災中,異地容災站點的RPO 取決于同城容災站點失效與主站點失效之間的時間,以及異步復制過程的延時;在星型容災環境中,異地容災站點的RPO 則主要取決于異步復制過程的延時。 由于區域性災難通常不會影響到異步復制模式下的目標站點,因此,三站點容災可以有效預防區域性災難。 圖4是一個級聯式三站點容災場景。

圖4 級聯式三站點容災結構Fig.4 The cascading disaster tolerance structure principle of three sites
圖4涉及到3 個站點之間的數據復制,其中主站點與同城站點之間采用了SRDF/S(同步復制)技術,該技術采用DWDM 設備,能夠在同一根光纖中,把不同的波長同時進行組合和傳輸。 在給定的信息傳輸容量下,可以減少所需要的光纖的總數量。這是基于EMC Symmetrix 陣列的復制技術。同城站點和異地容災站點之間采用的是SRDF/A(異步復制)技術,該技術采用了ATM 傳輸網絡,ATM 是以信元為基礎的一種分組交換和復用技術。采用面向連接的傳輸方式,將數據分割成固定長度的信元,通過虛連接進行交換,集交換、復用、傳輸為一體,具有高速和支持許多種數據類型傳輸的特點。關于同步復制與異步復制的具體比較可參考上述“基于陣列的遠程容災”的分析。
三站點容災形式比較靈活,不局限于某個存儲廠商的某種技術,可視情況混合使用,甚至可以將主機LVM 層的復制技術與存儲復制技術混合起來構建三站點容災環境,如圖5所示。

圖5 主機OS 層復制技術與存儲復制技術混合的三站點容災實例Fig.5 Three-site disaster tolerance example of the host OS layer replication technology combined with the storage replication technology
在實際實施中,基于對IDC 相關的各項IT 基礎設施及配套設施建設的成本考慮。企業往往會適當降低對容災站點的要求,甚至可能會由于異地容災站點啟用的可能性較小,使得異地容災站點不(完全)具備業務接管的能力,只是作為一個數據備份站點投入使用。 同時,為了緩減主站點的訪問壓力,將ETL 或者數據查詢等業務部署在容災站點上,以充分利用容災站點的資源。
實際上,數據庫的容災技術多種多樣,不同種類的數據庫又有其具體的解決方案,本文只是從OS 以及存儲級別綜述了數據庫中可以通用的部分容災技術,尤其適合于中、大型企業級數據庫。
隨著近年來互聯網行業的迅速發展,數據庫技術也出現了前所未有的挑戰。 以Oracle, DB2, SQL Server等為代表的傳統型集中式數據庫越來越難以滿足海量數據、高并發等要求,甚至在一些超大型企業(如阿里巴巴)中出現了去IOE(IBM 主機, Oracle 數據庫, EMC 存儲)實踐,分布式數據庫技術的發展與應用逐漸興起。 在存儲技術方面,也相應的也出現了分布式存儲,大數據時代已經來臨,從而數據庫容災技術也面臨著更高的要求。
[1] 劉麗潔.數據庫容災技術及容災實施方案理論的研究[J].科技風,2014(13):25-26.
[2] 馬薇,婁雨.Oracle 數據庫容災備份中的流復制技術研究[J].科技通報,2012(2):182-184.
[3] 王建波.數據容災及其相關技術研究[J].數字化用戶,2014(7):104-105.
[4] 曹文琴,朱海燕,劉映球.基于Oracle 數據庫容災技術的研究[J].制造業自動化,2012,11(21):61-64.
[5] 劉淑鶴,王芳.數據容災技術研究[J].網絡安全技術與應用,2013(9):45-47.
[6] 王津,蔣國良.容災備份技術在人社信息化建設中的應用[J].城市建設理論研究,2014(1):109
[7] 姜先貴,馬瑞濤.IMS 容災原理及部署策略探討[J].郵電設計技術,2014(5):25-29.
[8] 孫玲芳,王成文,徐會.基于語義Web 的關系型虛擬社區服務發現模型分析[J].華東交通大學學報,2014,31(2):105-111.