CN112214358A - 一种GaussDB分布式数据库的备份恢复系统及其方法 - Google Patents

一种GaussDB分布式数据库的备份恢复系统及其方法 Download PDF

Info

Publication number
CN112214358A
CN112214358A CN202011188496.1A CN202011188496A CN112214358A CN 112214358 A CN112214358 A CN 112214358A CN 202011188496 A CN202011188496 A CN 202011188496A CN 112214358 A CN112214358 A CN 112214358A
Authority
CN
China
Prior art keywords
data
backup
node
roach
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011188496.1A
Other languages
English (en)
Inventor
陈其然
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Eisoo Information Technology Co Ltd
Original Assignee
Shanghai Eisoo Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Eisoo Information Technology Co Ltd filed Critical Shanghai Eisoo Information Technology Co Ltd
Priority to CN202011188496.1A priority Critical patent/CN112214358A/zh
Publication of CN112214358A publication Critical patent/CN112214358A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种GaussDB分布式数据库的备份恢复系统及其方法,该系统包括相互连接的服务器端和客户端,客户端分布安装于GaussDB集群的多个GuassDB节点内,GaussDB节点内的Roach工具和客户端分别与MML接口连接,服务器端与多个GuassDB节点分别连接,服务器端的存储介质用于存放待备份数据或待恢复数据;管理控制台用于接收用户操作指令,以及监控各GuassDB节点的工作状态;MML接口用于创建多个备份恢复通道,以实现客户端与Roach工具的相互通信,备份恢复通道用于传输待备份数据、恢复请求数据以及待恢复数据。与现有技术相比,本发明能够有效提升GuassDB分布式数据库的备份恢复性能、不占用本地磁盘空间,且能统一对GuassDB集群内各节点进行统一管理,降低人工运维成本、提升用户体验。

Description

