一种数据库的多节点备份系统及方法与流程

文档序号:36599292发布日期:2024-01-06 23:08阅读:17来源:国知局
一种数据库的多节点备份系统及方法与流程

本发明属于数据储存,尤其是涉及一种数据库的多节点备份系统及方法。


背景技术:

1、在主数据系统中会收集和管理大量甚至海量的数据。结构化数据库是这些数据的一种常见的存储和使用方式,而数据库中的数据在迁移、备份、还原时都涉及到数据库的备份操作。传统的数据库备份模式,多是基于数据库自身提供的备份工具,也有第三方提供的备份工具,使用这些工具执行数据库的备份工作时,单次的备份工作均是在备份发起计算机的单机上执行。当数据库内数据量较大时,例如,当数据库容量达数百g甚至容量以t计算时,采用传统的备份模式,一方面备份时间消耗较大,备份任务的执行需要耗费数个小时甚至更长时间;另一方面对备份机器本身的资源要求也较高,例如长时间占用cpu和内存资源,造成备份中止甚至死机。在主数据管理系统中,难免会出现各种紧急情况。当面对紧急情况,需要快速且可靠的备份大量数据时,使用传统的备份方式无法满足紧急备份的需求,从而引发数据灾难。


技术实现思路

1、发明目的:本发明的目的旨在提供一种多节点多线程备份、备份速度快的数据库的多节点备份系统,本发明的另一目的旨在提供一种数据库的多节点备份方法。

2、技术方案:本发明所述的一种数据库的多节点备份系统,包括主数据平台数据库以及至少一个用于备份主数据平台数据库内存储数据的备份节点,备份节点包括系统资源统计模块、节点通信管理模块、数据库连接模块、数据库信息统计模块、备份任务切分模块、备份任务执行模块以及备份结果回传模块;所述系统资源统计模块用于统计参与备份节点的资源与能力情况,所述节点通信管理模块将备份任务分发给各备份节点,在接收到所有节点备份成功消息通知后,该模块进行文件传递,获取各个备份节点的备份结果;所述数据库连接模块用于管理备份节点与主数据平台数据库之间的连接,保存两者之间的连接配置;所述数据库信息统计模块用于对待备份主数据平台数据库的基本信息进行统计;所述备份任务切分模块用于备份任务的划分;所述备份任务执行模块用于数据的备份,所述备份结果回传模块用于通知备份节点回传备份结果文件。

3、其中,所述系统资源统计模块所统计的信息节点信息包括每个节点的备份区可用硬盘空间、网络带宽、处理速度、内存大小。

4、其中,所述据库信息统计模块用于获取主数据平台数据库的基本信息,该基本信息包括数据库的类型、当前版本、数据表的数量、每张表的数据字典、每张表的记录行数、数据表之间的依赖、视图、函数、存储过程。

5、其中,所述备份任务切分模块在进行任务的划分时会先对有依赖关系的数据库对象进行统计,将彼此有依赖关系的对象视作一个备份单位,统计该单位整体的数据量;对于无依赖关系的数据对象被各自视作一个备份单位;任务分配过程中,彼此有依赖关系的多个对象作为一个整体备份单位会获得较高的备份排序优先级,置于备份队列的前面部分,其余无依赖的数据对象会按照数据量的大小在队列中进行排序;任务分配时,备份任务划分策略模块会先从排序队列头部取出备份单位,优先分配到资源较充足的节点上,分配完毕后再到队列中取下一单位继续分配,直到完成;分配过程中,若遇到节点备份能力不足的情况,例如待备份单位的数据量超过备份节点的存储空间,则会跳过对该节点的任务分配;任务划分完毕后,发起节点将任务分配的结果,通过节点通信管理模块发送至各个备份节点。

6、其中,所述备份任务执行模块在执行分配任务时对于有依赖关系的对象,会按照依赖关系逐个备份,此时备份采用单线程的方式进行,以确保备份结果的规范;对于没有依赖关系的对象,按照备份节点的自身能力决定采用单线程或多线程的方式进行备份执行。

7、一种数据库的多节点的备份方法,其特征在于,包括以下步骤:

8、步骤1、建立备份节点之间的通信连接获取备份节点的资源信息;

9、步骤2、根据备份节点的资源信息和主数据平台数据库的进行任务划分;

10、步骤3、备份节点接收到备份任务后执行该任务并反馈备份结果。

11、其中,所述步骤1中建立备份节点之间的通信连接获取备份节点的资源信息,包括以下步骤:

