数据备份和恢复方法及系统与流程

文档序号:12271114阅读:1282来源:国知局
数据备份和恢复方法及系统与流程

本发明涉及数据库备份技术领域,特别涉及一种数据备份和恢复方法及系统。



背景技术:

随着大数据时代的到来,以Hadoop为代表的大数据技术不断成熟,基于NoSQL存储海量数据的方案也成熟起来,NoSQL数据库具有良好的海量数据存储能力和线性的横向扩展能力,以及海量数据的查询能力。与此同时,传统的关系型数据库(RDBMS,Relational Database Management System)由于在数据结构、事务处理和良好的结构化查询语言(SQL,Structured Query Language)支持,对于传统应用支持非常好,也将会和新兴的大数据数据库长期并存。

但是对于大数据量的情况,传统RDBMS的备份主要通过磁带库实现,其它诸如光盘、硬盘、U盘等方式由于容量、保密性、物理可靠性、安全性等原因而不适用于大量备份,利用磁带库备份使得每一套数据库均需要购买备份工具和磁带库才能进行备份,实施难度大、投入成本高。同时备份数据以磁带方式存储于磁带库中,只能进行线性读写,未经完全恢复的情况下很难进行数据查询。此外,传统方式备份数据的恢复必须恢复至相同环境,如数据库的版本相同、操作系统的类型相同等的数据库中,无法在异构环境中恢复,进一步增加了备份数据的使用难度。



技术实现要素:

为解决现有存在的技术问题,本发明实施例期望提供一种数据备份和恢复方法及系统,以对传统关系型数据库进行快捷、高效、易用的备份。

本发明实施例的技术方案是这样实现的:

在本发明实施例的一方面,提供一种数据备份方法,包括:

从待备份关系型数据库中获取表结构,解析所述表结构中数据之间的E-R模型;

按照预设的备份参数启动备份,根据所述E-R模型和行-列转换模型将所述关系型数据库各表的行数据转换为列数据;

将转换后的所述列数据写入HBase库中。

优选地,所述行-列转换模型包括:

建立与待备份表的表名相同的HBase表;

在所述待备份表有主键时,以所述主键作为所述HBase表的RowKey;在所述待备份表没有主键时,自动产生所述HBase表的RowKey;

为所述HBase表增加第一列族,将所述待备份表的各字段依次作为所述第一列族的各列;

在所述待备份表包括至少一个外键表时,根据每个所述外键表依次增加所述HBase表的列族,所述外键表的各个字段分别作为对应列族的各个列。

优选地,所述数据备份方法还包括:

对于各个所述外键表,将所述外键表按照所述行-列转换模型进行转换。

在本发明实施例的另一方面,还同时提供一种数据恢复方法,包括:

读取HBase库、E-R模型和预设的还原配置信息,其中,所述HBase库和所述E-R模型按照上述的数据备份方法得到;

根据所述E-R模型和列-行转换模型将所述HBase库各表的列数据转换为行数据;

根据所述还原配置信息将所述行数据恢复至目标库。

优选地,所述数据恢复方法还包括:

在所述目标库为异构数据库时,根据所述目标库的数据要求转换所述行数据的数据格式后再恢复至所述目标库。

在本发明实施例的再一方面,还提供一种数据备份系统,包括:

解析模块,用于从待备份关系型数据库中获取表结构,解析所述表结构中 数据之间的E-R模型;

行-列转换模块,用于按照预设的备份参数启动备份,根据所述E-R模型和行-列转换模型将所述关系型数据库各表的行数据转换为列数据;

备份模块,用于将转换后的所述列数据写入HBase库中。

优选地,所述行-列转换模块还包括:

建表模块,用于建立与待备份表的表名相同的HBase表;

RowKey模块,用于在所述待备份表有主键时,以所述主键作为所述HBase表的RowKey;或用于在所述待备份表没有主键时,自动产生所述HBase表的RowKey;

主数据模块,用于为所述HBase表增加第一列族,将所述待备份表的各字段依次作为所述第一列族的各列;

外键数据模块,用于在所述待备份表包括至少一个外键表时,根据每个所述外键表依次增加所述HBase表的列族,所述外键表的各个字段分别作为对应列族的各个列。

优选地,所述数据备份系统还包括:

外键表转换模块,用于将各个所述外键表通过所述行-列转换模块按照所述行-列转换模型进行转换。

在本发明实施例的又一方面,还同时提供一种数据恢复系统,包括:

