本發(fā)明涉及針對(duì)Oracle數(shù)據(jù)庫的應(yīng)用容災(zāi),尤其是涉及一種針對(duì)Oracle Exadata一體機(jī)的異構(gòu)容災(zāi)裝置及方法。
背景技術(shù):
Oracle Data Guard概念的引出是為了提高Oracle應(yīng)用的高可用性,通過將Oracle的archivelog和redolog傳輸?shù)侥繕?biāo)機(jī)器,并將日志在目標(biāo)機(jī)器上進(jìn)行重演的方式實(shí)現(xiàn)Oracle數(shù)據(jù)庫本地或異地容災(zāi)。Oracle Exadata一體機(jī)內(nèi)部集成混合列壓縮功能(HCC),這種壓縮機(jī)制在空間和性能做了很好的平衡,但是也使得經(jīng)過壓縮后的數(shù)據(jù)必須通過Exadata平臺(tái)解壓后才能訪問。如果采用非Exadata的架構(gòu)實(shí)現(xiàn)Exadata Data Guard的容災(zāi),Data Guard的角色切換后被壓縮的數(shù)據(jù)必須通過手工解壓后才能訪問。解壓的過程耗時(shí)較長(zhǎng),而且混合列壓縮比非常高,解壓后還可能會(huì)面臨空間不足的問題。
目前常見實(shí)現(xiàn)Oracle Exadata容災(zāi)的有兩周:一是通過另一臺(tái)Exadata實(shí)現(xiàn)Exadata的容災(zāi);二是通過傳統(tǒng)的Data Guard架構(gòu)實(shí)現(xiàn)Exadata一體機(jī)到傳統(tǒng)應(yīng)用服務(wù)器的容災(zāi)。
隨著信息化系統(tǒng)發(fā)展的加快,Exadata憑借強(qiáng)大的處理能力,已經(jīng)在電信,金融等重要行業(yè)的數(shù)據(jù)中心和核心業(yè)務(wù)系統(tǒng)得到了應(yīng)用。電信和金融等重要行業(yè)核業(yè)業(yè)務(wù)系統(tǒng)的實(shí)時(shí)性很高,一旦數(shù)據(jù)庫系統(tǒng)損壞就會(huì)需要向容災(zāi)中心切換,因?yàn)榛旌狭袎嚎s對(duì)平臺(tái)的要求,使得Exadata一體機(jī)在高RPO(Recover Point Objective,恢復(fù)點(diǎn)目標(biāo))和RTO(Recover Time Objective,恢復(fù)時(shí)間目標(biāo))的容災(zāi)因?yàn)樵贓xadata一體機(jī)到傳統(tǒng)應(yīng)用服務(wù)器異構(gòu)容災(zāi)實(shí)現(xiàn)中不能保證RPO實(shí)現(xiàn),必須依賴Exadata一體機(jī)到Exadata一體機(jī)的容災(zāi)實(shí)現(xiàn)。
Exadata一體機(jī)到Exadata一體機(jī)的容災(zāi)實(shí)現(xiàn)實(shí),導(dǎo)致用戶被Oracle公司業(yè)務(wù)鎖定,不僅異地容災(zāi)系統(tǒng)使用率很低,而且在系統(tǒng)管理、擴(kuò)容等工作都收到Oracle公司的限制。同時(shí)極大的限制了在非Oracle環(huán)境對(duì)數(shù)據(jù)分析和再次利用的工作。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對(duì)上述問題提供一種自動(dòng)解壓、硬件平臺(tái)依賴性低、容災(zāi)數(shù)據(jù)使用靈活以及容災(zāi)后RTO高的針對(duì)Oracle Exadata一體機(jī)的異構(gòu)容災(zāi)裝置及方法。
本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn):
一種針對(duì)Oracle Exadata一體機(jī)的異構(gòu)容災(zāi)裝置,其特征在于,用于實(shí)現(xiàn)Oracle Exadata一體機(jī)的異構(gòu)容災(zāi),該裝置包括:
存儲(chǔ)節(jié)點(diǎn),用于讀取存儲(chǔ)在磁盤上的由DataGuard傳輸?shù)臄?shù)據(jù)塊;
CU解壓組件,用于解析存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)塊并根據(jù)解析結(jié)果對(duì)該數(shù)據(jù)塊進(jìn)行操作;
計(jì)算節(jié)點(diǎn),用于請(qǐng)求數(shù)據(jù),并對(duì)經(jīng)過CU解壓組件處理后的數(shù)據(jù)進(jìn)行計(jì)算重演實(shí)現(xiàn)容災(zāi);
數(shù)據(jù)傳輸網(wǎng)絡(luò),用于實(shí)現(xiàn)計(jì)算節(jié)點(diǎn)與CU解壓組件之間的通信。
所述CU解壓組件包括:
判斷模塊,用于解析存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)塊,判斷該數(shù)據(jù)塊是否為壓縮數(shù)據(jù)塊;
解壓模塊,用于對(duì)判斷模塊中判斷為壓縮數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行解壓還原。
所述數(shù)據(jù)傳輸網(wǎng)絡(luò)為InfiniBand網(wǎng)絡(luò)。
所述數(shù)據(jù)傳輸網(wǎng)絡(luò)遵循RDMA協(xié)議。
一種針對(duì)Oracle Exadata一體機(jī)的異構(gòu)容災(zāi)方法,其特征在于,該方法包括下列步驟:
1)計(jì)算節(jié)點(diǎn)請(qǐng)求數(shù)據(jù);
2)請(qǐng)求通過數(shù)據(jù)傳輸網(wǎng)絡(luò)傳送給存儲(chǔ)節(jié)點(diǎn);
3)存儲(chǔ)節(jié)點(diǎn)讀取存儲(chǔ)在磁盤上的由DataGuard傳輸?shù)臄?shù)據(jù)塊;
4)CU解壓組件判斷步驟3)中讀取的數(shù)據(jù)塊是否為壓縮數(shù)據(jù)塊,若是則進(jìn)入步驟5),若否則進(jìn)入步驟6);
5)CU解壓組件對(duì)壓縮數(shù)據(jù)塊進(jìn)行解壓還原,得到解壓還原后的數(shù)據(jù)塊;
6)CU解壓組件將步驟4)中讀取的非壓縮數(shù)據(jù)塊和步驟5)中解壓還原后的數(shù)據(jù)塊傳遞給數(shù)據(jù)傳輸網(wǎng)絡(luò);
7)數(shù)據(jù)傳輸網(wǎng)絡(luò)將接收到的數(shù)據(jù)塊傳遞給計(jì)算節(jié)點(diǎn);
8)計(jì)算節(jié)點(diǎn)對(duì)接收到的數(shù)據(jù)塊進(jìn)行計(jì)算重演實(shí)現(xiàn)容災(zāi)。
所述步驟5)中CU解壓組件對(duì)壓縮數(shù)據(jù)塊進(jìn)行解壓還原的具體步驟為:
51)分析接收到的壓縮數(shù)據(jù)塊結(jié)構(gòu),得到該壓縮數(shù)據(jù)塊所屬的CU;
52)提取步驟51)中CU的CUheader;
53)根據(jù)步驟52)中得到的CUheader得到所有屬于此CU的數(shù)據(jù)塊;
54)對(duì)步驟54)中得到的所有屬于此CU的數(shù)據(jù)塊進(jìn)行還原重組,得到解壓還原后的數(shù)據(jù)塊。
所述CU為存儲(chǔ)數(shù)據(jù)的邏輯單位,每個(gè)CU包含一個(gè)CUheader和多個(gè)連續(xù)的數(shù)據(jù)塊。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
(1)在數(shù)據(jù)傳輸網(wǎng)絡(luò)與存儲(chǔ)節(jié)點(diǎn)之間引入解壓組件,通過解壓組件完成Oracle數(shù)據(jù)塊的自動(dòng)還原,不需要手動(dòng)解壓被壓縮的數(shù)據(jù),提高了容災(zāi)后的RTO。
(2)用戶可以在容災(zāi)發(fā)生后根據(jù)需要選擇維持CU解壓轉(zhuǎn)換的模式還是需要將數(shù)據(jù)完全解壓,保證了容災(zāi)環(huán)境下的靈活性。
(3)該針對(duì)Oracle Exadata一體機(jī)的異構(gòu)容災(zāi)方法無需依賴另一臺(tái)Exadata裝置,對(duì)硬件平臺(tái)依賴性低,解除單一廠商鎖定,節(jié)約成本。
(4)該針對(duì)Oracle Exadata一體機(jī)的異構(gòu)容災(zāi)裝置相比于應(yīng)用傳統(tǒng)架構(gòu)的容災(zāi)產(chǎn)品,性能更高,保證了在容災(zāi)接管情況下的業(yè)務(wù)性能要求。
附圖說明
圖1為運(yùn)用混合列壓縮技術(shù)時(shí)CU內(nèi)數(shù)據(jù)存儲(chǔ)方式的示意圖;
圖2為本發(fā)明裝置的系統(tǒng)架構(gòu)原理示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。本實(shí)施例以本發(fā)明技術(shù)方案為前提進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施例。
如圖1所示為Oracle運(yùn)用混合列壓縮時(shí)的數(shù)據(jù)存儲(chǔ)形式,Oracle的混合列壓縮技術(shù),實(shí)際上是融合了列壓縮的高壓縮比和行數(shù)據(jù)庫的訪問特性,將兩者的優(yōu)點(diǎn)結(jié)合起來。Oracle提出了Compression Unit(CU)的概念,在一個(gè)CU內(nèi),是一個(gè)基于列的存儲(chǔ)方式,采用列壓縮,但是一個(gè)CU內(nèi)保存了行的所有字段信息,所以在CU與CU之間,Oracle還是一個(gè)基于行的數(shù)據(jù)庫,訪問某一行,總是只在一個(gè)CU內(nèi)。每個(gè)CU由一些連續(xù)的block組成,CUheader中記錄了每一行的各個(gè)列在CU中的分布情況,在混合列壓縮模式下,一行通常是跨多個(gè)block的。
本實(shí)施例主要基于移動(dòng)自主研發(fā)的數(shù)據(jù)庫一體機(jī)Topdata采用與Oracle Exadata近似的硬件架構(gòu)(即通過Infiniband連接存儲(chǔ)節(jié)點(diǎn)與計(jì)算節(jié)點(diǎn))集成混合列解壓組件實(shí)現(xiàn)混合列解壓工作。如圖2所示,本實(shí)施例提供一種針對(duì)Oracle Exadata一體機(jī)的異構(gòu)容災(zāi)裝置,包括:存儲(chǔ)節(jié)點(diǎn)1,用于讀取存儲(chǔ)在磁盤上的由DataGuard傳輸?shù)臄?shù)據(jù)塊;CU解壓組件2,用于解析存儲(chǔ)節(jié)點(diǎn)1讀取的數(shù)據(jù)塊并根據(jù)解析結(jié)果對(duì)該數(shù)據(jù)塊進(jìn)行操作;計(jì)算節(jié)點(diǎn)3,用于請(qǐng)求數(shù)據(jù),并對(duì)經(jīng)過CU解壓組件2處理后的數(shù)據(jù)進(jìn)行計(jì)算重演實(shí)現(xiàn)容災(zāi);數(shù)據(jù)傳輸網(wǎng)絡(luò),用于實(shí)現(xiàn)計(jì)算節(jié)點(diǎn)3與CU解壓組件2之間的通信,數(shù)據(jù)傳輸網(wǎng)絡(luò)為InfiniBand網(wǎng)絡(luò)4,遵循RDMA協(xié)議。
CU解壓組件2包括:
判斷模塊,用于解析存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)塊,判斷該數(shù)據(jù)塊是否為壓縮數(shù)據(jù)塊;
解壓模塊,用于對(duì)判斷模塊中判斷為壓縮數(shù)據(jù)塊的數(shù)據(jù)進(jìn)行解壓還原。
如圖2所示,對(duì)混合列壓縮數(shù)據(jù)的處理過程:
(1)數(shù)據(jù)庫請(qǐng)求數(shù)據(jù)(需要安裝Exadata特有的數(shù)據(jù)庫軟件patch);
(2)請(qǐng)求通過RDMA(基于infiniband)協(xié)議傳送給后端存儲(chǔ)節(jié)點(diǎn);
(3)存儲(chǔ)節(jié)點(diǎn)讀取磁盤上的塊;
(4)CU解壓組件對(duì)數(shù)據(jù)塊的結(jié)構(gòu)進(jìn)行解析,判斷塊結(jié)構(gòu)是否為壓縮的塊,如非壓縮塊直接將塊交給RDMA協(xié)議層;如為壓縮塊,根據(jù)塊中信息找到整個(gè)CU中的所有塊,解壓組件對(duì)整過CU中數(shù)據(jù)進(jìn)行解壓并還原數(shù)據(jù),還原完成后交給RDMA協(xié)議層;
(5)RDMA協(xié)議層傳輸數(shù)據(jù)塊給數(shù)據(jù)庫層,計(jì)算節(jié)點(diǎn)獲得數(shù)據(jù);
(6)計(jì)算節(jié)點(diǎn)對(duì)接收到的數(shù)據(jù)塊進(jìn)行計(jì)算重演實(shí)現(xiàn)容災(zāi)。
其中CU解壓組件工作原理為:解壓組件主要通過判斷數(shù)據(jù)塊結(jié)構(gòu),找到CU header并通過CU header中的數(shù)據(jù)找到所有屬于此CU的數(shù)據(jù)塊,并對(duì)CU數(shù)據(jù)塊中的所有數(shù)據(jù)進(jìn)行行還原后組成新的數(shù)據(jù)塊返回給數(shù)據(jù)庫層。