GBase新聞
如何用GVR可視化工具,實現GBase數據庫的雙活集群容災?
GBase 8a是國內少數具備兩地三中心容災能力的分析型MPP數據庫,通過其配備的RsyncTool同步工具可實現同城或異地集群間準實時數據同步,并已在諸多大型銀行、保險等金融機構部署實施。本文旨在介紹基于可視化集群雙活同步工具GVR(GBase Visual RsyncTool)的GBase 8a集群雙活容災方案,包括GVR雙活容災方案的資源需求、適用場景、GVR工具功能簡介。
方案說明
GBASE南大通用在RsyncTool同步工具基礎上推出GVR(GBase Visual RsyncTool)同步工具增強版本,實現工具配置管理、同步任務編排、同步任務監控等功能界面化操作,集群間數據同步和容災功能的可管理、可維護和易用性大為增強,同時在增量同步性能優化和同步過程中表鎖粒度降低上進行了進一步優化,一方面通過并行對比主備集群間元數據信息,將未發生數據變化的表排除在同步任務外提升同步性能,同時降低了同步過程中正在進行數據同步表主集群上的鎖表粒度,從表同步過程中只讀優化為元數據快照保存階段只讀,數據同步階段支持DML操作,從而大幅降低了同步過程對業務影響。
雙活同步方案概要介紹
GBase 8a集群雙活容災方案基于可視化數據同步工具GVR(GBase Visual RsyncTool)實現,GVR支持部署在同城或異地的兩套集群間進行表粒度的增量數據同步,形成2套獨立集群的數據互備雙活容災。
雙活容災方案推薦使用一套集群作為主集群提供數據寫入入口(同時可承載查詢任務),另一套集群只讀,作為備集群。
正常狀態下主集群承擔業務寫入任務,并通過調起同步工具以表為粒度將主集群中表內的增量數據同步至備集群,主備集群均可對外提供查詢。
當主集群整體故障情況下,可將業務切換至備集群,由備集群承擔業務寫入任務,在主集群故障恢復后通過調起同步工具以表為粒度將主備切換后發生的業務增量數據反向同步給主集群并追平數據,數據追平后業務可選擇切換回主集群或主備倒換后由原備集群承擔主集群業務,主集群降級為備集群。
資源需求
3.1 雙活容災方案主備集群規模需求
1)主備集群間邏輯架構相同:
雙活方案要求主備集群的主分片數相同,如主集群10個gnode計算節點(多實例時為gnode實例數)每個gnode節點1個主分片,則主分片數為10;災備集群要求主分片數與主集群相同也為10個。
為保證備份集群在發生主備切換后可以提供同等的計算性能,建議備份集群采用與主集群相同規模的節點數、相同配置的服務器進行搭建。
2)主備集群間數據分布規則相同:
雙活方案要求主備集群間數據hash分布規則相同,即集群中的gbase.nodedatamap系統表內的hash分桶規則主備集群一致。
3.2 雙活容災方案主備集群規模需求
1)節點間網絡聯通性需求:
雙活同步方案涉及三個組件,主集群、備集群、GVR同步工具,三個組件間的網絡要求打通,即主備集群所有節點服務器(管理節點gcluster、計算節點gnode)以及部署GVR同步工具的服務器間的網絡需要互通。
集群支持兩平面網絡部署,集群組網使用一個網絡平面即私網網絡,集群的對外服務使用另外一個網絡平面即業務網絡。對于異地雙活集群,可以打通主備集群間業務網絡而不連通主備集群內部私網,GVR同步工具支持IP Mapping實現基于業務網絡的數據同步。
對于網絡端口方面,需要開通主備集群各節點服務器之間以及兩個集群與GVR同步工具之間的數據庫服務訪問端口(默認為5258、5050)、數據同步服務端口(默認為5288)。
2)節點間帶寬需求:
集群雙活同步采用節點對節點(分片對分片)的數據同步方式,即數據同步實現主集群上表的n1分片與備集群上表的n1分片的數據一致性。
同步過程中采用主備集群對應節點間并行同步的方式,支持多個表并行同步,需要根據災備的RTO要求以及數據增量大小評估主備集群間網絡帶寬需求。即滿足 主備集群各節點間的整體帶寬>每日變化增量數據量大小/同步窗口時間。
3.3 雙活容災方案GVR同步工具部署資源需求
GVR工具建議獨立部署,配備1臺服務器,用于同步工具的部署,同步日志信息、同步配置數據的存儲,服務器配置不低于8core+32G+1TB。
適用場景
4.1 T+1同步場景
方案描述
T+1異步雙活同步適用于同步時效性要求不高,具有較長時間窗口用于數據同步的場景,如作業跑批類場景。每天凌晨進行日作業的跑批加工,完成作業跑批后集群數據處于不再變動的靜態狀態,此時即可啟動集群雙活同步完成數據的增量同步。在數據同步期間,主集群上正在同步的表可支持查詢和Appendonly類型的DML數據寫入,備份集群上正在同步的表不可對外提供服務。
T+1異步同步方式和業務的耦合性較低,通過不同時間段來規避數據同步時的不同表數據間的切片一致性問題。方案架構如下圖:
①應用加工的跑批作業按照原邏輯在主集群上執行
②應用加工作業涉及的修改過的表,加入到待同步任務列表中
③作業跑批完成后,觸發集群雙活同步,或按照時間進行切分,如上午8點完成作業跑批,則上午9點開始進行雙活同步
④所有待同步表同步完成后,備份集群中的數據與主集群中的數據達到一致狀態,完成雙活同步,此時備份集群可對外提供數據查詢服務
用戶也可以按庫進行全部表同步或者提供一個較大范圍的同步表列表,即提前預置需要同步的庫或表,省去第②步的操作。在進行雙活同步時,GVR同步工具自動完成表在主備集群間是否一致的判斷,對于本次作業周期內未修改的表不再進行同步。
增量同步時間評估
T+1異步雙活同步需要在一個固定的時間窗口內完成增量變化數據的同步,需要的時間較長。可以根據變化數據量/網絡傳輸帶寬進行所需時間的預估,因為數據庫集群雙活同步是分片對分片的并行網絡傳送,并可以設置多個表的并行同步,可以充分利用網絡帶寬。
對于同步時間窗口不足的場景,可以按照業務特點分批次進行數據同步。如作業跑批的時間窗口為0點~8點,其中0點~2點為日增數據加載,2點~3點為公共數據加工生成,3點~5點為匯總層數據加工生成,5點~8點為指標統計。則可以編排同步批次如下:
3點進行ODS層日增入庫數據表的雙活同步
5點進行公共加工數據表的雙活同步
9點進行剩余未同步表的雙活同步
災備指標評估:
T+1異步雙活同步方案下的災備指標取決于重新進行日跑批的耗時。
因為OLAP系統的原始數據來自于外部系統,一般具備業務加工的冪等性,可以通過重新加載和重新跑批加工的方式實現數據的恢復,所以RPO指標為0。對于無法重新跑批計算的數據,其RPO最悲觀為上次同步完成時的業務時間到災難發生時間,即RPO<24小時,針對這類業務可以提高數據同步頻次的方式來降低RPO,如每小時同步一次該類型數據將縮短RPO至1小時內。
對于RTO恢復目標,其恢復時間為上一次數據同步完成時間開始,重新跑批的耗時,如重新日跑批需要8個小時,則RTO<8小時。
4.2作業級準實時同步場景
方案描述
作業級準實時同步是將表數據同步任務加入到應用加工的跑批作業調度中,在一個跑批作業任務結束后,執行該作業所涉及表的雙活同步。GVR提供用戶同步任務調度接口,在跑批作業的最后一步增加一個雙活同步任務,待同步任務完成后,該作業執行完成。
該方案下雙活同步與業務會進行一定的耦合。通過作業任務調度實現主備集群間數據的及時數據同步,達到降低RPO、RTO的目標。
方案架構圖如下:
①修改業務程序腳步,在每個跑批作業的末尾,增加雙活同步任務調度
②提前預置或在作業執行時生成要同步的表列表,在作業執行完成后,按照預置的表列表或即時生成的本次作業存在數據變動的表列表進行數據同步
③表同步任務完成后,該跑批作業才正式結束,當出現數據同步任務失敗的情況下,作業調度程序需支持同步任務的重跑而無需進行整個作業的重跑
④為降低數據同步對作業跑批性能的影響,最后的同步任務可以異步執行,即完成作業跑批任務后,即可進行后續跑批任務的執行,數據同步異步進行,并最終返回同步結果。
增量數據同步時間評估
作業級準實時數據同步將主備集群間的數據同步任務打散到各個作業任務中,單個作業的同步數據量較小,同步耗時較短。
依然可以通過同步數據量和網絡帶寬來做同步性能的預估。在有較高性能要求的多個串行跑批作業的鏈路中,可以將表同步任務作為異步任務方式執行,降低對作業鏈路的性能影響。
災備指標評估
作業級準實時數據同步與T+1異步雙活同步相同,對于能夠重新跑批生成數據的業務其RPO=0,對于無法通過跑批等方式重新計算生成的數據其RPO=主備雙活切換時間+作業跑批時間,可達到分鐘級。
RTO的時間接近作業重新跑批的時間,如在執行某個耗時1小時的作業過程中,主集群發生災難性故障需切換到備份集群,RTO<1小時,只需在備份集群基于上次同步完成的表進行最近一次的作業跑批即可。
4.3雙活同步功能對業務影響及功能限制說明
1)對業務影響:雙活同步方案同步粒度為表級,因此對業務影響為正在同步的表級別的影響
主集群:正在同步的表支持讀,以及insert select、insert values、load、delete、以及開啟fast_update模式后的update和merge類Appendonly形式的DML操作,不支持DDL、不開啟fast_update模式的update、merge類DML操作;
備集群:正在同步的表不支持讀、DML和DDL操作;
2)同步范圍:
GVR工具同步范圍為對同步表的DML類型操作,不支持對同步表的DDL類型操作的同步;
GVR工具支持對主備集群間元數據同步,包括對表、存儲過程、視圖、自定義函數類型元數據同步;
GVR雙活同步工具介紹
GVR(GBase_Visual_RsyncTool)工具封裝底層數據同步的實現細節,采用圖形化方式簡化雙活同步配置,支持存儲過程等元數據同步,提供雙活同步的監控運維功能。
GVR同步工具架構如上圖,各模塊的職責描述如下:
前端服務:可視化界面,SNMP/ RESTFUL接口
后端服務:接收前端請求,完成用戶及權限認證、同步任務調度等
底層工具:負責同步執行,內部封裝,用戶透明
日志體系:后端服務、底層工具各模塊輸出記錄操作日志
配置庫:持久化雙活同步配置信息,記錄同步任務執行情況
寫在最后
GVR支持包括可視化配置主備集群同步、元數據同步、動態展示進度條同步進度、歷史同步任務查看、可視化編輯定時任務、同步任務告警功能、主備集群數據一致性校驗、數據源管理、同步任務管理、同步調度策略配置、同步任務監控、操作記錄審計在內的多種功能。點擊了解GVR詳細信息。