读取模块,用于读取HBase库、E-R模型和预设的还原配置信息;其中,所述HBase库和所述E-R模型由权利要求6至8任一项所述的数据备份系统得到;

列-行转换模块,用于根据所述E-R模型和列-行转换模型将所述HBase库各表的列数据转换为行数据;

恢复模块,用于根据所述还原配置信息将所述行数据恢复至目标库。

优选地,所述恢复模块还包括:

格式转换模块,用于在所述目标库为异构数据库时,根据所述目标库的数据要求转换所述行数据的数据格式后再恢复至所述目标库。

本发明实施例期望提供的数据备份和恢复方法及系统,通过HBase库对关 系型数据进行备份和恢复,不再依赖磁带库及相关工具,本发明实施例可将全部关系数据备份在一张HBase表中,凭借HBase库列存储的灵活性和可伸缩性,实现了低成本、高效率的备份,同时可支持自由查询和异构恢复。

附图说明

图1为本发明的一个实施例中数据备份方法的流程示意图;

图2为本发明的另一个实施例中数据恢复方法的流程示意图;

图3为本发明的再一个实施例中数据备份系统的模块结构示意图;

图4为本发明的再一个实施例中数据恢复系统的模块结构示意图。

具体实施方式

目前的RDBMS备份,主要采用RDMBS自带的数据库备份功能或专业的备份工具进行,同时需要采购备份磁带库和磁带。磁带备份的成本极高,且少量物理损坏会导致全部数据不可用,安全性和可靠性差;此外,传统RDBMS备份数据查询不易、无法进行异构恢复等缺陷,也进一步限制了其发展和应用。

本发明实施例中,通过HBase(Hadoop Database,一种基于Hadoop的NoSQL数据库)对关系型数据进行备份和恢复,实现了低成本、高效率的备份,同时可支持自由查询和异构恢复。

如图1所示,本发明实施例的数据备份方法包括:

S1:从待备份关系型数据库中获取表结构,解析所述表结构中数据之间的实体-关系(E-R,Entity-Relationship)模型;

S2:按照预设的备份参数启动备份,根据所述E-R模型和行-列转换模型将所述关系型数据库各表的行数据转换为列数据;

S3:将转换后的所述列数据写入HBase库中。

其中,本发明实施例中提供一套可支持将多种关系型数据库中表结构导出的数据库驱动,其可支持的RDBMS包括但不限于DB2、Oracle、MySQL等常用的传统关系型数据库。步骤S1中,利用该数据库驱动连接待备份的数据库,导 出其中的表结构进行解析,获得各数据之间的E-R模型,主要模型包括1-1(即1对1)模式、1-N(即1对多)模式和M-N(即多对多)模式。此外,还同时记录导出的原始表结构,用于在数据库恢复时使用。

步骤S2中,预设的备份参数主要规定了数据库备份的策略,通常包括备份时间、频率、备份方式、目前库IP、用户、全量备份、增量备份(对于增量备份,需要原数据增加时间戳,删除数据禁用物理删除等要求)等;根据这些参数系统将在预定的时间按照指定的方式启动备份。将关系型数据库备份到HBase的关键是数据格式的转换,其中,相对于传统关系型数据库以一行记录为单位的数据行存储方式,Hadoop及HBase最大的特点是数据以列数据集合(或称列族,column family)为单位的列存储。本发明实施例中,根据解析得到的E-R模块和行数据转换到列数据的转换模型进行数据转换,转换的原则是在一张HBase表中保存RDBMS中存在对应关系的全部关系表数据,其中以主表数据作为HBase表第一列族,以每个外键表作为一个增加的列族进行转换。具体行-列转换模型表述如下:

建立与待备份表的表名相同的HBase表;

如待备份表有主键,则HBase表的RowKey与待备份表主键相同;如果没有,则自动产生RowKey,优选地,自动产生的RowKey为一个自增的序号;

如果待备份表为1-1模式,则HBase表增加一个列族(此处以列族名为info为例),分别根据待备份表的各字段增加各列(比如依次在列族info中增加列info:字段i,其中字段i为待备份表中第i个字段);

如果待备份表为1-N模式,则HBase表第一个列族为待备份表数据,第二个列族开始为根据外键映射的数据集,第二个列族开始的各列族名为对应外键表的表名;如果一张表有多个1-N模式的外键表,则根据多个外键表增加多个列族;

