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