基于raid 0 存儲的mpp 數據庫集群副本實現方法
【技術領域】
[0001] 本發明屬于數據庫技術領域,主要涉及一種基于RAID0存儲的MPP數據庫集群副 本實現方法。
【背景技術】
[0002] 在大數據時代,企業生產的數據規模越來越大;同時,企業借助數據進行商務分析 的深度和復雜度的要求也越來越高。傳統單一服務器模式的數據庫在處理規模、計算強度 等方面遇到前所未有的挑戰。在大型服務器采購、維護、升級高成本的情況下,基于硬件的、 完全不共享體系的MPP數據庫集群成為企業首選。
[0003] 如圖1所示,MPP數據庫集群通過高速網絡將多個數據庫服務器聯合起來組成集 群,可以實現綜合性能優于單個大型服務器。MPP數據庫集群依據并行計算原理,將大規模 數據預先進行切片處理,并將數據分片存儲到各個節點服務器中,其充分利用每個節點服 務器的計算能力,使得計算靠近數據,實現就地處理。在進行數據訪問時,可以將任務并行 的分散到多個節點服務器上,待每個節點上計算完成后,將各自部分的結果匯總并得到最 終的結果。其充分利用每個節點服務器的能力,使得集群系統具有線性擴展能力和無與倫 比的處理性能。
[0004] 數據分片技術可以充分利用各個節點硬件資源,提高系統并行處理能力,但也會 帶來單點故障問題。隨著企業的業務增長,數據庫集群系統處理的數據規模越來越大,當 存儲容量到達PB級別時,系統中的存儲節點可能成百上千。數據規模的增長、訪問負載的 增大,使得節點故障成為一種常態,數據可靠性面臨嚴峻挑戰;同時,在數據日益成為企業 的核心財產時,如何保證數據的安全、實現容災也是企業日益關注的問題。因此,需要尋找 解決方案實現系統的高可用,現有的做法是使用HA技術為各個節點服務器做雙機。如圖2 所示,高可用HA方案采用HA硬件冗余方案,集群需要為N數量的節點配置Μ數量的備機 (Ν彡Μ)。雖然ΗΑ技術可以在一定程度上提高系統的可用性,但仍存在諸多問題:
[0005] (1)無法充分利用硬件資源。ΗΑ技術要求一臺服務器處于工作狀態,另一臺服務 器處于備用狀態,不參與工作。并且需要二者配置相同的硬、軟件,保證發生故障切換后,備 機不會成為短板。由于整個系統存在相當大比例數量的服務器處于常備狀態,嚴重浪費硬 件資源,增加企業的采購成本。
[0006] (2)數據安全性低。使用ΗΑ技術,主、備服務器通過磁盤陣列共享一份數據,數 據的安全系數低、丟失風險高。在存儲層面,雖然磁盤陣列自身帶有冗余功能,可以在一定 程度上提高存儲安全性;但由于過于透明,集群系統無法靈活制定冗余數據的訪問、維護策 略。
[0007] (3)故障節點切換實時性差。ΗΑ的故障切換有一定的時間延遲,較理想的延遲是 控制在秒級別。在系統崩潰、網絡故障等比較復雜的情況下,切換可能需要更長的時間延 遲,達到分鐘級別。當然,ΜΡΡ類型的應用對系統恢復時間并沒有過于嚴苛的要求,但企業 仍然無法接受較長的延遲。
[0008] 此外,通過多機熱備、硬件IPMI等一些手段可以降低問題帶來的影響,但始終無 法從根本上解決;并且,隨著數據、節點規模的增長,問題會愈發嚴重。
【發明內容】
[0009] 本發明的目的在于克服現有技術的不足,提供一種設計合理、安全可靠且使用方 便的基于RAID0存儲的MPP數據庫集群副本實現方法。
[0010] 本發明解決現有的技術問題是采取以下技術方案實現的:
[0011] -種基于RAID0存儲的MPP數據庫集群副本實現方法,包括副本分布算法模塊、 副本狀態維護模塊、訪問重定向模塊、數據一致性維護模塊并通過以下步驟實現:
[0012] 步驟1、使用副本分布算法模塊進行數據庫存儲部署;
[0013] 步驟2、使用副本分布算法模塊計算副本存儲位置;
[0014] 步驟3、使用副本分布算法模塊創建副本存儲實體;
[0015] 步驟4、使用副本狀態維護模塊進行副本元信息維護;
[0016] 步驟5、使用訪問重定向模塊進行副本數據訪問;
[0017] 步驟6、使用數據一致性維護模塊進行副本數據一致性維護。
[0018] 而且,所述步驟1采用RIAD0方式的磁盤陣列或本地磁盤,并在MPP集群的系統 層面進行數據冗余。
[0019] 而且,所述步驟2采用Hash算法中的沖突處理機制進行副本位置計算,并采用如 下兩個不同的步長處理Hash沖突:
[0020] (1)在第一個步長為數據的分片數目時,即在MPP集群的節點數目足夠多的情況 下,將副本散列在與本數據所有的分片非相關的節點上;
[0021] (2)在第二個步長為1時,即在使用分片數目做步長選擇失敗的情況下,將不同數 據分片的副本之間進行重疊存儲。
[0022] 而且,所述步驟3的具體創建方法為:數據分片的副本采用基本表存儲數據;副本 同原數據分片使用相同的表名,且使用不同的模式名。
[0023] 而且,所述副本元信息包括副本的節點映射信息、狀態信息,該副本的節點映射信 息類同分片的映射信息,該副本的節點狀態信息包括負載信息和有效性信息,負載信息記 錄的是副本所在節點服務器的CPU和內存負載狀況,有效性信息包括在線、離線、失效三種 狀態。
[0024] 而且,所述步驟5進行副本數據的訪問包括查詢操作和修改操作,所述查詢操作 方法為:根據副本的狀態信息,進行過濾故障和均衡負載,將查詢導向最合適的位置;所述 修改操作方法為:當某一個數據分片的副本都沒有更新成功時,則本次更新失敗,否則更新 成功,并將出錯節點標識為失效。
[0025] 而且,所述步驟6進行副本數據一致性維護包括手動維護和自動維護。
[0026] 而且,所述的手動維護方法為:用戶使用對外接口進行維護,如果分片的有效副本 數目超過默認副本數目,則將多余的副本刪除,只保留默認副本數目或者用戶指定的副本 數目;如果某個分片的有效副本數目少于默認副本數目,則增加副本至默認副本數目或用 戶指定的副本數目。
[0027] 而且,所述的自動維護方法為:判斷有效副本的數目,當有效副本數目不在最小副 本數目閾值和最大副本數目閾值范圍內時進行維護;在自動維護時,如果失效副本為數據 失效,則截斷原副本表數據;如果失效副本為結構失效,則新建副本表,并通過同步數據、更 新元信息方法對失效副本進行處理。
[0028] 本發明的優點和積極效果是:
[0029] 1、本發明為MPP數據庫集群引入系統層面的數據冗余,通過犧牲一定的存儲空間 來換取數據安全,提高了系統可用性。當出現硬件故障或副本數據被破壞(失效)時,系統 自動將對該數據分片的訪問導向另一個可用副本,實現對外不間斷服務。
[0030] 2、本發明能夠優化并發訪問,根據副本的負載信息,將訪問導向最合適的副本,解 決單一數據并發訪問"過熱"問題,提高系統的吞吐性能。由于在MPP集群系統層面實現了 數據冗余,因此,在存儲層面,數據安全不再是關注重點,可以使用存儲性能最高的RAID0 方式,充分發揮數據"條帶化"的高10性能。
[0031] 3、本發明能夠自動完成對副本的存儲、管理、狀態、數據維護,上述維護操作對外 完全"透明",不會對已有項目的移植帶來額外影響,同時也可以方便地實現多數據中心之 間的數據鏡像備份。
【附圖說明】
[0032] 圖1是現有MPP數據庫集群體系結構圖;
[0033] 圖2是高可用HA方案結構圖;
[0034] 圖3是本發明的MPP集群副本架構圖;
[0035] 圖4是副本的元信息組織結構圖;
[0036] 圖5是本發明的副本數據一致性維護流程圖。
【具體實施方式】
[0037] 以下結合附圖對本發明實施例做進一步詳述:
[0038] -種基于RAID0存儲的MPP數據庫集群副本實現方法,是在MPP集群數據分片基 礎上,為每一個分片創建一定數量的副本,按照一定的算法規則散列在存儲系統中,并實現 對副本數據的同步修改,并嚴格保證數據一致。本發明主要包括副本分布算法模塊、副本狀 態維護模塊、訪問重定向模塊、數據一致性維護模塊。副本對外表現"透明",所有功能模塊 都將由系統自行驅動,用戶仍然使用原有的系統API接口訪問。本發明提供了一些必要的 對外接口,供用戶設置一些指導性推薦策略,例如副本數目。本發明的基本架構參見圖3。
[0039] -種基于RAID0存儲的MPP數據庫集群副本實現方法,包括以下步驟:
[0040] 步驟1、使用副本分布算法模塊進行數據庫存儲部署。
[0041] 本發明采用RIAD0方式的磁盤陣列或本地存儲。RAID0將數據進行"條帶化"分 布存儲,其充分利用總線的帶寬,可以顯著提高磁盤整體存取性能。但是,由于RAID0不提 供數據冗余,數據的安全性最差。本發明在MPP集群的系統層面進行了數據冗余,實現系統 自身對數據的安全保障,可以對存儲設備自身層面的數據安全保障技術不做要求。
[0042] 步驟2、使用副本分布算法模塊計算副本存儲位置
[0043] 副本存放位置選擇的基本策略是盡量降低副本出現于同一節點服務器的幾率,提 高并發訪問性能。在本步驟中,選擇算法核心為Hash算法,借助于Hash算法中的沖突處理