如果待备份表为M-N模式,则HBase表第一个列族为待备份表数据;第二个列族开始仍然为根据外键映射的数据集,第二个列族名为外键表的表名,对于待备份表中的M个数据不做合并处理,仍然按照待备份表的不同行进行记录。如果有多个M-N模式的外键表,则根据多个外键表依次增加列族。

具体地,1-N模式时,备份后列数据表的形式为:表名+RowKey+info:字段1+…+info:字段N1+外键表:字段1+…+外键表:字段N2,其中N1为待备份表字段数,N2为外键表字段数;有多个外键表时按照该形式依次增加列族。一个典型的示例:如用户表User(Userid,Number,Name,DeptId),部门表Dept(DeptId,DeptNumber,DpetName)为1-N模式,备份后即为:(User,Userid,info:Number,info:Name,info:DeptId,dept:DeptNumber,dept:DeptName)。

M-N模式的示例:如学生表为待备份表,课程表为外键表,一个学生可以选择多个课程,一个课程可以被多个学生选择,其关系即为M-N模式。其中,学生表UserCourse(Id,UserNumber,CourseId);课程表Course(CourseId,CourseNumber,CoursName);相应的转换结果为:(UserCourse,Id,info:UserNumber,info:CourseId,course:CourseNumber,course:CoursName)。同一学生选择多个课程时由多行数据表示,备份时对其不做合并处理,仍然按照不同行在HBase表中进行记录。

根据上述行-列转换模型确定HBase表及其转换结构后,依次读取待备份表和外键表(若存在)中各行数据,将每个字段的记录按照转换关系写入HBase表对应列族的对应列中,实现待备份关系型数据库到HBase库的备份。其中,在外键表存在时,HBase各行与待备份表/外键表的行并不对应,根据数据关系适当填充为多行数据备份;比如上述同一学生选择多个课程,由多行该学生数据分别填充各课程列族数据实现备份。

上述模型详细描述了待备份表作为主表时的转换方式,对于各个外键表,直接将其视作主表按上述模型进行转换即可。对于某些情况,由于数据库中的数据关系是相对的,还可将主表作为外键表的外键表进行转换备份。比如,由于课程表记录了N个学生,在备份课程表时,将课程表视作主表按照上述待备份表处理,学生表视作课程表的外键表增加列族,转换相应的N个学生记录。此方式可使得每一HBase表均可支持全部数据的自由查询,增强了备份数据的适用性。

传统的磁带备份能够支持对数据库进行全量备份或增量备份,同时对于数 据库的数据结构、存储过程、视图、权限等也可进行全量备份,恢复时也能进行全量恢复或者指定恢复到一个特定时间点。但在实际应用中,数据库备份最重要的是对数据的备份;而其它诸如数据结构、视图、权限等内容的实际变化量很低,全量备份需求较低,同时恢复到特定时间点等功能在实际应用中的使用频率也非常低(基本不使用),但现有技术中要提供这些备份和恢复功能所造成的成本却非常高。本发明实施例仅备份数据和表结构(E-R模型),降低成本的同时提高了效率,同时依赖于HBase的可伸缩性,可自由实现全量备份和增量备份;HBase的时间戳特性更可轻松实现定点备份和查询,在各方面的性能均优于传统的磁带备份方式。

更进一步地,本发明实施例还提供一种数据恢复方法,以便将备份到HBase库的数据还原到关系型数据库中。如图2所示,本发明实施例的数据恢复方法包括:

S21:读取HBase库、E-R模型和预设的还原配置信息,其中,所述HBase库和所述E-R模型按照上述数据备份方法得到;

S22:根据所述E-R模型和列-行转换模型将所述HBase库各表的列数据转换为行数据;

S23:根据所述还原配置信息将所述行数据恢复至目标库(关系型数据库)。

其中,还原配置信息包括目标库名、IP、用户名密码、库类型、JDBC驱动。对于不同的数据库环境,还需要配置数据转换的驱动,如MYSQL转换ORACEL或者ORACEL转db2等,一些日期、文本格式是不相同的,需要根据驱动来转换格式。因此,本发明优选实施例中,在目标库为异构数据库时,还根据目标库的数据要求转换所述行数据的数据格式。

在列数据转换为行数据的过程中,根据原库的E-R模型,将HBase中的列族还原为单独的表,对第一列族进行还原可得到原主表。具体的列-行转换模型与上述行-列转换模型相对,简单表述如下:

