一种达梦数据库备份数据的方法

文档序号:9326766阅读:3651来源:国知局
一种达梦数据库备份数据的方法
【技术领域】
[0001]本发明涉及数据库备份方法,尤其是涉及一种达梦数据库备份数据的方法。
【背景技术】
[0002]自棱镜门事件发生以来,信息技术国产化的浪潮呼声不断高涨,继微软Windows8操作系统未入围政府采购行列之后,从应用、中间件到基础软件和硬件,几乎所有层面的产品都在加速国产化进程。2014年2月我国成立了中央网络安全和信息化领导小组,习近平指出建设网络强国要有自己的技术,有过硬的技术。由此可见国家对国内IT企业的支持力度。
[0003]国产数据库厂商达梦推出了完全自主知识产权的高性能数据库管理系统7.0版本,简称DM7。DM7支持第三方备份,提供了一套备份恢复相关的读写接口 DMSBT API。同时,第三方实现DMSBT API动态库命名是强制的,在windows平台下为dmsbtex.dll,其他非windows平台(linux或unix平台)为libdmsbtex.so。把动态库部署在达梦的系统目录bin下面,达梦备份恢复时会加载该动态库。
[0004]目前达梦数据库的备份提供本地磁盘和磁带两种备份,第三方备份和达梦提供的磁带备份使用相同的读写接口 DMSBT API。本地磁盘备份只是将数据备份到本地的磁盘,如果出现本地磁盘损坏、操作系统的崩溃等情况,备份的数据就丢失,不能保证数据的安全可靠;如果每次将备份的数据迀移到其他位置,这又花费数据库管理员的工作量。磁带备份可以将数据备份到磁带,给数据带来比较安全可靠的存放位置,但磁带的吞吐速度要弱于磁盘,而且磁带的机械故障率比较高。

【发明内容】

