

点击上方蓝字,关注我们
技术概述
1.1 价值及主要内容
随着信息技术的发展,人类进入大数据时代,数据量呈现爆炸式的增长,金融领域数据承载核心业务,即便遭遇各种软硬件错误或灾难,也需要具备找回和快速恢复业务能力,因此备份恢复能力成为数仓的最关键能力之一。华为的GaussDB(DWS)支持了物理细粒度备份恢复能力。用户可自定义备份整集群或部分数据库元素,并进行灵活的单、多表恢复,有效缩减备份数据所需的时间窗口和存储空间,同时聚焦于用户业务场景的关键表的备份恢复。
物理细粒度备份恢复目前主要支持的2大场景:
一、从细粒度化的集群级全量备份集中恢复单/多表;
二、备份指定的schema全量数据,并可从该备份集中恢复单/多表;
技术方案原理
2.1 NBU备份恢复方案
Roach为GaussDB(DWS)数据库备份工具,支持多种备份恢复类型及方案。对于Roach通用架构,每个集群节点都有Roach agent进程负责本节点的数据备份。第一个节点额外有一个Roach master进程负责分布式集群备份。Roach提供非侵入式的备份到NBU方案,物理细粒度备份恢复同样基于此框架,因此首先对此进行介绍说明。Roach client插件部署至NBU Media Server机器中,用于接收Roach agent发送的备份数据,并转发至NBU 服务器中。
NBU集群部署模式如下:

图1 NBU集群部署模式
非侵入式NBU备份方案架构:

图2 NBU非侵入式部署方案
如上图所示(3节点GaussDB(DWS)集群为例),NBU备份数据流向为:
Roach agent将压缩数据向Roach client分片传输;
Roach agent调用NBU客户端XBSA接口,请求NBU备份;
NBU client将此请求转发至NBU Master Server;
NBU master服务器负责分配存储到哪个NBU media服务器;
Roach client将调用xbsa接口将备份数据传输至NBU Media Server;
Media Server将备份数据存储至挂载的磁带机或磁盘上
2.2 细粒度元信息生成方案
为了能够从备份集中细粒度地恢复单表或多表,首先需要获取所有数据库下schema、表的元信息DDL,将其持久化并备份到介质。需要说明的是,由于元信息DDL导出时间较长,设计中采用DDL导出备份与数据备份并行的方式,以提升性能:Roach获取DDL的设计思路如下所示——

备份过程中,为支持细粒度恢复,通过表名映射到元信息,进而找到所有关联表的物理文件、事务信息,需要获取并备份一个映射map,map按数据库元素层次逐层获取,主要包括:
Agent --> Instance –> Database –> Schema ->Table –> Related Relations
实际的执行中,将为每个物理节点、实例,并行进行映射元信息查询和存储,设计逻辑如下:

图4 细粒度备份恢复文件映射MAP获取
2.3 数据备份生产-消费者模型

图5 物理细粒度数据备份到介质生产者-消费者模型
2.4 细粒度恢复多表方案
当前支持从集群级全量备份集、或schema级别备份集中做多表细粒度恢复,这两种主要场景核心技术思想一致,场景支持情况如下:
支持单次从集群级全量备份集中恢复单表或多表,恢复表的名称列表写入一个配置文件,配置文件名由恢复参数—table-list指定;
集群级全量备份集恢复单/多表,指定待恢复的表可跨多个schema;
恢复时可指定恢复到原表或新表,新表可与原表在不同schema,但需要在同一个database,表名可为新表名;指定的恢复目标schema可以存在,也可以不存在,恢复时新建出来,恢复的新表由—restore-target-list指定的文件配置,若希望全部恢复到原表名,则—table-list和—restore-target-list可指定同一配置文件;
若恢复时指定的恢复目标表存在(原表名或新表名),那么恢复可指定—clean参数先drop cascade级联删除该表(视图、索引、权限等一并删除)再恢复,不带该参数,则需要用户手动确认后drop,再进行恢复,这主要是为了应对备份和恢复时前表名相同,但表定义不同的场景。
细粒度是在线恢复,不清理数据也不停集群,恢复完成后表可直接使用,无build等额外时间消耗。
下图展示了恢复时的主要方案设计:

图6 细粒度在线恢复单/多表逻辑图
恢复时的步骤简述如下:
Step1:接收各节点的各实例对应的工作进程Roach Agent数据请求后,Roach Client与NBU介质建连,开始List检索并获取文件,发给Roach Client;
Step2:Roach Client与各节点的Roach Agent,通过TCP连接转发待恢复数据,包含元数据和实例数据,实例获取后存入buffer;
Step3:Roach读入待恢复的表信息列表,构造恢复落盘文件的filter过滤器,只恢复目标表备份文件;
Step4:根据恢复回来的DDL,解析到待恢复表元信息,并根据元信息,将中间临时tmp表、恢复最终目标表创建出来;
Step5:根据新建tmp表,创建元信息map,并与原备份表的map信息一一映射,过滤文件落盘;
Step6:将备份的数据文件relfilenode交换到新建的tmp表relfilenode;
Step7:查询tmp表的数据,插入数据到最终目标表。
细粒度备份恢复技术应用实测
3.1 测试环境

3.2 细粒度恢复用例的执行
Schema级别备份,恢复单/多表
指定schema备份成功;
从schema备份集中恢复多表至目标table;
数据构造

执行Schema级别备份:

从该Schema 备份集中指定恢复customer(列存表)、public.nation(行存表)至liding11.customer11、liding22.nation22
执行恢复指定多表:

数据校验

技术总结
本文主要从技术价值、应用场景、技术原理、技术实测展示几个维度对GaussDB(DWS)物理细粒度备份恢复技术进行了剖析,可以看到物理细粒度备份恢复是对于已有全量数据备份恢复的一个有效的增强,客户可以以更灵活地方式规划自己的冷热数据,选择更小的逻辑粒度进行备份或恢复,节省宝贵的备份存储空间和cpu资源的同时,也更少地对在线业务带来冲击。在恢复层面,不同于旧有的集群级全量恢复需要停集群和清理数据,细粒度在线恢复不影响任何在线业务,也不会因恢复前清理集群带来可能的数据损失风险,因此该技术拥有较为广阔的前景和深远的意义。
3500元套餐,我就免费,哎,就是玩儿~ HOT 华为云斩获2021数博会“黑科技”奖及“新技术”奖 NEW 华为云GaussDB(DWS)持续创新,使能金融行业人人用数 华为云GaussDB(DWS)数据仓库以2048大规模节点通过信通院评测认证 华为云助力招商银行零售客户“体验升级” ——招商银行云化数仓探索之路 480节点投产!华为GaussDB(DWS)单一集群规模再创业界新高 2021HDC.Cloud|华为云GaussDB(DWS)首席架构师解读一站式数据分析能力 数仓性能调优必读,带你进阶为性能调优高手