一种GaussDB分布式数据库的备份恢复系统及其方法
技术领域
本发明涉及数据备份恢复技术领域,尤其是涉及一种GaussDB分布式数据库的备份恢复系统及其方法。
背景技术
GaussDB是一种企业级AI-Native分布式数据库,GaussDB采用MPP(MassiveParallel Processing)架构,支持行存储与列存储,提供PB(Petabyte,2的50次方字节)级别数据量的处理能力。作为一种大型数据库,GaussDB可以为超大规模数据管理提供高性价比的通用计算平台,也可用于支撑各类数据仓库系统、BI(Business Intelligence)系统和决策支持系统,为上层应用的决策分析提供服务。为了防止系统出现操作失误或系统故障导致数据丢失、为了保护数据免受意外的损失,需要定期进行备份操作,目前GaussDB的备份方案主要是使用自带的备份工具,即内置的备份命令行工具,将数据库的data文件、log文件和配置文件导出到本地磁盘,再由数据库管理员手动运维。
由于GaussDB采用MPP架构,节点数规模可达数百上千,其自带的备份工具,难以有效对海量节点的备份进行有效管理,对于金融行业(银行)等核心交易/分析类数据库,也难以满足高等级的保护要求;海量的数据也会导致备份/恢复时间过长,容易影响业务运行,同时会增加备份业务网络带宽需求;此外,大量备份数据需要大容量存储空间,这也会增加保护成本。
因此,传统的GaussDB分布式数据库备份方法主要存在以下缺点:
一、备份恢复性能低——命令行备份工具从数据库获取备份数据的流程采用单线程方式,备份性能低;
恢复时先将数据恢复到单一节点,再通过节点间数据同步的方式,将数据还原到整个数据库集群,恢复性能低。
二、用户体验差——备份恢复过程是全命令行操作,备份恢复相关命令冗长、参数多,晦涩难懂,且只能备份到本地磁盘,后续需要数据库管理员手动操作将备份数据拷贝到其他存储或者归档到其他二级存储,总体而言对于运维管理资源开销巨大,且容易出错。
三、方案成熟度差——GaussDB通常是以海量节点规模集群部署,使用命令行工具备份方式会将各节点上的数据备份到各节点本地,后续如何对各节点的备份数据进行统一管理和运维难以解决,所以命令行工具备份方式面对海量节点规模集群场景基本无法落地。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种GaussDB分布式数据库的备份恢复系统及其方法。
本发明的目的可以通过以下技术方案来实现:一种GaussDB分布式数据库的备份恢复系统,包括相互连接的服务器端和客户端,所述客户端分布安装于GaussDB集群的多个GuassDB节点内,所述GaussDB节点内设置有数据库和Roach工具,所述Roach工具和客户端分别与MML(Media Management Library,介质管理库)接口连接,所述服务器端与多个GuassDB节点分别连接,所述服务器端设置有存储介质和管理控制台,所述存储介质用于存放待备份数据或待恢复数据;
所述管理控制台用于接收用户操作指令,以及监控各GuassDB节点的工作状态;
所述MML接口用于创建多个备份恢复通道,以实现客户端与Roach工具的相互通信,所述备份恢复通道用于传输待备份数据、恢复请求数据以及待恢复数据,所述恢复请求数据具体为待恢复数据的文件名。
进一步地,所述GaussDB集群包括一个GuassDB主节点和多个GuassDB从节点,所述GuassDB主节点内的Roach工具分别与多个GuassDB从节点内的Roach工具通信连接,所述GuassDB主节点内的Roach工具用于通知GuassDB从节点内Roach工具进行启动。
进一步地,所述GuassDB主节点内的客户端与该节点内的Roach工具通信连接,以输出启动备份或恢复指令给Roach工具。
进一步地,所述服务器端通过TCP/IP与客户端相互连接。
进一步地,所述备份恢复通道具体为命名管道FIFO(First Input First Output,先进先出)。
一种GuassDB分布式数据库的备份方法,包括以下步骤:
A1、用户发起备份任务,在GuassDB集群内随机选择一个GuassDB节点作为主节点,GuassDB集群内的其余GuassDB节点均为从节点;
A2、主节点内的客户端输出启动备份指令给该节点内的Roach工具;
A3、主节点内的Roach工具通知其余从节点内的Roach工具启动;
A4、所有节点内的Roach工具分别从本节点的数据库获取待备份数据,并通过本节点内的MML接口将待备份数据传输给服务器端进行备份。
进一步地,所述待备份数据包括data文件、log文件和配置文件。
进一步地,所述步骤A4具体包括以下步骤:
A41、所有节点内的Roach工具分别从本节点的数据库获取待备份数据,并将待备份数据写入本节点MML接口创建的命名管道FIFO;
A42、所有节点内的客户端分别从本节点内的命名管道FIFO读取待备份数据;
A43、所有节点内的客户端分别将读取的待备份数据传输给服务器端,以完成备份。
一种GuassDB分布式数据库的恢复方法,包括以下步骤:
B1、用户发起恢复任务,在GuassDB集群内随机选择一个GuassDB节点作为主节点,GuassDB集群内的其余GuassDB节点均为从节点;
B2、主节点内的客户端输出启动恢复指令给该节点内的Roach工具;
B3、主节点内的Roach工具通知其余从节点内的Roach工具启动;
B4、所有节点内的Roach工具分别从本节点的数据库获取待恢复数据,并通过本节点内的MML接口从服务器端下载数据,并将下载的数据写入本节点内的数据库,完成恢复,其中,待恢复数据包括data文件、log文件和配置文件。
进一步地,所述步骤B4具体包括以下步骤:
B41、所有节点内的Roach工具分别从本节点的数据库获取待恢复数据,并将待恢复数据的文件名写入本节点MML接口创建的命名管道FIFO;
B42、所有节点内的客户端分别从本节点内的命名管道FIFO读取待恢复数据的文件名;
B43、所有节点内的客户端分别向服务器端请求下载待恢复数据;
B44、所有节点内的客户端分别将下载的数据写入本节点内的命名管道FIFO;
B45、所有节点内的Roach工具分别从本节点内的命名管道FIFO获取下载的数据,并将获取的数据写入本节点内的数据库,完成恢复。
与现有技术相比,本发明具有以下优点:
一、本发明通过在GuassDB集群的所有节点内布置客户端以及MML接口,根据用户需求,能够基于MML接口创建多个备份恢复通道,使得单个节点能够并发执行多个数据备份恢复线程,从而有效提升备份恢复性能,此外,本发明采用主节点和多个从节点的方式,使得主节点内的Roach工具能够通知其余从节点的Roach工具进行启动,从而实现所有节点并发,进一步提升整个GuassDB数据库的备份恢复性能。
二、本发明基于主节点内的客户端输出启动备份或恢复指令给Roach工具,再由主节点的Roach工具控制从节点的Roach工具启动,且所有节点的备份数据均统一传输给同一个服务器端进行备份,不同于传统通过手动执行Roach命令行将各节点数据备份到各节点本地磁盘,再通过手动拷贝和归档进行备份数据整合的方式,本发明对于不同的备份任务和同一任务的多次备份执行,相关数据在备份过程中会以任务ID和时间点ID作为索引进行管理,备份完成后无需用户手动运维,尤其是在海量节点规模集群场景下,能够大大提升GaussDB数据备份的可执行程度、提升用户体验。
附图说明
图1为本发明的系统结构示意图;
图2为本发明中MML接口的应用示意图;
图3为本发明的备份流程示意图;
图4为本发明的恢复流程示意图;
图中标记说明:1、服务器端,11、存储介质,12、管理控制台,2、客户端,31、数据库,32、Roach工具,33、MML接口。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,一种GuassDB分布式数据库的备份恢复系统,包括相互连接的服务器端1和客户端2,本实施例中,服务器端1通过TCP/IP与客户端2相互连接,客户端2分布安装于GaussDB集群的多个GuassDB节点内,GaussDB节点内设置有数据库31和Roach工具32,Roach工具31和客户端2分别与MML接口33连接,服务器端1与多个GuassDB节点分别连接,服务器端1设置有存储介质11和管理控制台12,存储介质11用于存放待备份数据或待恢复数据;
管理控制台12用于接收用户操作指令,以及监控各GuassDB节点的工作状态;
MML接口33用于创建多个备份恢复通道,以实现客户端2与Roach工具32的相互通信,备份恢复通道用于传输待备份数据、恢复请求数据以及待恢复数据,恢复请求数据具体为待恢复数据的文件名,其中,备份恢复通道具体为命名管道FIFO。
具体的,GaussDB集群包括一个GuassDB主节点和多个GuassDB从节点,GuassDB主节点内的Roach工具分别与多个GuassDB从节点内的Roach工具通信连接,GuassDB主节点内的Roach工具用于通知GuassDB从节点内Roach工具进行启动;
GuassDB主节点内的客户端与该节点内的Roach工具通信连接,以输出启动备份或恢复指令给Roach工具。
应用上述系统进行数据备份或恢复,备份过程包括以下步骤:
A1、用户发起备份任务,在GuassDB集群内随机选择一个GuassDB节点作为主节点,GuassDB集群内的其余GuassDB节点均为从节点;
A2、主节点内的客户端输出启动备份指令给该节点内的Roach工具;
A3、主节点内的Roach工具通知其余从节点内的Roach工具启动;
A4、所有节点内的Roach工具分别从本节点的数据库获取待备份数据,并通过本节点内的MML接口将待备份数据传输给服务器端进行备份,其中,待备份数据包括data文件、log文件和配置文件,具体的:
首先,所有节点内的Roach工具分别从本节点的数据库获取待备份数据,并将待备份数据写入本节点MML接口创建的命名管道FIFO;
之后,所有节点内的客户端分别从本节点内的命名管道FIFO读取待备份数据;
最后,所有节点内的客户端分别将读取的待备份数据传输给服务器端,以完成备份。
恢复过程包括以下步骤:
B1、用户发起恢复任务,在GuassDB集群内随机选择一个GuassDB节点作为主节点,GuassDB集群内的其余GuassDB节点均为从节点;
B2、主节点内的客户端输出启动恢复指令给该节点内的Roach工具;
B3、主节点内的Roach工具通知其余从节点内的Roach工具启动;
B4、所有节点内的Roach工具分别从本节点的数据库获取待恢复数据,并通过本节点内的MML接口从服务器端下载数据,并将下载的数据写入本节点内的数据库,完成恢复,其中,待恢复数据包括data文件、log文件和配置文件,具体的:
首先,所有节点内的Roach工具分别从本节点的数据库获取待恢复数据,并将待恢复数据的文件名写入本节点MML接口创建的命名管道FIFO;
之后,所有节点内的客户端分别从本节点内的命名管道FIFO读取待恢复数据的文件名;
然后,所有节点内的客户端分别向服务器端请求下载待恢复数据,并将下载的数据写入本节点内的命名管道FIFO;
最后,所有节点内的Roach工具分别从本节点内的命名管道FIFO获取下载的数据,并将获取的数据写入本节点内的数据库,完成恢复。
本发明考虑到当前GuassDB生态尚不成熟,并未随之发布一套用于数据库备份恢复的标准接口。本发明提出的MML API接口类似于SAP HANA备份恢复的标准接口Backint,区别在于Backint是SAP官方提供协议,各大备份厂商自行适配实现,而MML API是本发明自定义并实现的接口。MML API接口支持多通道,从而能够实现多个数据对象同时并发读写、提升备份恢复性能。本实施例中,MML API以动态链接库形式提供,库名定义为:libgaussdbmml,详细接口定义如下:
MML API:
//return ERRID
int Init(void);
mml初始化,用于启动MML分配管道
//[O]txnId
//return ERRID
int BeginTxn(long txnId);
mml初始化实例,用于区分内部线程,若多线程使用,指定不同的txnId即可
//[O]txnId
//return ERRID
int EndTxn(long txnId);
结束mml实例,结束某个线程
//[I]abort
void EndAll(bool abort);
结束整个MML,关闭管道,abort为true任务失败,反之成功
//[I]errId,[O]*lenPtr,[O]*errmsg
int GetErrorString(int errId,EISOO_UInt32*lenPtr,char*errmsg);
通过错误码获取错误原因
备份SDK:
//[I]txnId,[I]*objectDescriptor
//return ERRID
int SendObject(long txnId,ObjectDescriptor*objectDescriptor);
发送数据对象
//[I]txnId,[I]*datablock
//return ERRID
int SendData(long txnId,Datablock*datablock);
发送数据块
恢复SDK:
//[I]txnId,[I]*queryDesc:包含父级对象,[O]objDesc
//return ERRID
int QueryObject(long txnId,QueryDescriptor*queryDesc,ObjectDescriptor*objDesc);
用于查询父对象下的子对象,返回为第一个子对象,返回1代表已结束
//[I]txnId,[O]*objDesc
//return ERRID
int GetNextObject(long txnId,ObjectDescriptor*objDesc);
用于查询父对象下的子对象,返回下一个子对象,返回1代表已结束
//[I]txnId,[I]*queryDesc(如roach/backupkey/),[O]*objDesc
//return ERRID
int EisooGetObject(long txnId,QueryDescriptor*queryDesc,ObjectDescriptor*objDesc);
用于恢复数据对象
//[I]txnId,[O]*datablock
//return ERRID
int EisooGetData(long txnId,Datablock*datablock);
用于恢复对象数据块
如图2所示,MML接口支持多通道,通道数无限制(本实施例仅以3通道展示)。通过使用命名管道FIFO来实现接口两端进程间的通信,完成备份恢复的数据传输。本实施例的MML接口的调用逻辑如下:
备份:
Init->BeginTxn->
SendObject 0->SendData 0->SendData 1......->SendData N->
SendObject 1->SendData 0->SendData 1......->SendData N->
......
SendObject N->SendData 0->SendData 1......->SendData N->
EndTxn->EndAll
其中,Init为全局资源初始化接口,无论通道数多少,都仅需调用一次;BeginTxn为通道初始化接口,如任务配置成n个通道,则需要先创建n个子线程,并在每个子线程中调用1次该接口完成通道初始化;SendObject为对象元数据备份接口,用于上传对象路径、类型、大小等属性;SendData为对象数据块备份接口,仅在当前备份对象是文件时使用,需要循环调用,直至当前文件的所有数据块全部上传完成;EndTxn和EndAll分别与BeginTxn和Init对应,用于相关资源的关闭和清理。
恢复:
Init->BeginTxn->
If dir
QueryObject->
EisooGetObject 0->EisooGetData 0->EisooGetData 1...->EisooGetData N->
GetNextObject->
EisooGetObject 1->EisooGetData 0->EisooGetData 1...->EisooGetData N->
......
GetNextObject->
EisooGetObject N->EisooGetData 0->EisooGetData 1...->EisooGetData N
If file
EisooGetObject->EisooGetData 0->EisooGetData 1...->EisooGetData N
->EndTxn->EndAll
其中,Init、EndAll、BeginTxn和EndTxn的用法和备份时一致,QueryObject和GetNextObject用于对已备份对象进行查询和遍历,对于每一个查询到的对象,可使用EisooGetObject和EisooGetData分别下载该对象的元数据和数据块。QueryObject和GetNextObject非必须调用,仅用于查询已备份对象,在已知已备份对象的时候,可直接调用EisooGetObject和EisooGetData进行数据恢复。若当前恢复对象为目录,则仅需调用EisooGetObject恢复其元数据。
此外,本发明还基于Roach工具进行数据备份或恢复,Roach最初是随GaussDB一同发布的物理备份工具,支持将GaussDB备份到本地磁盘,结合本发明提出的MML接口,Roach工具能够将GaussDB的数据(data文件、log文件和配置文件)通过MML接口发送给服务器端进行备份存储,且过程中不再需要将数据在本地磁盘临时转储。本实施例中,适配MML接口的Roach详细命令如下:
全量备份:
$ROACH_HOME/GaussRoach.py-t backup--master-port<port>--media-destination<media-path>--media-type abu--metadata-destination<metadata-path>--parallel-process<channel-number>[options]
增量备份:
$ROACH_HOME/GaussRoach.py-t backup--master-port<port>--media-destination<media-path>--media-type abu--metadata-destination<metadata-path>--parallel-process<channel-number>--prior-backup-key<key>[options]
全量恢复、增量恢复:
$ROACH_HOME/GaussRoach.py-t restore--master-port<port>--media-destination<media-path>--media-type abu--metadata-destination<metadata-path>--parallel-process<channel-number>--backup-key<key>[--restore-new-cluster]--clean[options]
备份显示:
$ROACH_HOME/GaussRoach.py-t show--all-backups--media-type abu--metadata-destination<metadata-path>
启动:
$ROACH_HOME/GaussRoach.py-t start--media-type abu[--restore-new-cluster]
其中--media-type参数代表备份目标介质类型,当设置为abu时,即代表是通过MML API进行数据库备份恢复,相比设置为disk,即备份到本地磁盘的方式,选择abu时Roach会以多通道(即多线程)的方式从数据库中获取备份数据,且恢复时会在所有数据库节点并发请求下载数据,从而提升备份恢复的性能。
通过随机在任一GaussDB集群节点中执行备份或恢复的命令,即可发起GaussDB集群的备份恢复。而该过程包含在客户端的备份恢复程序逻辑中,由程序自动完成,用户仅需在服务器端的管理控制台创建并发起相关任务即可。
本实施例的数据备份的过程如图3所示:
1.在GaussDB集群(也可以是主备双机或者单机)的所有节点中安装客户端。
2.备份任务发起后(所有客户端的执行进程启动后),随机在一个GaussDB节点上(即主节点)调用Roach工具启动备份,备份策略分为完全备份和增量备份。备份具体命令为:
$ROACH_HOME/GaussRoach.py-t backup--master-port<port>--media-destination<media-path>--media-type abu--metadata-destination<metadata-path>--parallel-process<channel-number>--prior-backup-key<key>[options]
其中,各参数意义如下:
-t用于指定命令行为,包含backup,restore,show,start,备份时使用‘backup’;
--master-port为Roach内部通信端口,可以指定系统无使用端口;
--media-type介质类型,使用本方案备份时此参数需设置为abu;
--media-destination目的介质数据路径,可自定义为有读写权限的路径;
--metadata-destination目的元数据路径,可自定义为有读写权限的路径;
--prior-backup-key用于增量备份,增量备份是基于完全备份,此参数值是完全备份的backup-key,backup-key可通过‘备份显示’命令:
$ROACH_HOME/GaussRoach.py-t show--all-backups--media-type abu--metadata-destination<metadata-path>获取,用户可选择基于任意一次完全备份做增备份,完全备份时不需要添加此参数。
3.主节点Roach接收到Roach备份命令后启动,并通知其他节点的Roach启动。
4.Roach获取本节点内的待备份数据,待备份数据有data文件、log文件和一些配置文件。
5.Roach调用MML API将待备份数据写入命名管道FIFO(MML API通过创建命名管道FIFO来实现客户端备份执行进程和Roach间的进程通信)。
6.客户端备份执行进程从命名管道FIFO中读取待备份数据。
7.客户端备份执行进程将数据发送到服务器端,备份完成。
本实施例的数据备份的过程如图4所示:
1.在GaussDB集群(也可以是主备双机或者单机)的所有节点中安装客户端代理。
2.恢复任务发起后(所有客户端的执行进程启动后),随机在一个GaussDB节点上(后称主节点)调用Roach工具启动恢复,恢复策略分为完全恢复和增量恢复。恢复具体命令为:
python$ROACH_HOME/GaussRoach.py-t restore--master-port<port>--media-destination<media-path>--media-type abu--metadata-destination<metadata-path>--backup-key<key>--clean[options]
其中,各参数意义如下:
-t用于指定命令行为,包含backup,restore,show,start,恢复时使用‘restore’;
--master-port为Roach内部通信端口,可以指定系统无使用端口;
--media-type介质类型,使用本方案恢复时此参数需设置为abu;
--media-destination目的介质数据路径,可自定义为有读写权限的路径;
--metadata-destination目的元数据路径,可自定义为有读写权限的路径;
--backup-key备份集标识,每次备份都会生成一个backup key,用于恢复时指定备份集恢复。--clean用于恢复时清理操作。
3.主节点Roach接收到Roach恢复命令后启动,并通知其他节点的Roach启动。
4.Roach获取本节点内的待恢复数据,待恢复数据有data文件、log文件和一些配置文件。
5.Roach调用MML API将待恢复数据的文件名写入命名管道FIFO(MML API通过创建命名管道FIFO来实现客户端恢复执行进程和Roach间的进程通信)。
6.客户端恢复执行进程从命名管道FIFO中读取待恢复数据的文件名。
7.客户端恢复执行进程向服务器端请求下载待恢复数据。
8.服务器端将数据发送至客户端。
9.客户端恢复执行进程将已下载数据写入命名管道FIFO。
10.Roach从命名管道FIFO中读取待恢复数据。
11.Roach与GaussDB通信,将数据写入数据库,恢复完成。
综上所述,本发明提供一种基于MML数据读写接口和Roach物理备份工具的GaussDB备份恢复系统及方法,包括服务器端和客户端,其中,需要在每一个GaussDB集群节点中部署客户端,所有客户端均与服务器端通过TCP/IP建立网络连接,实现数据传输时的通信。服务器端主要包含了管理控制台和备份存储介质,分别用于给用户提供图形化操作界面和存储备份的数据。客户端通过与MML API和Roach物理备份工具的交互过程,能够并发实现采集和回传备份数据的过程,客户端通过与服务器端连接,能够进行备份数据的上传和下载的过程。采用本发明提出的系统及方法,能够实现以下有益效果:
1.节点内多通道(多线程)备份恢复,提升GaussDB备份恢复性能。
MML API提供了多通道的能力,可根据用户在服务器端控制台管理界面上设置的通道数n,在执行Roach相关命令时指定--parallel-process参数为该通道数值n,备份或恢复任务发起后,MML API调用方可创建n个子线程,每个子线程通过调用BeginTxn接口,初始化一个备份恢复通道,即每个子线程对应一个备份恢复通道。通道初始化完成后子线程可继续通过调用SendObject、SendData或EisooGetObject、EisooGetData进行数据对象和数据块的备份恢复。多个子线程创建多个备份恢复通道,多个备份恢复通道并发执行多个数据对象和数据块的备份恢复,从而提升性能。
2.集群环境中所有节点并行备份恢复,提升GaussDB备份恢复性能。
Roach物理备份工具自身提供多节点并发能力,在任一GaussDB集群节点中执行Roach备份或恢复命令后,该节点的Roach通知集群中其他节点的Roach启动,集群中所有节点的Roach均会调用
MML API对当前节点上的数据进行备份和恢复,实现所有节点并发,从而提升性能。
3.备份数据输出时可结合重复数据删除、压缩、加密算法,节省存储资源,保障备份数据安全。
重复数据删除、压缩、加密模块隶属于服务器端和客户端,是备份恢复相关的高级特性。通过重复数据删除和压缩模块可实现备份数据去重、压缩,提升数据传输效率,节省备份数据存储空间;通过加密模块可实现备份数据加密后传输和存储,防止备份恢复过程中因关键业务数据被窃取而造成不必要的损失。
4.服务器端的控制台管理界面提供对于GaussDB备份恢复的向导式操作和可视化管理,提升用户体验。
用户仅需通过控制台的图形化管理界面即可完成对GaussDB的备份和恢复任务的创建、编辑和执行,并观察到当前和历史任务的执行情况,无需进入GaussDB后台手动输入冗长繁琐的Roach备份恢复命令。
5.支持将海量节点规模集群数据备份到同一存储介质,无需数据库管理员手动运维管理,提升用户体验,增强GaussDB数据保护方案成熟度。
不同于通过手动执行Roach命令行将GaussDB集群中各节点数据备份到各节点本地磁盘,再通过手动拷贝和归档进行备份数据整合的方式,本文所发明的方法会将GaussDB集群中各节点上的备份数据统一发送到同一对象存储中,对于不同的备份任务和同一任务的多次备份执行,相关数据在存储中会以任务ID和时间点ID作为索引进行管理,备份完成后无需管理员手动运维,尤其是在海量节点规模集群场景下,大大提升GaussDB数据保护的可执行程度。
6.支持本地备份数据集的远程复制(D2D2R),支持源端和目的端恢复,支持异集群恢复,异地灾备功能完善GaussDB数据保护方案完整性。
本发明的方法在数据备份到本地的对象存储之后,可以以任务ID和时间点ID作为单位,将数据远程同步到异地服务器端的对象存储中,并通过重建任务元数据索引的方式,对复制后的数据进行异地恢复,也可以支持异地的数据直接恢复到本地(需本地客户端与异地服务器端相连接,仅提供功能,通常情况下,若无特殊网络配置,数据跨地传输性能会比较差)。另外可以通过在恢复命令中加入参数--restore-new-cluster实现恢复到异集群的功能,恢复到原集群无需加入该参数。
7.支持鲲鹏平台,满足国产化需求。
本发明中所涉及的服务器端、客户端和适配了MML API的Roach版本都支持鲲鹏ARM架构,所以本发明可对鲲鹏ARM架构下的GaussDB进行备份恢复。

