GBase 8a是國内少數具備兩地三中心容災能力的分析型MPP資料庫,通過其配備的RsyncTool同步工具可實作同城或異地叢集間準實時資料同步,并已在諸多大型銀行、保險等金融機構部署實施。本文旨在介紹基于可視化叢集雙活同步工具GVR(GBase Visual RsyncTool)的GBase 8a叢集雙活容災方案,包括GVR雙活容災方案的資源需求、适用場景、GVR工具功能簡介。
01 方案說明
GBASE南大通用在RsyncTool同步工具基礎上推出GVR(GBase Visual RsyncTool)同步工具增強版本,實作工具配置管理、同步任務編排、同步任務監控等功能界面化操作,叢集間資料同步和容災功能的可管理、可維護和易用性大為增強,同時在增量同步性能優化和同步過程中表鎖粒度降低上進行了進一步優化,一方面通過并行對比主備叢集間中繼資料資訊,将未發生資料變化的表排除在同步任務外提升同步性能,同時降低了同步過程中正在進行資料同步表主叢集上的鎖表粒度,從表同步過程中隻讀優化為中繼資料快照儲存階段隻讀,資料同步階段支援DML操作,進而大幅降低了同步過程對業務影響。
02 雙活同步方案概要介紹
GBase 8a叢集雙活容災方案基于可視化資料同步工具GVR(GBase Visual RsyncTool)實作,GVR支援部署在同城或異地的兩套叢集間進行表粒度的增量資料同步,形成2套獨立叢集的資料互備雙活容災。
雙活容災方案推薦使用一套叢集作為主叢集提供資料寫入入口(同時可承載查詢任務),另一套叢集隻讀,作為備叢集。
正常狀态下主叢集承擔業務寫入任務,并通過調起同步工具以表為粒度将主叢集中表内的增量資料同步至備叢集,主備叢集均可對外提供查詢。
當主叢集整體故障情況下,可将業務切換至備叢集,由備叢集承擔業務寫入任務,在主叢集故障恢複後通過調起同步工具以表為粒度将主備切換後發生的業務增量資料反向同步給主叢集并追平資料,資料追平後業務可選擇切換回主叢集或主備倒換後由原備叢集承擔主叢集業務,主叢集降級為備叢集。
03 資源需求
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。
04 适用場景
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工具支援對主備叢集間中繼資料同步,包括對表、存儲過程、視圖、自定義函數類型中繼資料同步;
05 GVR雙活同步工具介紹
GVR(GBase_Visual_RsyncTool)工具封裝底層資料同步的實作細節,采用圖形化方式簡化雙活同步配置,支援存儲過程等中繼資料同步,提供雙活同步的監控運維功能。
GVR同步工具架構如上圖,各子產品的職責描述如下:
前端服務:可視化界面,SNMP/ RESTFUL接口
後端服務:接收前端請求,完成使用者及權限認證、同步任務排程等
底層工具:負責同步執行,内部封裝,使用者透明
日志體系:後端服務、底層工具各子產品輸出記錄記錄檔
配置庫:持久化雙活同步配置資訊,記錄同步任務執行情況
寫在最後
GVR支援包括可視化配置主備叢集同步、中繼資料同步、動态展示進度條同步進度、曆史同步任務檢視、可視化編輯定時任務、同步任務告警功能、主備叢集資料一緻性校驗、資料源管理、同步任務管理、同步排程政策配置、同步任務監控、操作記錄審計在内的多種功能。