[0005]本发明的目的是提供一种达梦数据库备份数据的方法,一方面解决达梦备份到本地磁盘时出现数据不能安全、可靠的存储;另一方面解决达梦备份到磁带时带来备份恢复的吞吐慢问题,同时消除了因磁带的故障率比较高,在发生数据灾难时无法恢复的尴尬。
[0006]本发明的目的可以通过以下技术方案来实现:
[0007]—种达梦数据库备份数据的方法,该方法通过SBT端与第三方备份端实现数据传输,包括以下步骤:
[0008]al)创建备份时间点对象,建立SBT端和第三方备份端的连接,创建数据库实例对象;
[0009]a2) SBT端通过sbtbackup接口发送备份集,该备份集中包括若干备份片文件和一个该备份集的meta文件(元数据文件);
[0010]a3)第三方备份端接收备份集,在数据库实例对象下创建相应的备份片对象和meta文件对象,并记录各备份片对象的备份片名;
[0011]a4)第三方备份端将接收到的备份片对象和meta文件对象分割为对应的备份片数据块对象和meta数据块对象;
[0012]a5)第三方备份端将备份片数据块对象和meta数据块对象发送至数据存储中心;
[0013]a6)备份完成后,释放备份资源。
[0014]所述备份时间点对象记录有当前备份类型,且存储于数据存储中心。
[0015]所述备份片对象包括数据备份片对象和备份时生成的日志备份片对象。
[0016]该方法对应的恢复方法具体为:
[0017]bl)获取需恢复的时间点对象,建立SBT端和第三方备份端的连接;
[0018]b2)第三方备份端从数据存储中心中获取meta数据块对象,恢复meta文件对象;
[0019]b3)恢复数据备份片对象:恢复meta文件对象,第三方备份端根据SBT端发送的待恢复的备份片名从数据存储中心中获取相应的备份片数据块对象,根据SBT端的数据接收长度对各备份片数据块对象进行组织后通过服务器管道发送给SBT端;
[0020]b4)恢复日志备份片对象;
[0021]b5)恢复完成后,释放恢复资源。
[0022]所述建立SBT端和第三方备份端的连接具体为:
[0023]101)第三方备份端创建与SBT端交互的服务器管道,且该服务器管道处于等待状态;
[0024]102)创建备份线程启动备份或创建恢复线程启动恢复;
[0025]103)通过服务器管道接收SBT端发送的初始化消息,实现连接。
[0026]所述步骤b3)中,每恢复一个备份片对象过程中都重新创建服务器管道。
[0027]与现有技术相比,本发明采用第三方备份,并将数据备份到数据存储中心,数据存储中心是异地的存储介质,将磁盘做成软Raid,在其基础之上建卷管理磁盘,这样既保证发生数据灾难时快速恢复,也保证了数据的安全性、可靠性,具有以下有益效果:
[0028]1.该方法满足备份厂商一般备份达梦数据库的要求;
[0029]2.该方法解决了达梦本地磁盘备份生成的数据存放的位置不安全性,如果数据库管理员迀移数据会增加工作量;
[0030]3.该方法解决了达梦磁带备份时吞吐速度慢,而且磁带机械故障率比较高,容易出现需要恢复时不能恢复数据;
[0031]4.本发明采用第三方备份,而不是采用达梦本身提供的备份方案,可以很好的管理数据库的数据安全性,减少各个数据库厂商为了数据安全而增加研发成本。
【附图说明】
[0032]图1为本发明第三方备份流程图;
[0033]图2为本发明第三方恢复流程图。
【具体实施方式】
[0034]下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0035]本实施例提供一种达梦数据库备份数据的方法,主要是通过管道备份恢复达梦数据库,使用达梦提供的DMSBT API的读写接口实现,具体包括:
[0036]1、第三方备份达梦数据库:第三方通过达梦的SQL语句发起备份请求,达梦数据库启动一个备份恢复进程并加载SBT动态库通过管道进行数据的传输。
[0037]结合图1所示,阐述SBT端和第三方备份端之间数据传输过程。
[0038]I) SBT 端
[0039]SBT端提供了 DMSBT API的接口,可通过这些接口进行环境初始化、新建备份片和写数据等过程。SBT端备份流程如下:
[0040]①初始化环境;
[0041 ] sbtinit(initins, &initouts);
[0042]②备份过程初始化;
[0043]sbtinit2(init2ins, &init2outs);
[0044]③新建一个备份片;
[0045]sbtbackup(SBTFILE_DATAFILE, “DB_DAMENG_..._XXXXXX.bak”);
[0046]④写数据,buffer的内容写到sbtbackup创建的备份片;
[0047]sbtwrite(buffer, length);
[0048]......
[0049]⑤一个备份片备份结束,关闭备份片;
[0050]sbtclose ();
[0051]⑥取当前结束备份片的信息;
[0052]sbtinfo(&sbtobjinfos);
[0053]如存在没有备份完的数据或需要写meta文件,返回③;
[0054]⑦备份meta文件;
[0055]sbtbackup(SBTFILE_DATAFILE, “DB_DAMENG_..._XXXXXX.meta”);
[0056]sbtwrite(buffer, length);
[0057]......
[0058]sbtclose ();
[0059]⑧释放备份的资源;
[0060]sbtend (FALSE) ;//若备份失败,则 sbtend(TRUE);
[0061]2)第三方备份端
[0062]第三方备份端既提供了与SBT交互的相关操作,也提供了与数据存储中心交互的操作。具体操作如下:
[0063]①创建备份时间点对象;
[0064]每发起一次备份就相应产生一个时间点对象,该时间点对象记录了当前备份的类型并发送给数据存储中心。
[0065]②创建数据库实例对象;
[0066]每个数据库实例在每一个时间点都会产生一个数据库实例对象,在发送数据库实例对象给数据存储中心之前,需要执行的操作如下:首先是创建与SBT交互的服务器管道并让管道处于等待状态;其次是创建备份线程,线程中使用SQL语句启动备份过程;最后是接收SBT发送给服务器管道的初始化消息,表示第三方备份端和SBT端可以正式通信。
[0067]③创建备份片或meta对象;
[0068]达梦数据库备份生成一个完整的备份集,一个备份集包含若干备份片文件和一个该备份集的meta文件。根据SBT的sbtbackup接口发送过来的备份文件类型可以区别是备份片还是meta文件,发送备份片对象或meta对象到数据存储中心。
[0069]④创建备份片或meta的数据块对象;
[0070]数据块对象将数据块以一个对象的方式发送数据块到数据存储中心,根据SBT的sbtwrite接口通过管道发送数据块到第三方备份端。
[0071]2、第三方恢复达梦数据库:第三方通过达梦的DMRMAN进程发起恢复请求,达梦数据库启动一个备份恢复进程并加载SBT动态库通过管道进行数据的传输。
[0072]结合图2所示,阐述SBT端和第三方恢复端之间数据传输过程。
[0073]I) SBT 端
[0074]SBT端提供了 DMSBT API的接口,可通过这些接口进行环境初始化、数据恢复和数据读等过程。SBT端恢复流程如下:
[0075]第一,恢复元数据文件并对其校验;
[0076]①初始化环境;
[0077]sbtinit(initins, &initouts);
[0078]②还原过程初始化;
[0079]sbtinit2(init2ins, &init2outs);
[0080]③打开并读取meta文件,此处文件名使用sbtinit2中返回的meta文件名,忽略目录信息;
[0081 ] sbtrestore ( “DB_DAMENG_..._ΧΧΧΧΧΧ.meta”);
[0082]sbtread(buffer, length);
[0083]sbtclose ();
[0084]④释放恢复的资源;
[0085]sbtend (FALSE) ;//若恢复失败,则 sbtend (TRUE);
[0086]第二,还原备份集过程,通过DMRMAN进程进行脱机还原数据;
[0087]①初始化环境;
[0088]sbtinit(initins, &initouts);
[0089]②还原过程初始化;
[0090]sbtinit2(init2ins, &init2outs);
[0091]③打开并读取meta文件,此处文件名使用sbtinit2中返回的meta文件名,忽略目录信息;
[0092]sbtrestore ( “DB_DAMENG_..._ΧΧΧΧΧΧ.meta”);
[0093]sbtread (buffer, length);
[0094]sbtclose ();
[0095
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1