建立与待恢复HBase表的表名相同的目标库表;

以所述HBase表的RowKey作为所述目标库表的主键;

读取所述HBase表的第一列族,将所述第一列族的各列作为所述目标库表的各字段依次加入所述目标库表。

比如,上面示例中的(User,Userid,info:Number,info:Name,info:DeptId,dept:DeptNumber,dept:DeptName)表,读取第一列族info,还原至目标库User表中,数据为UserId+Number+Name+DeptId。

根据上述列-行转换模型确定目标库表及其转换结构后,依次读取HBase表各行数据,将第一列族每个列的记录按照转换关系写入目标库表对应字段中,实现HBase库到目标库(关系型数据库)的数据恢复。

如图3所示,本发明实施例还同时提供了一种数据备份系统1,包括:

解析模块101,用于从待备份关系型数据库中获取表结构,解析所述表结构中数据之间的E-R模型;

行-列转换模块102,用于按照预设的备份参数启动备份,根据所述E-R模型和行-列转换模型将所述关系型数据库各表的行数据转换为列数据;

备份模块103,用于将转换后的所述列数据写入HBase库中。

与前述数据备份方法相对应地,所述行-列转换模块还包括:

建表模块,用于建立与待备份表的表名相同的HBase表;

RowKey模块,用于在所述待备份表有主键时,以所述主键作为所述HBase表的RowKey;或用于在所述待备份表没有主键时,自动产生所述HBase表的RowKey;

主数据模块,用于为所述HBase表增加第一列族,将所述待备份表的各字段依次作为所述第一列族的各列;

外键数据模块,用于在所述待备份表包括至少一个外键表时,根据每个所述外键表依次增加所述HBase表的列族,所述外键表的各个字段分别作为对应列族的各个列。

此外,为实现外键表的备份,所述数据备份系统还包括:外键表转换模块,用于将各个所述外键表通过所述行-列转换模块按照所述行-列转换模型进行转换。

同样地,如图4所示,本发明实施例还提供了一种数据恢复系统2,包括:

读取模块201,用于读取HBase库、E-R模型和预设的还原配置信息;其中,所述HBase库和所述E-R模型由上述数据备份系统得到;

列-行转换模块202,用于根据所述E-R模型和列-行转换模型将所述HBase库各表的列数据转换为行数据;

恢复模块203,用于根据所述还原配置信息将所述行数据恢复至目标库。

针对异构数据库的恢复,所述恢复模块还包括:格式转换模块,用于在所述目标库为异构数据库时,根据所述目标库的数据要求转换所述行数据的数据格式后再恢复至所述目标库。

优选地,上述数据备份系统和数据恢复系统可以部署在同一设备中,比如由同一台网络服务器实现,也可以由两不同的设备分别实现。进一步利用HBase的可伸缩性,各个系统还可分别由多个设备共同实现;比如由多个分布式网络服务器共同实现上述数据备份系统,每个网络服务器保存HBase库的部分或全部。在实际应用中,两个系统中的各模块(包括但不限于解析模块、行-列转换模块、备份模块、建表模块、RowKey模块、主数据模块、外键数据模块、外键表转换模块、读取模块、列-行转换模块、恢复模块、格式转换模块)均可由位于系统设备中的中央处理器(Central Processing Unit,CPU)、微处理器(Micro Processor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。

本发明实施例提供了一种数据备份和恢复方法及系统,通过HBase库对关系型数据进行备份和恢复,实现了低成本、高效率的备份,同时可支持自由查询和异构恢复。相对于现有技术,本发明实施例的有益效果包括:

1)本发明实施例的方法及系统易于实现,采用通用大数据设备(硬盘为主的PC服务器)即可,不需要专门配制备份工具和磁带库,降低了硬件成本;

2)HBase库的列存储方式易于扩展,且可通过磁盘阵列和分布式部署等方式进一步增强系统稳定性和可靠性,备份数据的安全性和物理可靠性极高;

3)本发明实施例可将关系型数据库的全部关系数据备份在同一张HBase表 中,备份数据不仅可自由查询,且依赖于大数据处理的高性能,管理和查询效率均优于传统关系型数据库;

4)依赖于HBase库列存储的灵活性和可伸缩性,本发明实施例可针对异构环境进行数据备份和恢复,恢复时无需重建或恢复原数据库环境,降低了数据恢复要求,增强了备份数据的适用性和恢复效率。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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