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