Claims (10)

1.一种GaussDB分布式数据库的备份恢复系统,其特征在于,包括相互连接的服务器端(1)和客户端(2),所述客户端(2)分布安装于GaussDB集群的多个GuassDB节点内,所述GaussDB节点内设置有数据库(31)和Roach工具(32),所述Roach工具(32)和客户端(2)分别与MML接口(33)连接,所述服务器端(1)与多个GuassDB节点分别连接,所述服务器端(1)设置有存储介质(11)和管理控制台(12),所述存储介质(11)用于存放待备份数据或待恢复数据;
所述管理控制台(12)用于接收用户操作指令,以及监控各GuassDB节点的工作状态;
所述MML接口(33)用于创建多个备份恢复通道,以实现客户端(2)与Roach工具(32)的相互通信,所述备份恢复通道用于传输待备份数据、恢复请求数据以及待恢复数据,所述恢复请求数据具体为待恢复数据的文件名。
2.根据权利要求1所述的一种GaussDB分布式数据库的备份恢复系统,其特征在于,所述GaussDB集群包括一个GuassDB主节点和多个GuassDB从节点,所述GuassDB主节点内的Roach工具(32)分别与多个GuassDB从节点内的Roach工具(32)通信连接,所述GuassDB主节点内的Roach工具(32)用于通知GuassDB从节点内Roach工具(32)进行启动。
3.根据权利要求2所述的一种GaussDB分布式数据库的备份恢复系统,其特征在于,所述GuassDB主节点内的客户端(2)与该节点内的Roach工具(32)通信连接,以输出启动备份或恢复指令给Roach工具(32)。
4.根据权利要求1所述的一种GaussDB分布式数据库的备份恢复系统,其特征在于,所述服务器端(1)通过TCP/IP与客户端(2)相互连接。
5.根据权利要求1所述的一种GaussDB分布式数据库的备份恢复系统,其特征在于,所述备份恢复通道具体为命名管道FIFO。
6.一种应用权利要求1所述备份恢复系统的GuassDB分布式数据库的备份方法,包括以下步骤:
A1、用户发起备份任务,在GuassDB集群内随机选择一个GuassDB节点作为主节点,GuassDB集群内的其余GuassDB节点均为从节点;
A2、主节点内的客户端输出启动备份指令给该节点内的Roach工具;
A3、主节点内的Roach工具通知其余从节点内的Roach工具启动;
A4、所有节点内的Roach工具分别从本节点的数据库获取待备份数据,并通过本节点内的MML接口将待备份数据传输给服务器端进行备份。
7.根据权利要求6所述的一种GaussDB分布式数据库的备份方法,其特征在于,所述待备份数据包括data文件、log文件和配置文件。
8.根据权利要求6所述的一种GaussDB分布式数据库的备份方法,其特征在于,所述步骤A4具体包括以下步骤:
A41、所有节点内的Roach工具分别从本节点的数据库获取待备份数据,并将待备份数据写入本节点MML接口创建的命名管道FIFO;
A42、所有节点内的客户端分别从本节点内的命名管道FIFO读取待备份数据;
A43、所有节点内的客户端分别将读取的待备份数据传输给服务器端,以完成备份。
9.一种应用权利要求1所述备份恢复系统的GuassDB分布式数据库的恢复方法,其特征在于,包括以下步骤:
B1、用户发起恢复任务,在GuassDB集群内随机选择一个GuassDB节点作为主节点,GuassDB集群内的其余GuassDB节点均为从节点;
B2、主节点内的客户端输出启动恢复指令给该节点内的Roach工具;
B3、主节点内的Roach工具通知其余从节点内的Roach工具启动;
B4、所有节点内的Roach工具分别从本节点的数据库获取待恢复数据,并通过本节点内的MML接口从服务器端下载数据,并将下载的数据写入本节点内的数据库,完成恢复,其中,待恢复数据包括data文件、log文件和配置文件。
10.根据权利要求9所述的一种GaussDB分布式数据库的恢复方法,其特征在于,所述步骤B4具体包括以下步骤:
B41、所有节点内的Roach工具分别从本节点的数据库获取待恢复数据,并将待恢复数据的文件名写入本节点MML接口创建的命名管道FIFO;
B42、所有节点内的客户端分别从本节点内的命名管道FIFO读取待恢复数据的文件名;
B43、所有节点内的客户端分别向服务器端请求下载待恢复数据;
B44、所有节点内的客户端分别将下载的数据写入本节点内的命名管道FIFO;
B45、所有节点内的Roach工具分别从本节点内的命名管道FIFO获取下载的数据,并将获取的数据写入本节点内的数据库,完成恢复。
CN202011188496.1A 2020-10-30 2020-10-30 一种GaussDB分布式数据库的备份恢复系统及其方法 Pending CN112214358A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011188496.1A CN112214358A (zh) 2020-10-30 2020-10-30 一种GaussDB分布式数据库的备份恢复系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011188496.1A CN112214358A (zh) 2020-10-30 2020-10-30 一种GaussDB分布式数据库的备份恢复系统及其方法

