天天看点

利用GVR工具构建GBase数据库双活集群容灾方案

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套独立集群的数据互备双活容灾。

利用GVR工具构建GBase数据库双活集群容灾方案

双活容灾方案推荐使用一套集群作为主集群提供数据写入入口(同时可承载查询任务),另一套集群只读,作为备集群。

正常状态下主集群承担业务写入任务,并通过调起同步工具以表为粒度将主集群中表内的增量数据同步至备集群,主备集群均可对外提供查询。

当主集群整体故障情况下,可将业务切换至备集群,由备集群承担业务写入任务,在主集群故障恢复后通过调起同步工具以表为粒度将主备切换后发生的业务增量数据反向同步给主集群并追平数据,数据追平后业务可选择切换回主集群或主备倒换后由原备集群承担主集群业务,主集群降级为备集群。

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异步同步方式和业务的耦合性较低,通过不同时间段来规避数据同步时的不同表数据间的切片一致性问题。方案架构如下图:

利用GVR工具构建GBase数据库双活集群容灾方案

①应用加工的跑批作业按照原逻辑在主集群上执行

②应用加工作业涉及的修改过的表,加入到待同步任务列表中

③作业跑批完成后,触发集群双活同步,或按照时间进行切分,如上午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的目标。

方案架构图如下:

利用GVR工具构建GBase数据库双活集群容灾方案

①修改业务程序脚步,在每个跑批作业的末尾,增加双活同步任务调度

②提前预置或在作业执行时生成要同步的表列表,在作业执行完成后,按照预置的表列表或即时生成的本次作业存在数据变动的表列表进行数据同步

③表同步任务完成后,该跑批作业才正式结束,当出现数据同步任务失败的情况下,作业调度程序需支持同步任务的重跑而无需进行整个作业的重跑

④为降低数据同步对作业跑批性能的影响,最后的同步任务可以异步执行,即完成作业跑批任务后,即可进行后续跑批任务的执行,数据同步异步进行,并最终返回同步结果。

增量数据同步时间评估

作业级准实时数据同步将主备集群间的数据同步任务打散到各个作业任务中,单个作业的同步数据量较小,同步耗时较短。

依然可以通过同步数据量和网络带宽来做同步性能的预估。在有较高性能要求的多个串行跑批作业的链路中,可以将表同步任务作为异步任务方式执行,降低对作业链路的性能影响。

灾备指标评估

作业级准实时数据同步与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工具构建GBase数据库双活集群容灾方案

GVR同步工具架构如上图,各模块的职责描述如下:

前端服务:可视化界面,SNMP/ RESTFUL接口

后端服务:接收前端请求,完成用户及权限认证、同步任务调度等

底层工具:负责同步执行,内部封装,用户透明

日志体系:后端服务、底层工具各模块输出记录操作日志

配置库:持久化双活同步配置信息,记录同步任务执行情况

利用GVR工具构建GBase数据库双活集群容灾方案

写在最后

GVR支持包括可视化配置主备集群同步、元数据同步、动态展示进度条同步进度、历史同步任务查看、可视化编辑定时任务、同步任务告警功能、主备集群数据一致性校验、数据源管理、同步任务管理、同步调度策略配置、同步任务监控、操作记录审计在内的多种功能。

继续阅读