陳小建
(華東交通大學(xué)軌道交通學(xué)院,江西 南昌330013)
數(shù)據(jù)庫(kù)的容災(zāi)技術(shù)是對(duì)數(shù)據(jù)庫(kù)實(shí)現(xiàn)高可用性的重要保障[1]。 一些黑客或恐怖分子經(jīng)常對(duì)數(shù)據(jù)庫(kù)網(wǎng)絡(luò)進(jìn)行攻擊,此外,地震、水災(zāi)、火災(zāi)、雷擊等自然災(zāi)害也會(huì)對(duì)數(shù)據(jù)庫(kù)造成損害而無法繼續(xù)提供數(shù)據(jù)服務(wù)時(shí),這對(duì)國(guó)家或企業(yè)將會(huì)造成不可估量的損失[2]。 如果擁有數(shù)據(jù)庫(kù)容災(zāi)系統(tǒng),可以及時(shí)接管受災(zāi)數(shù)據(jù)庫(kù)系統(tǒng),從而保證業(yè)務(wù)持續(xù)性。本質(zhì)上,數(shù)據(jù)庫(kù)系統(tǒng)的容災(zāi)技術(shù)就是當(dāng)前對(duì)外服務(wù)的生產(chǎn)數(shù)據(jù)庫(kù)環(huán)境的一個(gè)備份[3]?;诖耍疚闹攸c(diǎn)對(duì)企業(yè)生產(chǎn)環(huán)境中基于操作系統(tǒng)及存儲(chǔ)級(jí)別的數(shù)據(jù)庫(kù)容災(zāi)技術(shù)進(jìn)行闡述。
備份是保證數(shù)據(jù)庫(kù)可用性的重要方式。根據(jù)備份對(duì)象的不同,可以將其分為物理備份和邏輯備份。物理備份的原理是基于數(shù)據(jù)塊的,實(shí)現(xiàn)方法使用操作系統(tǒng)命令或者專門的數(shù)據(jù)庫(kù) 物理備份工具,一般情況下都支持增量備份,恢復(fù)對(duì)象主要是對(duì)數(shù)據(jù)塊、數(shù)據(jù)文件等物理級(jí)別的恢復(fù)。邏輯備份的原理是基于具體的數(shù)據(jù)庫(kù)對(duì)象,如表、索引、過程等;實(shí)現(xiàn)方法是使用專門的數(shù)據(jù)庫(kù)邏輯備份工具進(jìn)行備份,一般為數(shù)據(jù)庫(kù)對(duì)象的備份,但難以提供增量備份,恢復(fù)也只能是數(shù)據(jù)庫(kù)對(duì)象等邏輯層面的恢復(fù)。
根據(jù)備份的時(shí)間特點(diǎn),又可分為靜態(tài)備份和動(dòng)態(tài)備份。 靜態(tài)備份基于特定的時(shí)間點(diǎn)(RPO),超過特定時(shí)間點(diǎn)之后的數(shù)據(jù)就不能恢復(fù),至于恢復(fù)時(shí)間(RTO),視備份集的大小、系統(tǒng)IO 能力等而定;備份的技術(shù)難度和維護(hù)成本都比較低。 動(dòng)態(tài)備份的原理是從某個(gè)基準(zhǔn)備份開始動(dòng)態(tài)持續(xù)備份,可以實(shí)現(xiàn)0 或者接近于0 的RPO/RTO,備份的技術(shù)難度和維護(hù)成本都比較高。
影響數(shù)據(jù)庫(kù)容災(zāi)的關(guān)鍵因素有:①網(wǎng)絡(luò)帶寬因素;②磁盤IO 因素;③RPO/RTO 指標(biāo);④網(wǎng)絡(luò)安全。這些因素在文獻(xiàn)[4]中已做了比較詳細(xì)的分析,在此不再敘述。
操作系統(tǒng)級(jí)容災(zāi)可以基于以太網(wǎng)、SAN 網(wǎng)絡(luò)來實(shí)現(xiàn),如圖1所示。
圖1 基于以太網(wǎng)/SAN 網(wǎng)絡(luò)的操作系統(tǒng)級(jí)容災(zāi)原理Fig.1 The operating system level disaster tolerance principle based on the Ethernet/SAN network
操作系統(tǒng)級(jí)容災(zāi)的工作方式是通過“基于以太網(wǎng)的容災(zāi)”方式,或“基于SAN 網(wǎng)絡(luò)的容災(zāi)”方式將源端(左邊)數(shù)據(jù)庫(kù)的變更傳遞到目標(biāo)端數(shù)據(jù)庫(kù)(右邊)上,并在目標(biāo)端數(shù)據(jù)庫(kù)上重現(xiàn)源端的變更,從而使兩邊的數(shù)據(jù)達(dá)到一致,實(shí)現(xiàn)容災(zāi)目的[5]。
應(yīng)用服務(wù)器群代表一個(gè)或者多個(gè)應(yīng)用程序運(yùn)行在這些服務(wù)器上面, 有的是出于業(yè)務(wù)種類的不一樣,需要使用多臺(tái)服務(wù)器,有的是因?yàn)槟硞€(gè)業(yè)務(wù)訪問壓力太大,需要多個(gè)服務(wù)器來分擔(dān)壓力。 而數(shù)據(jù)庫(kù)服務(wù)器群可以是一個(gè)數(shù)據(jù)庫(kù)的集群,也可以是多個(gè)數(shù)據(jù)庫(kù)的簡(jiǎn)單組合。 最下面的存儲(chǔ)是用于存放數(shù)據(jù)庫(kù)數(shù)據(jù)的硬件設(shè)備,帶庫(kù)是專門用做備份的磁帶設(shè)備。
以下從兩個(gè)方面闡述圖1的工作原理。
“基于以太網(wǎng)的容災(zāi)”對(duì)應(yīng)的是圖中的“電信部門以太網(wǎng)專線或Internet”那層。 它可以采用諸如VVR(Veritas Volume Replicator)的卷復(fù)制技術(shù)實(shí)現(xiàn)。 VVR 是Symantec 公司容災(zāi)套件Storage Foundation 系列軟件中的一個(gè)模塊。 VVR 復(fù)制基于邏輯卷(Logical Volume, LV),復(fù)制前先將DBMS 所在的一個(gè)或多個(gè)卷定義為RVG(Replicated Volume Group),數(shù)據(jù)庫(kù)向RVG 中的卷寫入數(shù)據(jù)時(shí),會(huì)先在SRL (Storage Replicator Log)卷中寫入日志,日志經(jīng)過網(wǎng)絡(luò)傳輸后在目標(biāo)端的RVG 上重現(xiàn)I/O[6-7]。SRL 保證數(shù)據(jù)復(fù)制嚴(yán)格按照寫順序進(jìn)行,當(dāng)SRL 卷寫滿后,DCM(Data Change Map)開始記錄變化過的數(shù)據(jù)塊塊號(hào),以便在復(fù)制正常后仍保持主、備端的數(shù)據(jù)一致性。
VVR 復(fù)制的優(yōu)點(diǎn)主要有:距離不限;支持異構(gòu)的存儲(chǔ)和操作系統(tǒng);支持同步和異步復(fù)制;默認(rèn)自適應(yīng);在網(wǎng)絡(luò)延時(shí)情況較好、數(shù)據(jù)能夠及時(shí)復(fù)制;工作在同步方式,當(dāng)網(wǎng)絡(luò)延時(shí)情況較差,數(shù)據(jù)不能及時(shí)復(fù)制;工作在異步方式下,保證主節(jié)點(diǎn)的I/O 性能;VVR 復(fù)制嚴(yán)格按照I/O 發(fā)生順序進(jìn)行,無論在同步還是異步工作方式下,都能保證數(shù)據(jù)的完整性。
“基于SAN 網(wǎng)絡(luò)的容災(zāi)”對(duì)應(yīng)上圖中的“電信部門高速光纜專線”那層。 在操作系統(tǒng)級(jí),也可以采用LVM鏡像的方式實(shí)現(xiàn)基于SAN 網(wǎng)絡(luò)的異地容災(zāi)[8]。 業(yè)內(nèi)較多地采用VxVM(Veritas Volume Manager)卷鏡像技術(shù),像AIX, HP-UX 等操作系統(tǒng),本身也有LVM 命令來實(shí)現(xiàn)鏡像,但由于操作系統(tǒng)LVM 的局限性,難以作為異地容災(zāi)使用。VxVM 也是Symantec 公司容災(zāi)套件Storage Foundation 系列軟件模塊之一。利用VxVM 卷鏡像技術(shù)構(gòu)建容災(zāi)系統(tǒng)比較簡(jiǎn)單,它只有一個(gè)條件,就是將生產(chǎn)中心和災(zāi)備中心之間的SAN 存儲(chǔ)區(qū)域網(wǎng)絡(luò)通過光纖連接起來,建立城域SAN 存儲(chǔ)網(wǎng)絡(luò)。 然后,就可以通過VxVM 提供的非常成熟的跨陣列卷鏡像技術(shù)來實(shí)現(xiàn)異地容災(zāi)。 從原理上講,在城域SAN 上的兩套存儲(chǔ)系統(tǒng)之間的卷鏡像,和在同一個(gè)機(jī)房?jī)?nèi)的SAN 上的兩個(gè)存儲(chǔ)系統(tǒng)之間的鏡像并沒有任何區(qū)別。
使用VxVM 提供的邏輯卷鏡像技術(shù)有如下優(yōu)點(diǎn):
1) 易操作,利用城域SAN 網(wǎng)絡(luò)和VxVM 鏡像功能,可以非常輕松的實(shí)現(xiàn)數(shù)據(jù)系統(tǒng)的異地容災(zāi)。
2) 維護(hù)方便,消除了復(fù)制技術(shù)(無論是同步還是異步)的切換的動(dòng)作,從而保證零停機(jī)時(shí)間,零數(shù)據(jù)損失。
3) 由于磁盤或者鏈路等方面的故障導(dǎo)致主生產(chǎn)環(huán)境的邏輯卷不能訪問時(shí), 應(yīng)用或者數(shù)據(jù)庫(kù)不會(huì)因?yàn)楣收隙V?,?huì)繼續(xù)在災(zāi)備中心的LV 鏡像上執(zhí)行I/O,整個(gè)過程對(duì)應(yīng)用透明,不需要也不會(huì)中斷業(yè)務(wù)系統(tǒng)的正常運(yùn)行。
4) 當(dāng)邏輯卷的鏡像被破壞時(shí), 可以利用VxVM 的DCO (Data Change Object) 與FMR (Fast Mirror Resync)技術(shù)進(jìn)行鏡像的快速增量同步。
但是,邏輯卷鏡像技術(shù)會(huì)受到距離限制,在較近范圍內(nèi)進(jìn)行,生產(chǎn)中心與災(zāi)備中心通過裸光纖將兩邊的SAN 環(huán)境聯(lián)接起來。如果距離較遠(yuǎn),無法直接部署光纖聯(lián)接,可以租用運(yùn)營(yíng)商光纖將生產(chǎn)中心和災(zāi)備中心的SAN 網(wǎng)絡(luò)連接起來。 常用的技術(shù)有DWDM(Dense Wave Division Multiplexing)技術(shù)。
在主機(jī)或者數(shù)據(jù)庫(kù)層面實(shí)施數(shù)據(jù)庫(kù)容災(zāi)方案,除了對(duì)存儲(chǔ)IO 性能會(huì)有一定影響外,還會(huì)消耗部分主機(jī)資源以及影響數(shù)據(jù)庫(kù)性能。 如果使用基于陣列的復(fù)制技術(shù),則可以減輕主機(jī)與數(shù)據(jù)庫(kù)在這方面的負(fù)擔(dān)。
基于陣列的復(fù)制技術(shù)有本地復(fù)制和遠(yuǎn)程復(fù)制兩種。
和正常的數(shù)據(jù)庫(kù)備份一樣,我們也可以在存儲(chǔ)端定期對(duì)存儲(chǔ)設(shè)備進(jìn)行本地復(fù)制,創(chuàng)建存儲(chǔ)設(shè)備的一致性PIT(point in time)本地副本。再配合遠(yuǎn)程復(fù)制技術(shù),就能實(shí)現(xiàn)滿足容災(zāi)規(guī)劃要求的RPO 指標(biāo),該種實(shí)現(xiàn)方式遠(yuǎn)程站點(diǎn)的RPO 通常在小時(shí)級(jí)。 基于陣列的復(fù)制技術(shù)可以記錄源設(shè)備和目標(biāo)設(shè)備上的變化情況,因而,所有再同步操作都可以增量完成。 容災(zāi)過程如圖2所示。
在PIT 上, 數(shù)據(jù)或者備份的數(shù)據(jù)是滿足一致性的。而增量備份,是在基準(zhǔn)備份的基礎(chǔ)上進(jìn)行的,基準(zhǔn)備份之后,如果源設(shè)備上面的數(shù)據(jù)發(fā)生了變更,則下次備份時(shí),可以只備份基準(zhǔn)備份以后發(fā)生變化的那部分?jǐn)?shù)據(jù)。
可以用于陣列本地復(fù)制的技術(shù)主要有: EMC Symmetrix 陣 列 的TimeFinder 系列產(chǎn)品以及EMC CLARiiON 與Celerra 陣列的SnapView 與SnapSure 產(chǎn)品;IBM 存儲(chǔ)產(chǎn)品的FlashCopy 以及VolumeCopy 技術(shù);HDS 的ShadowImage 技術(shù)等。
基于陣列的遠(yuǎn)程存儲(chǔ)復(fù)制主要有同步、異步模式,比較如表1所示。
圖2 基于陣列的本地復(fù)制與容災(zāi)原理圖Fig.2 Local replication and disaster tolerance principle based on the array
表1 基于陣列的遠(yuǎn)程容災(zāi)復(fù)制比較Tab.1 Comparison of remote disaster tolerance replication based on array
與同步復(fù)制相比,異步遠(yuǎn)程復(fù)制提供了一種非0 的RPO 災(zāi)難恢復(fù)解決方案,RPO 取決于站點(diǎn)緩沖區(qū)大小、網(wǎng)絡(luò)帶寬、源端寫負(fù)載。
遠(yuǎn)程站點(diǎn)的數(shù)據(jù)副本可以在復(fù)制分離操作下被正常訪問,可用于備份、測(cè)試、數(shù)據(jù)倉(cāng)庫(kù)報(bào)表生成、以及決策支持等。在數(shù)據(jù)副本使用的過程中,副本數(shù)據(jù)由于IO 操作發(fā)生變化。當(dāng)副本數(shù)據(jù)使用完畢,可以丟棄副本數(shù)據(jù)變化重新建立復(fù)制關(guān)系,或者采用還原操作保留遠(yuǎn)程數(shù)據(jù)副本而丟棄主站點(diǎn)數(shù)據(jù)變化繼續(xù)進(jìn)行復(fù)制。
典型的用于陣列遠(yuǎn)程復(fù)制的技術(shù)有:EMC Symmetrix 支持的SRDF, CLARiiON 支持的EMC MirrorView,EMC SAN Copy, HDS 廠商的TrueCopy, HUR, 以及IBM 的PPRC, Remote Mirror, HP 的BusinessCopy 等等。
為了進(jìn)一步減少主站點(diǎn)上存儲(chǔ)的I/O 壓力,一些存儲(chǔ)廠商把容災(zāi)復(fù)制過程中的“推數(shù)據(jù)”方式改成“拉數(shù)據(jù)”方式,容災(zāi)環(huán)境會(huì)主動(dòng)地將數(shù)據(jù)從主站點(diǎn)拉回,如HDS HUR 復(fù)制技術(shù)。
通常在兩站點(diǎn)存儲(chǔ)復(fù)制中,當(dāng)主站點(diǎn)出現(xiàn)故障,可以將應(yīng)用切換到容災(zāi)站點(diǎn)繼續(xù)服務(wù),而當(dāng)兩站點(diǎn)間網(wǎng)絡(luò)失效或者容災(zāi)站點(diǎn)出現(xiàn)故障時(shí),主站點(diǎn)能繼續(xù)工作,只是沒有了遠(yuǎn)程災(zāi)備保障。 在同步復(fù)制模式下,兩站點(diǎn)間的距離通常較近,當(dāng)發(fā)生區(qū)域性災(zāi)難時(shí),兩站點(diǎn)可能同時(shí)遭到破壞,從而導(dǎo)致額外的RPO/RTO。 區(qū)域性災(zāi)難一般不會(huì)影響到異步復(fù)制模式下的容災(zāi)站點(diǎn),因此,在不考慮成本的情況下,三站點(diǎn)復(fù)制可以用來緩減兩站點(diǎn)復(fù)制的風(fēng)險(xiǎn)同時(shí)又能滿足低的RPO/RTO 要求。
三站點(diǎn)容災(zāi)又叫兩地三中心容災(zāi),有如圖3所示三站點(diǎn)級(jí)聯(lián)容災(zāi)和三站點(diǎn)星型容災(zāi)兩種。
圖3 三站點(diǎn)容災(zāi)結(jié)構(gòu)原理Fig.3 Three-site disaster tolerance structure principle
三站點(diǎn)容災(zāi)中,主站點(diǎn)與同城容災(zāi)站點(diǎn)距離較近,采用同步復(fù)制模式,當(dāng)主站點(diǎn)出現(xiàn)災(zāi)難性故障,可以快速切換到同城容災(zāi)站點(diǎn),理論上可以實(shí)現(xiàn)0 或者接近于0 的RPO 與RTO。然而,在區(qū)域性的大災(zāi)難中,主站點(diǎn)和同城站點(diǎn)都有可能被破壞,這時(shí),異地容災(zāi)站點(diǎn)可以接管業(yè)務(wù)系統(tǒng)。由于主站點(diǎn)或同城容災(zāi)站點(diǎn)到異地容災(zāi)站點(diǎn)間采用的是異步復(fù)制模式,從而會(huì)存在有限的RPO。 在級(jí)聯(lián)式容災(zāi)中,異地容災(zāi)站點(diǎn)的RPO 取決于同城容災(zāi)站點(diǎn)失效與主站點(diǎn)失效之間的時(shí)間,以及異步復(fù)制過程的延時(shí);在星型容災(zāi)環(huán)境中,異地容災(zāi)站點(diǎn)的RPO 則主要取決于異步復(fù)制過程的延時(shí)。 由于區(qū)域性災(zāi)難通常不會(huì)影響到異步復(fù)制模式下的目標(biāo)站點(diǎn),因此,三站點(diǎn)容災(zāi)可以有效預(yù)防區(qū)域性災(zāi)難。 圖4是一個(gè)級(jí)聯(lián)式三站點(diǎn)容災(zāi)場(chǎng)景。
圖4 級(jí)聯(lián)式三站點(diǎn)容災(zāi)結(jié)構(gòu)Fig.4 The cascading disaster tolerance structure principle of three sites
圖4涉及到3 個(gè)站點(diǎn)之間的數(shù)據(jù)復(fù)制,其中主站點(diǎn)與同城站點(diǎn)之間采用了SRDF/S(同步復(fù)制)技術(shù),該技術(shù)采用DWDM 設(shè)備,能夠在同一根光纖中,把不同的波長(zhǎng)同時(shí)進(jìn)行組合和傳輸。 在給定的信息傳輸容量下,可以減少所需要的光纖的總數(shù)量。這是基于EMC Symmetrix 陣列的復(fù)制技術(shù)。同城站點(diǎn)和異地容災(zāi)站點(diǎn)之間采用的是SRDF/A(異步復(fù)制)技術(shù),該技術(shù)采用了ATM 傳輸網(wǎng)絡(luò),ATM 是以信元為基礎(chǔ)的一種分組交換和復(fù)用技術(shù)。采用面向連接的傳輸方式,將數(shù)據(jù)分割成固定長(zhǎng)度的信元,通過虛連接進(jìn)行交換,集交換、復(fù)用、傳輸為一體,具有高速和支持許多種數(shù)據(jù)類型傳輸?shù)奶攸c(diǎn)。關(guān)于同步復(fù)制與異步復(fù)制的具體比較可參考上述“基于陣列的遠(yuǎn)程容災(zāi)”的分析。
三站點(diǎn)容災(zāi)形式比較靈活,不局限于某個(gè)存儲(chǔ)廠商的某種技術(shù),可視情況混合使用,甚至可以將主機(jī)LVM 層的復(fù)制技術(shù)與存儲(chǔ)復(fù)制技術(shù)混合起來構(gòu)建三站點(diǎn)容災(zāi)環(huán)境,如圖5所示。
圖5 主機(jī)OS 層復(fù)制技術(shù)與存儲(chǔ)復(fù)制技術(shù)混合的三站點(diǎn)容災(zāi)實(shí)例Fig.5 Three-site disaster tolerance example of the host OS layer replication technology combined with the storage replication technology
在實(shí)際實(shí)施中,基于對(duì)IDC 相關(guān)的各項(xiàng)IT 基礎(chǔ)設(shè)施及配套設(shè)施建設(shè)的成本考慮。企業(yè)往往會(huì)適當(dāng)降低對(duì)容災(zāi)站點(diǎn)的要求,甚至可能會(huì)由于異地容災(zāi)站點(diǎn)啟用的可能性較小,使得異地容災(zāi)站點(diǎn)不(完全)具備業(yè)務(wù)接管的能力,只是作為一個(gè)數(shù)據(jù)備份站點(diǎn)投入使用。 同時(shí),為了緩減主站點(diǎn)的訪問壓力,將ETL 或者數(shù)據(jù)查詢等業(yè)務(wù)部署在容災(zāi)站點(diǎn)上,以充分利用容災(zāi)站點(diǎn)的資源。
實(shí)際上,數(shù)據(jù)庫(kù)的容災(zāi)技術(shù)多種多樣,不同種類的數(shù)據(jù)庫(kù)又有其具體的解決方案,本文只是從OS 以及存儲(chǔ)級(jí)別綜述了數(shù)據(jù)庫(kù)中可以通用的部分容災(zāi)技術(shù),尤其適合于中、大型企業(yè)級(jí)數(shù)據(jù)庫(kù)。
隨著近年來互聯(lián)網(wǎng)行業(yè)的迅速發(fā)展,數(shù)據(jù)庫(kù)技術(shù)也出現(xiàn)了前所未有的挑戰(zhàn)。 以O(shè)racle, DB2, SQL Server等為代表的傳統(tǒng)型集中式數(shù)據(jù)庫(kù)越來越難以滿足海量數(shù)據(jù)、高并發(fā)等要求,甚至在一些超大型企業(yè)(如阿里巴巴)中出現(xiàn)了去IOE(IBM 主機(jī), Oracle 數(shù)據(jù)庫(kù), EMC 存儲(chǔ))實(shí)踐,分布式數(shù)據(jù)庫(kù)技術(shù)的發(fā)展與應(yīng)用逐漸興起。 在存儲(chǔ)技術(shù)方面,也相應(yīng)的也出現(xiàn)了分布式存儲(chǔ),大數(shù)據(jù)時(shí)代已經(jīng)來臨,從而數(shù)據(jù)庫(kù)容災(zāi)技術(shù)也面臨著更高的要求。
[1] 劉麗潔.數(shù)據(jù)庫(kù)容災(zāi)技術(shù)及容災(zāi)實(shí)施方案理論的研究[J].科技風(fēng),2014(13):25-26.
[2] 馬薇,婁雨.Oracle 數(shù)據(jù)庫(kù)容災(zāi)備份中的流復(fù)制技術(shù)研究[J].科技通報(bào),2012(2):182-184.
[3] 王建波.數(shù)據(jù)容災(zāi)及其相關(guān)技術(shù)研究[J].數(shù)字化用戶,2014(7):104-105.
[4] 曹文琴,朱海燕,劉映球.基于Oracle 數(shù)據(jù)庫(kù)容災(zāi)技術(shù)的研究[J].制造業(yè)自動(dòng)化,2012,11(21):61-64.
[5] 劉淑鶴,王芳.數(shù)據(jù)容災(zāi)技術(shù)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2013(9):45-47.
[6] 王津,蔣國(guó)良.容災(zāi)備份技術(shù)在人社信息化建設(shè)中的應(yīng)用[J].城市建設(shè)理論研究,2014(1):109
[7] 姜先貴,馬瑞濤.IMS 容災(zāi)原理及部署策略探討[J].郵電設(shè)計(jì)技術(shù),2014(5):25-29.
[8] 孫玲芳,王成文,徐會(huì).基于語(yǔ)義Web 的關(guān)系型虛擬社區(qū)服務(wù)發(fā)現(xiàn)模型分析[J].華東交通大學(xué)學(xué)報(bào),2014,31(2):105-111.