Publications (1)

Publication Number Publication Date
CN112214358A true CN112214358A (zh) 2021-01-12

Family

ID=74057659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011188496.1A Pending CN112214358A (zh) 2020-10-30 2020-10-30 一种GaussDB分布式数据库的备份恢复系统及其方法

Country Status (1)

Country Link
CN (1) CN112214358A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799881A (zh) * 2021-01-26 2021-05-14 浪潮云信息技术股份公司 一种云文件存储系统的备份与恢复装置及方法
CN114153660A (zh) * 2021-11-29 2022-03-08 平安壹账通云科技(深圳)有限公司 一种数据库备份方法、装置、服务器及介质
CN115202929A (zh) * 2022-06-22 2022-10-18 广州鼎甲计算机科技有限公司 数据库集群备份系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511975A (ja) * 2008-01-18 2011-04-14 ティヴォ インク 分散バックアップおよび回復システム
CN109155634A (zh) * 2016-05-12 2019-01-04 华为技术有限公司 实施极化码的设备和方法
CN111752756A (zh) * 2020-06-24 2020-10-09 厦门靠谱云股份有限公司 一种自主学习设置数据库备份策略的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511975A (ja) * 2008-01-18 2011-04-14 ティヴォ インク 分散バックアップおよび回復システム
CN109155634A (zh) * 2016-05-12 2019-01-04 华为技术有限公司 实施极化码的设备和方法
CN111752756A (zh) * 2020-06-24 2020-10-09 厦门靠谱云股份有限公司 一种自主学习设置数据库备份策略的方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DWS: "GaussDB对接NBU备份环境配置指南", 《华为云,HTTPS://BBS.HUAWEICLOUD.COM/BLOGS/177406》 *
世纪末的魔法师: "侵略如火,GaussDB(DWS)高可用容灾利器之逻辑备份", 《华为云,HTTPS://BBS.HUAWEICLOUD.COM/BLOGS/198461》 *
华为技术有限公司: "GaussDB(DWS)备份与恢复", 《华为云,HTTPS://BBS.HUAWEICLOUD.COM/VIDEOS/103299》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799881A (zh) * 2021-01-26 2021-05-14 浪潮云信息技术股份公司 一种云文件存储系统的备份与恢复装置及方法
CN114153660A (zh) * 2021-11-29 2022-03-08 平安壹账通云科技(深圳)有限公司 一种数据库备份方法、装置、服务器及介质
CN115202929A (zh) * 2022-06-22 2022-10-18 广州鼎甲计算机科技有限公司 数据库集群备份系统