12、步骤11、指定任意一个备份节点为配置节点,配置节点启动一个侦听端口用于接收其它备份节点更新、获取配置信息的请求,并开辟存储用于接收和维护各个备份节点资源信息;

13、步骤12、各备份节点通过接收配置节点的广播或手工指定的方式获取配置节点的信息,完成信息获取后由备份节点向配置节点发起连接;各备份节点将再启动一个侦听端口,用于接收其它备份节点发送的任务请求;

14、步骤13、每个备份节点启动后通过系统资源统计模块获得本机资源,各节点会定时对本机资源进行统计,主要包括网络带宽、内存大小、存储位置的剩余空间、cpu数量信息;

15、步骤14、各节点定时将自身资源信息上报至配置节点,配置节点将这些信息更新到自身的在线节点列表信息中,并定时将在线节点列表信息发送至各在线节点,当有新节点加入或者有在线节点退出时,配置节点会及时向在线节点发送更新信息。

16、其中,所述步骤2中任务划分,包括以下步骤:

17、步骤21、用户在某个备份节点上的数据库连接模块中选择待备份的主数据平台数据库,并发起备份;

18、步骤22、备份发起节点会连接主数据平台数据库,并通过数据库信息统计模块去查询数据库,获得必要的数据信息,包括待备份数据库的版本、数据表、视图、函数等对象信息,以及对象间依赖情况;

19、步骤23、完成待备份数据库信息统计后,对这些信息进行整理,将有依赖关系的对象视作一个备份单位,统计该单位整体的数据量,备份时该单位不做割裂拆分,其余无依赖关系的数据对象会被各自视作一个备份单位;

20、步骤24、整理任务分配队列,彼此有依赖关系的多个对象作为一个整体备份单位会获得较高的备份排序优先级,置于备份队列的前面,其余无依赖的数据对象会按照数据量的大小在队列中进行排序;

21、步骤25、各节点备份任务划分,对照本节点接收到的备份节点表,开始划分各节点备份任务,任务分配时,备份任务划分策略模块会先从排序队列头部取出备份单位,优先分配到资源较充足的节点上,然后再从队列中取下一单位继续分配,直到完毕;分配过程中,若遇到节点备份能力不足的情况,跳过对该节点的任务分配;

22、步骤26、任务划分完毕后,任务发起节点向各备份节点发起连接请求,所有连接建立完毕后,将分配好的任务打包发送至各备份节点。

23、其中,所述步骤3中备份节点执行任务时,包括以下步骤:

24、步骤31、备份节点接收到备份任务后,解析任务内容,将任务单位内容存于本节点的任务队列中;

25、步骤32、从任务队列中获取任务单位,有依赖关系的备份单位会排在队首,对于有依赖关系的单位,会采用单线程的方式进行备份,按照依赖关系逐个备份数据对象;有依赖关系的对象备份完成后,对其它任务单位,将根据节点自身的资源情况,采用单线程或多线程的备份模式;

26、步骤33、回复执行结果,本节点的任务队列执行完毕后,向发起节点发送消息报告任务完成;

27、步骤34、备份结果回传,当所有节点备份任务均完成后,备份发起节点向各备份节点发出结果回传请求,各个节点将备份的结果文件发送至备份发起节点;

28、步骤35、结果文件集中保存,备份发起节点接收到各节点发回的备份结果文件后,将其存储于本地文件夹中,进行统一的存储、拼接、压缩等操作,用于后续的数据还原;

29、其中,所述步骤34中,若接收到的消息中有备份失败的情况,则向原备份节点再次指派该备份任务,若再次失败,则更换备份节点执行此备份任务,失败到达一定次数后,上报人工处理。

30、有益效果:与现有技术相比,本发明具有以下显著的进步:本发明通过将一个主数据系统的备份任务切分成多个子任务交由主数据系统之外的多台计算机同时执行,各备份计算机可以进一步细分成多个备份线程。通过多进程、多线程同时协作备份的方式,本发明在不影响主数据系统响应能力的前提下,可以提高对主数据系统中结构化数据的备份速度。此外,本发明在进行任务划分和执行时,对于有依赖关系和无依赖关系的数据进行了划分,保证了数据的完整性,进一步提高了数据备份的效率;其次,在单个备份节点完成任务后,会响应其他备份节点的任务请求,保证所有数据能够储存完整,任意一备份节点均进行所有数据的备份,方便了大容量数据库的数据备份。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1