Similar Documents

Publication Publication Date Title
CN112214358A (zh) 一种GaussDB分布式数据库的备份恢复系统及其方法
CN107256182B (zh) 一种数据库还原的方法及设备
EP2687987B1 (en) Method, system and serving node for data backup and recovery
CN101539873B (zh) 数据恢复的方法、数据节点及分布式文件系统
US7610314B2 (en) Online tablespace recovery for export
KR101429575B1 (ko) 데이터베이스의 실시간 백업 시스템, 데이터 복구 시스템 및 데이터 복구 방법
US10146633B2 (en) Data recovery from multiple data backup technologies
CN109144785B (zh) 用于备份数据的方法和装置
CN102169453A (zh) 一种文件在线备份方法
US7506116B2 (en) Maintaining and using information on updates to a data group after a logical copy is made of the data group
CN110109778A (zh) 一种大量小数据文件备份方法及恢复方法
JP5868986B2 (ja) アイテム単位でのリカバリー
CN104035837A (zh) 一种在线备份同/异构UNIX/Linux主机的方法
WO2024103594A1 (zh) 容器容灾方法、系统、装置、设备及计算机可读存储介质
CN113254394A (zh) 一种快照处理方法、系统、设备及存储介质
KR101254179B1 (ko) 분산 파일 시스템에서 효율적인 자료 복구 방법
CN112380067A (zh) 一种Hadoop环境下基于元数据的大数据备份系统及方法
US11599427B2 (en) Distributed recovery of server information
CN101901173A (zh) 一种灾备系统及灾备方法
US8195612B1 (en) Method and apparatus for providing a catalog to optimize stream-based data restoration
US8850139B2 (en) Changing ownership of cartridges
CN105446830A (zh) 一种基于ndmp磁盘到磁盘复制技术的数据备份方法
US10678650B1 (en) Managing snaps at a destination based on policies specified at a source
KR102597867B1 (ko) 다중 시점과 완전 삭제를 지원하는 실시간 병렬처리 기반의 데이터 백업 장치 및 그 방법
US10216746B1 (en) Managing file system access to remote snapshots

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20210112

RJ01 Rejection of invention patent application after publication