CN113641694A - 数据库的海量历史数据备份方法和恢复方法 - Google Patents
数据库的海量历史数据备份方法和恢复方法 Download PDFInfo
- Publication number
- CN113641694A CN113641694A CN202110805219.9A CN202110805219A CN113641694A CN 113641694 A CN113641694 A CN 113641694A CN 202110805219 A CN202110805219 A CN 202110805219A CN 113641694 A CN113641694 A CN 113641694A
- Authority
- CN
- China
- Prior art keywords
- backup
- data
- task
- database
- data packet
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000011084 recovery Methods 0.000 title claims abstract description 74
- 230000008569 process Effects 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000012360 testing method Methods 0.000 claims description 11
- 238000001914 filtration Methods 0.000 claims description 7
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000004422 calculation algorithm Methods 0.000 description 18
- 238000012795 verification Methods 0.000 description 6
- 238000012800 visualization Methods 0.000 description 6
- 238000012805 post-processing Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004622 sleep time Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了数据库的海量历史数据备份方法和恢复方法,包括:扫描数据库,通过SQL查询语句获得所有数据表的结构、表宽度和表长度;根据所有数据表的结构、表宽度和表长度建立快照列表,快照列表的每一行对应一个数据包的备份任务,所述备份任务具备其对应的备份任务属性;根据备份任务属性确定需要备份的数据包;使用SQL查询语句查询数据库取得需要备份的数据包内容并进行备份。本发明采取多任务的方式完成,结构清晰,便于实现大容量的历史数据的备份。
Description
技术领域
本发明涉及适用于数据库的海量历史数据备份方法,属于数据库技术领域。
背景技术
现有的SQL数据库而言,一般的数据库备份和恢复方法,主要有物理备份数据,逻辑备份数据和内联导出数据等几种方式。
第一,物理备份数据操作简单方便,就是直接拷贝数据库文件的方式。恢复数据时,直接将源数据库的数据库文件的备份粘贴到目标数据库的数据(DATA)目录下,启动目标数据库,可以完成数据的转移。
第二,逻辑备份数据是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现。例如,MySQL数据库自带的mysqldump工具,Oracle自带的EXP/EXPDP工具就是逻辑备份数据工具。恢复数据时,则将导出的数据中的对象/分区重新导入数据库即可。逻辑备份的数据格式是SQL语句。逻辑备份数据的对象可以是特定数据表,也可以是整个数据库。
第三,内联导出数据是通过内联(inline)方式将查询(select)出来的表数据直接输出到文件中,恢复数据时,也是采用内联的方式将导出文件内的数据导入特定的表中即可。内联导出的数据格式是文本或CVS格式。内联导出数据的对象仅仅是特定的数据表。
现有的SQL数据库备份方法,各有各的缺陷:
对于物理备份方式,只有在目标设备与源设备的系统环境、数据库Server版本及数据库Server参数基本一致的情况下,才可以成功恢复数据库。因此,这极大地限制了此种方法的应用场景。
对于逻辑备份数据和内联导出数据方式,在针对数据量不大,数据更新不频繁且数据安全性要求不高的情况下,都可以达到理想的数据备份的效果。然而,当数据量达到一定程度,尤其是历史数据表,其单个表的记录条数上千万条,或单个数据表的数据容量达到GB甚至TB规模的时候,效果都很不理想。
当需要备份的数据表容量很大的情况下,备份过程常常需要几十甚至几百个小时才能完成,而且由于物理机器的内存有限和数据缓存生命周期等限制,在逻辑备份及内联导出的过程中,会出现数据失效等错误,继而导致备份失败,几乎无法正常实现数据库备份、恢复、移库等目标。
当数据库数据插入和更新频繁的情况下,进行长时间的数据热备份会占用大量系统的计算和IO资源且无法控制,会导致数据库服务器性能下降,继而会引起一系列灾难性后果。
当数据安全性要求较高的情况下,逻辑备份及内联导出数据的文件格式都是明文,也会有数据安全性的隐患。
另一方面,当一个数据库备份任务长达几十小时到几百小时的时候,如果期间出现任务中断退出的情况,则该任务失败,必须重新开始,不可能继续完成中断的任务,使效率变低。
综上所述,现有的SQL数据库的海量历史数据的热备份方法还有待改进。
发明内容
首先本发明旨在针对现有的数据库备份方法主要针对数据量不大,数据更新不频繁且数据安全性要求不高的情况,提供数据库的海量历史数据备份方法。
为实现以上技术目的,本发明采用以下技术方案。
一方面,本发明提供数据库的海量历史数据备份方法,包括:扫描数据库,通过SQL查询语句获得所有数据表的结构、表宽度和表长度;根据所有数据表的结构、表宽度和表长度建立快照列表,快照列表的每一行对应一个数据包的备份任务,所述备份任务具备其对应的备份任务属性;根据备份任务属性确定需要备份的数据包;使用SQL查询语句查询数据库取得需要备份的数据包内容并进行备份。
进一步地,所述备份任务属性包括:任务编号、表名称、表长度、本数据包起始日期时间、本数据包的表记录起始编号、本数据包的容量大小、本数据包备份文件的相对路径、本数据包是否需要备份、本数据包是否需要恢复、本数据包是否备份成功、本数据包是否恢复成功和/或表是否是宽表。
为了解决目前数据库备份都是采用明文格式存储,存在数据安全性的隐患,本技术方案不再是以明文格式储存,进一步地,使用SQL查询语句查询数据库取得需要备份的数据包的内容后按照自定义格式缓存在一个临时内存文件中,采用国密SM2、SM3或SM4对所述临时内存文件中的内容进行加密后以加密文件的形式固化到硬盘上。
进一步地,将每个备份任务再分割成各个颗粒度更细的虚拟数据块,在备份过程中,对所述虚拟数据块进行标记与定义并显示各虚拟数据块在备份过程中的状态。采用可视化的方案,方便用户了解备份与恢复的进度,并可以掌握控制进程,可以按照时间段选择需要备份或需要恢复的数据。
进一步地,在备份某个数据包的过程中,定期测试系统是否繁忙,若系统繁忙则采用涓流模式进行备份;完成该数据包的备份任务后,更新快照列表,将数据包备份成功信息更新到快照列表,并开始进行下一个备份任务。本技术方案采用“涓流模式”避免在系统繁忙时,备份或恢复数据占用大量系统资源,影响数据库服务器正常工作的性能的情况出现,并且通过“线程池”设置线程“休眠/活跃”状态的方式进行模式间的轻松切换;
再进一步地,系统是否繁忙的方法如下:
如果是连接本地数据库,采用cpu使用率、磁盘响应时间、磁盘传输速率和/或内存平均响应时间特征值作为系统是否繁忙的标志,并将这些值写入SQL数据表中,定期刷新这些特征值;
如果是连接非本地数据库,采用shell脚本获取远端物理机的cpu使用率、磁盘传输速率、磁盘响应时间和/或内存平均响应时间特征值,作为系统是否繁忙的标志,并将这些特征值周期性写入远端SQL数据表中,备份程序正常定期从远端数据库中获得这些特征值;
为这些特征值分别设置阀值,只有在所有特征值均在阀值以下范围的时候,才认定系统恢复正常。
进一步地,若正在执行的备份任务中断,则进行系统重启;重启时,扫描快照列表中的所有备份任务,根据备份任务属性过滤掉已经成功备份的数据包,对未成功备份并且待备份的数据包进行备份。本技术方案加入了断点续传”的功能,可以使用户可以计划分多次接续完成数据备份或恢复工作。
第二方面,本发明提供了数据库的海量历史数据恢复方法,包括:选取备份数据的Profile快照列表,所述Profile快照列表为根据通过SQL查询语句获得的所有数据表的结构、表宽度和表长度而建立,快照列表的每一行对应一个数据包的备份任务,所述备份任务具备其对应的备份任务属性;
根据所述备份任务属性选订恢复时间段,按照快照列表中的备份任务依次恢复备份数据。
进一步地,若备份数据是加密文件形式,则先进行预处理解密再执行恢复。
进一步地,在恢复某个数据包的过程中,定期测试系统是否繁忙,若系统繁忙则采用涓流模式进行备份;完成该数据包的恢复务后,更新快照列表,并开始进行下一个备份任务。
本发明所取得的有益技术效果:
对于大容量的历史数据(比如单表的历史记录达上千万条,单表数据容量达到GB甚至TB规模),本发明采用“分而治之”的思想,采取多任务的方式完成,结构清晰,便于实现大容量的历史数据的备份。
大容量的历史数据备份与恢复需要很长时间,在过程中,出现任务中断的情况,本发明可以在重启后,找到任务中断的位置,继续完成任务,不必重头再来;
本发明可以通过监视系统特征值,采用“涓流模式”避免在系统繁忙时,备份或恢复数据占用大量系统资源,影响数据库服务器正常工作的性能的情况出现,并且通过“线程池”设置线程“休眠/活跃”状态的方式进行模式间的轻松切换;
备份的数据不再是以明文格式储存,而是通过采用对称加密数据文件 + 对称加密密押签名+ 非对称算法加密对称密钥的方式,快速加密解密,密钥传输和备份数据的安全性也得到较高的保障,同时能完成数据防伪验证与完整性校验;
在备份与恢复过程中,采用可视化的方案,方便用户了解备份与恢复的进度,并可以掌握控制进程,可以按照时间段选择需要备份或需要恢复的数据,结合“断点续传”的功能,可以使用户可以计划分多次接续完成数据备份或恢复工作。
附图说明
图1是本发明具体实施的数据备份流程图;
图2是本发明具体实施处理加密过程示意图;
图3是本发明具体实施数据恢复流程图。
具体实施方式
以下结合说明书附图和具体实施例对本发明做进一步说明。
实施例1:数据库的海量历史数据备份方法,包括以下步骤:
1.扫描数据库;
2.生成Profile(也就是快照列表)及任务TASK列表(也就是备份任务列表);
3.按照TASK列表依次备份数据;
4.每一个TASK完成后,更新profile的TASK列表,回到步骤3循环。
实施例2:在实施1的基础上,为了避免在系统繁忙时,备份或恢复数据占用大量系统资源,影响数据库服务器正常工作的性能的情况出现,本实施例进一步包括:
备份过程中,如果系统繁忙采用涓流模式,系统不再繁忙时恢复正常模式。
实施例3:在以上实施例的基础上,本实施例为了针对采用现有数据库备份方法如果期间出现任务中断退出的情况,则该任务失败,必须重新开始,不可能继续完成中断的任务,使效率变低的问题,本实施例进一步包括以下步骤:
如果任务中断后重启,先加载Profile,根据未完成的TASK列表继续完成备份任务。
实施例4:在以上实施例的基础上,为了解决目前数据库备份都是采用明文格式存储,存在数据安全性的隐患,本实施例进一步包括以下步骤:备份文件加密后处理。
实施例5:在以上实施例的基础上,为了了解备份与恢复的进度,并可以掌握控制进程,本实施例中整个备份过程可视化,直观显示进度。
以下对具体实施方式的各个步骤进行详细说明。
参照图1,步骤1000,扫描数据库,通过SQL查询语句,获得所有数据表的结构、表宽度和表长度。
表宽度,可以是字段数量(记作N-fields),当其超过一定值(M=100,150,200…)的表为宽表(记作B_Table)。表长度,就是表记录数量(记作N-records)。确定需要备份数据的时间段(backup_interval = stop_time - start_time)。
除此之外,确定Task数据包的记录容量为定值package_cap,一般取值为5W,10W…条记录等;对于宽表的Task数据包的容量为定值,package_cap_wide取值为package_cap的1/5或1/10… 。package_cap与package_cap_wide的取值,主要依据是按照一个package数据容量来划分的,基本上是一个package的数据容量控制在10Mb-50Mb之间的大小范围。
步骤2000,建立Profile 文件(也就是建立快照列表),Profile内容每一行为一个Task任务,其格式如下表所示:
表1、Profile文件中Task任务的格式
序号 | 列内容 | 说明 | 默认值 |
1 | task_id | 任务编号 | / |
2 | table_name | 表名称 | / |
3 | table_records_count | 表长度 | / |
4 | package_start_date_time | 本数据包起始日期时间 | / |
5 | package_limit_start | 本数据包的表记录起始编号 | Invalid |
6 | package_capacity | 本数据包的容量大小 | package_cap / package_cap_wide |
7 | backup_file_path | 本数据包备份文件的相对路径 | / |
8 | will_be_backup | 本数据包是否需要备份 | Y |
9 | will_be_recovery | 本数据包是否需要恢复 | Y |
10 | is_backup_successed | 本数据包是否备份成功 | N |
11 | is_recovery_successed | 本数据包是否恢复成功 | N |
12 | is_wide_table | 表是否是宽表 | N |
每条Task对应一个数据包(package)的备份任务,包含一些Task任务属性。诸如:一个长度为table_records_count的表(table_name)可以连续分割成若干个数据包(package),每个数据包是从该表的第package_limit_start条记录开始,包含package_capacity条数据记录,数据包备份文件保存在相对路径backup_file_path中,数据包起始日期时间为(package_start_date_time) 。除此之外,每条Task记录还包含有多个标志,如:是否需要备份(will_be_backup)默认设置为“Y”,是否需要恢复(will_be_recovery)默认设置为“Y”,其余的是否备份成功(is_backup_successed)、是否恢复成功(is_recovery_successed)、是否为宽表(is_wide_table)等均默认设置为“N”。这些信息包含,每个数据包的数据来源和恢复目标,以及备份过程和恢复过程等信息。
对于带时标字段的数据库表,可根据时间段筛选Task任务,时间段表示起始时间start_time到终止时间stop_time。筛选出的Task记录的will_be_backup字段被设置为“Y”被排除的Task记录中的字段will_be_backup将被设置为“N”。
步骤3000,根据Task列表依次将字段will_be_backup值为“Y”的Task的数据包package备份到指定目录下,备份产出文件名按照如下格式:
table_name@ package_start_date_time#package_limit_start.bakcup
使用SQL查询语句查询数据库,取得Task 任务的数据包package的内容。例如:
select * from table limit start, num ; (Mysql)
select * from table where rowid>a AND rowid<b; (Oracle)
具体实施例中可选地,由上述查询语句获得的所有数据(实际数据不是逻辑数据),按照自定义格式缓存在一个临时内存文件(CacheFile)中,提供给步骤4000后处理加密存储过程使用;
具体实施例中可选地,在备份某个数据包package的过程中,定期测试步骤“3100系统是否繁忙”,如果发现系统繁忙,转入步骤“3110涓流模式”;
完成了一个Task的数据包备份任务后,将转入步骤“3210更新Profile及Task列表”,数据包备份成功信息更新到Profile文件中,并开始进行下一个Task任务;
测试步骤“3200是否发生任务中断”,如果发现有Task任务没有完成,则转入“3220”继续完成剩余的Task任务。
具体实施例中可选地,若所有的Task任务列表都完成后,则整个备份过程初步完成,转入步骤4000后处理密钥加密存储过程。
步骤3100,是一个定期测试步骤,如果是连接本地数据库,可以采用cpu使用率、磁盘响应时间、磁盘传输速率、内存平均响应时间等特征值作为系统是否繁忙的标志,并将这些值写入SQL数据表中,定期刷新这些特征值;如果是连接非本地数据库,可以采用shell脚本获取远端物理机的cpu使用率、磁盘传输速率、磁盘响应时间、内存平均响应时间等特征值,作为系统是否繁忙的标志,并将这些特征值周期性写入远端SQL数据表中,备份程序可以正常定期从远端数据库中获得这些特征值。
为这些特征值分别设置阀值,设计简单逻辑,即任一特征值超越阀值时,均认定系统繁忙;只有在所有特征值均在阀值以下范围的时候,才认定系统恢复正常。
步骤3110,本发明中备份和恢复过程,被设计成多线程模式,操作数据库模块正常模式下采用10-50线程与数据库保持同等数量的连接,组成线程池;当转入“涓流模式”时,限制线程池的可用线程数为正常模式下线程数的1/10,且活跃线程的sleep时间扩大100-1000倍,非活跃线程保持连接即可,等待退出“涓流模式”时,所有线程立即恢复为可用线程。这样可以保证,在模式切换的时候,既可以照顾到数据库系统的负载,也不需要频繁开关与数据库的连接,节约系统资源。
步骤3200,是一个判断是否中断还是顺利完成一个数据包Package备份的步骤。如果顺利完成一个数据包Package备份,则转入步骤“3210更新Profile及Task列表”;如果整个备份任务中断后重启,则转入步骤“3220载入最新Profile”。
步骤3210,正在执行的Task任务顺利完成之后,更新Profile中相应的Task记录,将字段is_backup_successed设置为“Y”,并刷新Profile保存;
步骤3220,若正在执行的Task任务中断,则最新的Profile文件中之前已完成的的Task记录中的字段is_backup_successed的值为“Y”,其余还是“N”。重启时,扫描Profile文件中的所有Task任务,将字段is_backup_successed值为“Y”的Task过滤掉,从第一条字段is_backup_successed值为“N”且字段will_be_backup的值为“Y”的Task记录开始,转入“3000按照最新Task列表”继续完成备份。
步骤4000,后处理加密存储过程,备份文件先以内存文件(CacheFile)形式缓存,为了加强备份数据的安全性,如图2所示,采用国密SM2/SM3/SM4处理后以加密文件(EncodeFiles)形式固化到硬盘上。
后处理加密存储过程,具体过程如下:
1)针对于每个Task任务生成的备份数据TEXT,采用国密SM3杂凑算法(单向加密)计算出特征签名Signature(记作SM3[TEXT]);
2)使用国密SM4分组密码算法生成密钥P,将特征签名加密得到签名秘文Cipher_Sig(记作SM4[SM3[TEXT]]);
3)使用第2)步生成的密钥P 将备份数据加密得到密文Cipher_Txt(记作SM4[TEXT]);
4)将第2)、3)步生成的秘文和密押拼接成加密数据文件Cypher_File(记作“密文Cipher_Txt + 密押Cipher_Sig”),并固化存储;
5)将所有Task任务所生成的加密数据文件,与对应的密钥组成一一对应的密钥列表List(P) ,再使用256位国密SM2椭圆曲线公钥密码算法的公钥将列表加密,生成加密密钥文件SP_File(记作SM2[List(P)])。
以上加密所采用的加密算法,不仅限于使用国密SM2/SM3/SM4,也可以使用其他的单向加密算法(如国密SM3,CRC,MD5等)、对称加密算法(如国密SM4,3DES,AES等 )和非对称加密算法(如国密SM2,RSA,DSA等)。
具体实施例中可选地,所述备份方法包括步骤4100,可视化是指在备份过程中,可以将每个Task任务数据,再分割成小的数据块(blocks),1 block 代表50条,100条,200条……记录。在步骤1000扫描数据库阶段的时候,就做好标记与虚拟数据块的定义。在备份时组织界面实时显示,整个任务划分成若干个Task,每个Task划分成若干个数据块,每个数据块在备份过程中的状态,可以用色块表示,如表2所示,每个色块有四种状态标记:
表2、可视化数据块标记用逻辑状态表
Task是否完成 | 是否当前Task | Block是否完成 | 色块颜色 | Block状态 |
N | N | N | 灰色 | 待机 |
N | Y | N | 黄色 | 准备 |
N | Y | Y | 红色 | 完成 |
Y | N | Y | 绿色 | 封装(Task) |
1)待机状态:数据块所在的Task任务的is_backup_successed标记为“N”,且不是当前Task任务,可以用灰色色块表示;
2)准备状态:数据块所在的Task任务的is_backup_successed标记为“N”,是当前Task任务,当前数据块block尚未从数据库中获取,可以用黄色色块表示;
3)完成状态:数据块所在的Task任务的is_backup_successed标记为“N”,是当前Task任务,当前数据块block已经数据库中获取,可以用红色色块表示;
4)封装状态:数据块所在的Task任务的is_backup_successed标记为“Y”,可以用绿色色块表示;
以上色块配色方法,不仅限于灰/黄/红/绿的配色,也可以是其他配色方案。每个数据块记录“Task是否完成”、“是否当前Task”和“Block是否完成”这三个标记,根据这三个标记的布尔值的组合判定Block状态,并作相应的颜色色块显示。
B、实施例6,与以上实施例提供的数据库的海量历史数据备份方法相对应地,本实施例提供了数据库的海量历史数据恢复方法,数据恢复过程如图2所示,主要包含以下步骤:
1,选取备份Profile文件(Profile文件与上述实施例中相同);
2,选订恢复时间段;
3,按照TASK列表依次恢复数据; 4
4,每一个恢复TASK完成后,更新profile的TASK列表,回到步骤3循环;
实施例7,在实施例6的基础上,为了避免在系统繁忙时,恢复数据占用大量系统资源,影响数据库服务器正常工作的性能的情况出现,本实施例进一步包括:数据恢复过程中,如果系统繁忙采用涓流模式,系统不再繁忙时恢复正常模式。
实施例8,在以上实施例的基础上,本实施例进一步包括:6,如果任务中断后重启,先加载Profile,根据未完成的恢复TASK列表继续完成数据恢复任务;
实施例9,在以上实施例的基础上,本实施例进一步包括:7,整个恢复过程可视化,直观显示进度。
以下对数据库的海量历史数据恢复方法的具体实施步骤做进一步详细说明。如图3所示,海量历史数据恢复方法包括:步骤5000,选取备份profile文件,根据选取的profile文件进行恢复,profile文件的格式如表一所示;
步骤5100,预处理解密过程(可选地)及选取要恢复的时间段,
其中,预处理解密过程,是步骤4000加密过程的逆过程。
1)首先,使用256位国密SM2椭圆曲线公钥密码算法的私钥将加密密钥文件SP_File进行解密,获得所有Task任务所生成的加密数据文件,与对应的密钥组成一一对应的密钥列表List(P);
2)其次,按照固定的格式,将备份任务所生成的加密数据文件Cypher_File[x],分隔成密文Cipher_Txt和密押Cipher_Sig两个部分;
3)再次,使用密钥列表List(P)中的密钥P_x,将上一步获得的密文Cipher_Txt解密,获得译码后的数据文件text,作为每个恢复Task任务的数据源缓存;
4)采用国密SM3杂凑算法(单向加密),计算译码后的数据文件的text的待验证特征签名Signature_test;
5)然后,使用密钥列表List(P)中的密钥P_x,将密押Cipher_Sig解密,获得原始数据文件TEXT的特征签名Signature,将此Signature与上一步所得Signature_test进行比对,进行防伪验证。如果Signature = Signature_test ,即验证成功,本数据文件TEXT解密成功,且没有被遗漏或篡改。
6)回到第2)步循环,依次完成所有Cypher_File的解密和验证工作。
Profile中所有的Task记录,用户可以根据实际需要,设定恢复的时间段(restore_start , restore_stop),挑选需要恢复的数据。被过滤选择出来的Task任务,组成实际需要恢复的Task任务列表TASK_Restore_List备用。
过滤选择过程,根据备份产出文件名的格式:
table_name@ package_start_date_time#package_limit_start.bakcup
其中满足条件 restore_start <package_start_date_time< restore_stop 的Task记录被筛选到TASK_Restore列表中。
同时将Profile中的Task记录的will_be_recovery属性修改,被过滤选择的Task任务的will_be_recovery属性设置为“Y”,其他Task任务的will_be_recovery属性设置为“N”。
步骤6000,根据TASK_Restore列表依次将数据包package从备份文件恢复到指定数据表中。
在恢复某个数据包package的过程中,定期测试步骤“6100系统是否繁忙”,如果发现数据库繁忙,转入步骤“6110涓流模式”;
完成了一个TASK_Restore的数据包package恢复任务后,将转入步骤“6210更新Profile及Task列表”,数据包恢复成功信息更新到Profile文件中,并开始进行下一个TASK_Restore任务;
测试步骤“6200是否发生任务中断”,如果发现有TASK_Restore任务没有完成,则转入“6220”继续完成剩余的TASK_Restore任务。
若所有的TASK_Restore任务列表都完成后,则整个恢复过程完成,转入步骤7000后处理可视化过程。
可选地,所述数据恢复方法还包括:步骤6100,是一个定期测试步骤,采用与步骤3100同样的方式,获得本地或远端系统的cpu使用率、磁盘响应时间、磁盘传输速率、内存平均响应时间等特征值,恢复程序可以正常定期从数据库中获得这些特征值。
为这些特征值分别设置阀值,设计简单逻辑,即任一特征值超越阀值时,均认定系统繁忙;只有在所有特征值均在阀值以下范围的时候,才认定系统恢复正常。
步骤6110,与步骤3110同样,采用线程池控制的方式实现系统繁忙时的“涓流模式”与系统正常时的“涓流退出模式”之间的无缝切换。
步骤6200,是一个判断是否中断还是顺利完成一个数据包Package恢复过程的步骤。如果顺利完成一个数据包Package恢复过程,则转入步骤“6210更新Profile及Task列表”;如果整个备份任务中断后重启,则转入步骤“6220载入最新Profile”。
步骤6210,正在执行的TASK_Restore任务顺利完成之后,更新Profile中相应的Task记录,将字段is_recovery_successed设置为“Y”,并刷新Profile保存;
步骤6220,若正在执行的Task任务中断,则最新的Profile文件中之前已完成的的Task记录中的字段is_recovery_successed的值为“Y”,其余还是“N”。重启时,扫描Profile文件中的所有Task任务,将字段is_recovery_successed值为“Y”的Task过滤掉,从第一条字段is_recovery_successed值为“N”且字段will_be_recovery的值为“Y”的Task记录开始,重新组织最新的TASK_Restore列表,再转入“6000按照最新TASK_Restore列表”继续完成恢复。
可选地,所述数据恢复方法还包括:步骤7000,恢复过程的后处理及可视化:
恢复过程的后处理,需要将Profile中的所有Task任务的is_recovery_successed属性与will_be_recovery属性重置为默认值“N”与“Y”。将Profile恢复到备份过程完成后,且尚未执行任何恢复过程的状态,准备好执行下一个数据恢复过程。
恢复过程可视化,与步骤4100备份过程可视化类似。在恢复过程组织界面实时显示,整个恢复工程划分成若干个Task,每个Task划分成若干个数据块,每个数据块在恢复过程中的状态,可以用色块表示,每个色块有四种状态标记:
1)待机状态:数据块所在的Task任务的is_recovery_successed标记为“N”,且不是当前Task任务,可以用灰色色块表示;
2)准备状态:数据块所在的Task任务的is_recovery_successed标记为“N”,是当前Task任务,当前数据块block尚未写入数据库的相应数据表中时,可以用黄色色块表示;
3)完成状态:数据块所在的Task任务的is_recovery_successed标记为“N”,是当前Task任务,当前数据块block已经写入数据库中,可以用红色色块表示;
4)封装状态:数据块所在的Task任务的is_recovery_successed标记为“Y”,可以用绿色色块表示。
本发明具有以下有益技术效果:
1,备份过程开始时,先扫描数据库,生成Task任务列表并生成Profile,每个Task任务对应一个备份产出文件;
2,每个历史数据表,可以分成若干个Task任务,每个Task任务包含备份与恢复相关属性,可以实现类似“断点续传”一样的“断点续备份”和“断电续恢复”功能;
3,每个Task任务包含有首数据的时标,便于后续根据时间段备份;
4,每个Task任务生成的目标数据文件的文件名,包含有首数据的时标,便于后续根据时间段恢复;
5,在备份与恢复的过程中,通过采集cpu使用率、磁盘响应时间、磁盘传输速率、内存平均响应时间等系统特征值作为系统是否繁忙的标志,并将这些值写入SQL数据表中,定期刷新这些特征值;
6,通过设定不同系统特征值的阀值,并读取数据库保存的多维度系统特征值与阀值相比较,作为全面判定系统是否繁忙的依据;
7,“涓流模式”,在判定系统繁忙的时候,进入“涓流模式”,该模式下,以控制读取或者写入数据的间隔与频率的方式,来控制数据读写速度,降低数据库持续操作对系统资源的消耗,进而减轻服务器负荷,保证服务器健康平稳运行;
8,管理一个多线程的“线程池”,其中每个线程保持一个数据库连接,每个数据库连接不用频繁打开与关闭;
9,“线程池”通过动态设置“休眠”线程与“活动”线程的数量的方式,实现“涓流模式”与“涓流退出模式”的自由切换,快速高效;
10,“断点续备份”,每完成一个备份Task任务,立即更新Profile中的Task任务的is_backup_successed属性,作为“断点续备份”的标记,在中断备份任务后重启时,根据该标记继续未完成的备份Task任务;
11,“断点续恢复”,每完成一个恢复Task任务,立即更新Profile中的Task任务的is_recovery_successed属性,作为“断点续恢复”的标记,在中断恢复任务后重启时,根据该标记继续未完成的恢复Task任务;
12,备份数据采用加密的方式固化存储;
13,每个备份产出文件TEXT (k),采用单向加密算法(如国密SM3,CRC,MD5等算法)生成文件的签名密押Signature(k),(用于解密后的防伪验证 及数据完整性校验);
14,一个Task任务一个密码,每个备份产出文件TEXT (k),采用对称加密算法(如国密SM4、3DES、AES等算法) 生成一个密钥P(k)与之对应进行加密,形成密文Cipher_Txt(k)。这样的好处是,遇到暴力破解了一个密钥P(k)时,仅能破解一个备份文件Cipher_Txt(k)及少量数据;
15,密押也采用上述密钥P(k)加密,附加在密文文件之后固化存储,形成的最终加密文件Cypher_File(k) = Cipher_Txt (k)+ Cipher_Sig(k);
16,所有生成密文Cipher_Txt和密押Cipher_Sig的密钥列表List (P),采用非对称加密算法(如国密SM2,RSA,DSA等算法)加密后固化保存;
(因为对称加密算法速度快,安全性较差,而非对称加密算法速度慢,安全性较好。采用对称加密数据文件 + 非对称算法加密对称密钥的方式,在保证密钥传输的安全性基础上,总体的加密的效率和安全性两个方面都得到较高保障)
17,备份任务及恢复任务可视化,采用类似“迅雷”任务可视化方式,将每个Task任务划分成最基本的数据块Block,每个数据块Block对应一个界面上显示的色块,并用不同的颜色表示不同的状态。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (10)
1.数据库的海量历史数据备份方法,其特征在于,包括:扫描数据库,通过SQL查询语句获得所有数据表的结构、表宽度和表长度;根据所有数据表的结构、表宽度和表长度建立快照列表,快照列表的每一行对应一个数据包的备份任务,所述备份任务具备其对应的备份任务属性;根据备份任务属性确定需要备份的数据包;使用SQL查询语句查询数据库取得需要备份的数据包内容并进行备份。
2.根据权利要求1所述的数据库的海量历史数据备份方法,其特征在于,所述备份任务属性包括:任务编号、表名称、表长度、本数据包起始日期时间、本数据包的表记录起始编号、本数据包的容量大小、本数据包备份文件的相对路径、本数据包是否需要备份、本数据包是否需要恢复、本数据包是否备份成功、本数据包是否恢复成功和/或表是否是宽表。
3.根据权利要求1所述的数据库的海量历史数据备份方法,其特征在于,使用SQL查询语句查询数据库取得需要备份的数据包的内容后按照自定义格式缓存在一个临时内存文件中,采用国密SM2、SM3或SM4对所述临时内存文件中的内容进行加密后以加密文件的形式固化到硬盘上。
4.根据权利要求1所述的数据库的海量历史数据备份方法,其特征在于,将每个备份任务再分割成各个颗粒度更细的虚拟数据块,在备份过程中,对所述虚拟数据块进行标记与定义并显示各虚拟数据块在备份过程中的状态。
5.根据权利要求1所述的数据库的海量历史数据备份方法,其特征在于,在备份某个数据包的过程中,定期测试系统是否繁忙,若系统繁忙则采用涓流模式进行备份;完成该数据包的备份任务后,更新快照列表,将数据包备份成功信息更新到快照列表,并开始进行下一个备份任务。
6.根据权利要求5所述的数据库的海量历史数据备份方法,其特征在于,系统是否繁忙的方法如下:
如果是连接本地数据库,采用cpu使用率、磁盘响应时间、磁盘传输速率和/或内存平均响应时间特征值作为系统是否繁忙的标志,并将这些值写入SQL数据表中,定期刷新这些特征值;
如果是连接非本地数据库,采用shell脚本获取远端物理机的cpu使用率、磁盘传输速率、磁盘响应时间和/或内存平均响应时间特征值,作为系统是否繁忙的标志,并将这些特征值周期性写入远端SQL数据表中,备份程序正常定期从远端数据库中获得这些特征值;
为这些特征值分别设置阀值,只有在所有特征值均在阀值以下范围的时候,才认定系统恢复正常。
7.根据权利要求1所述的数据库的海量历史数据备份方法,其特征在于,若正在执行的备份任务中断,则进行系统重启;重启时,扫描快照列表中的所有备份任务,根据备份任务属性过滤掉已经成功备份的数据包,对未成功备份并且待备份的数据包进行备份。
8.数据库的海量历史数据恢复方法,其特征在于,包括:
选取备份数据的Profile快照列表,所述Profile快照列表为根据通过SQL查询语句获得的所有数据表的结构、表宽度和表长度而建立,快照列表的每一行对应一个数据包的备份任务,所述备份任务具备其对应的备份任务属性;
根据所述备份任务属性选订恢复时间段,按照快照列表中的备份任务依次恢复备份数据。
9.根据权利要求8所述的数据库的海量历史数据恢复方法,其特征在于,若备份数据是加密文件形式,则先进行预处理解密再执行恢复。
10.根据权利要求8所述的数据库的海量历史数据恢复方法,其特征在于,在恢复某个数据包的过程中,定期测试系统是否繁忙,若系统繁忙则采用涓流模式进行备份;完成该数据包的恢复务后,更新快照列表,并开始进行下一个备份任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110805219.9A CN113641694B (zh) | 2021-07-16 | 2021-07-16 | 数据库的海量历史数据备份方法和恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110805219.9A CN113641694B (zh) | 2021-07-16 | 2021-07-16 | 数据库的海量历史数据备份方法和恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113641694A true CN113641694A (zh) | 2021-11-12 |
CN113641694B CN113641694B (zh) | 2023-12-22 |
Family
ID=78417534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110805219.9A Active CN113641694B (zh) | 2021-07-16 | 2021-07-16 | 数据库的海量历史数据备份方法和恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113641694B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114491652A (zh) * | 2022-04-19 | 2022-05-13 | 广州市保伦电子有限公司 | 一种数据库数据加密备份及解密还原的方法及处理终端 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050131853A1 (en) * | 2003-12-11 | 2005-06-16 | Sybase, Inc. | Database System Providing Self-Tuned Parallel Database Recovery |
US20070100913A1 (en) * | 2005-10-12 | 2007-05-03 | Sumner Gary S | Method and system for data backup |
US20120179655A1 (en) * | 2011-01-07 | 2012-07-12 | Beatty Louis J | Method and system of performing incremental sql server database backups |
CN103595730A (zh) * | 2013-11-28 | 2014-02-19 | 中国科学院信息工程研究所 | 一种密文云存储方法和系统 |
CN104166600A (zh) * | 2014-08-01 | 2014-11-26 | 腾讯科技(深圳)有限公司 | 数据备份与恢复方法及装置 |
US20160246687A1 (en) * | 2015-02-25 | 2016-08-25 | Lexmark International Technology Sarl | System and Methods of Backing Up and Restoring Database Objects |
US9535932B1 (en) * | 2012-06-29 | 2017-01-03 | ParAccel, LLC | Backup and restore of databases |
CN109284205A (zh) * | 2018-09-21 | 2019-01-29 | 平安科技(深圳)有限公司 | 快照备份方法、装置、计算机设备及存储介质 |
CN109542686A (zh) * | 2018-11-22 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种数据备份精简存储方法及系统 |
CN110928863A (zh) * | 2019-11-20 | 2020-03-27 | 无锡识凌科技有限公司 | 一种应用于数据清洗工具的任务断点续传的方法 |
KR20210013977A (ko) * | 2019-07-29 | 2021-02-08 | (주)지엘정보기술 | 초고속 대용량 백업 시스템 및 그 백업 방법 |
CN113032804A (zh) * | 2021-03-22 | 2021-06-25 | 北京爱思考科技有限公司 | 一种数据安全管理方法、装置、设备、系统和存储介质 |
-
2021
- 2021-07-16 CN CN202110805219.9A patent/CN113641694B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050131853A1 (en) * | 2003-12-11 | 2005-06-16 | Sybase, Inc. | Database System Providing Self-Tuned Parallel Database Recovery |
US20070100913A1 (en) * | 2005-10-12 | 2007-05-03 | Sumner Gary S | Method and system for data backup |
US20120179655A1 (en) * | 2011-01-07 | 2012-07-12 | Beatty Louis J | Method and system of performing incremental sql server database backups |
US9535932B1 (en) * | 2012-06-29 | 2017-01-03 | ParAccel, LLC | Backup and restore of databases |
CN103595730A (zh) * | 2013-11-28 | 2014-02-19 | 中国科学院信息工程研究所 | 一种密文云存储方法和系统 |
CN104166600A (zh) * | 2014-08-01 | 2014-11-26 | 腾讯科技(深圳)有限公司 | 数据备份与恢复方法及装置 |
US20160246687A1 (en) * | 2015-02-25 | 2016-08-25 | Lexmark International Technology Sarl | System and Methods of Backing Up and Restoring Database Objects |
CN109284205A (zh) * | 2018-09-21 | 2019-01-29 | 平安科技(深圳)有限公司 | 快照备份方法、装置、计算机设备及存储介质 |
CN109542686A (zh) * | 2018-11-22 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种数据备份精简存储方法及系统 |
KR20210013977A (ko) * | 2019-07-29 | 2021-02-08 | (주)지엘정보기술 | 초고속 대용량 백업 시스템 및 그 백업 방법 |
CN110928863A (zh) * | 2019-11-20 | 2020-03-27 | 无锡识凌科技有限公司 | 一种应用于数据清洗工具的任务断点续传的方法 |
CN113032804A (zh) * | 2021-03-22 | 2021-06-25 | 北京爱思考科技有限公司 | 一种数据安全管理方法、装置、设备、系统和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114491652A (zh) * | 2022-04-19 | 2022-05-13 | 广州市保伦电子有限公司 | 一种数据库数据加密备份及解密还原的方法及处理终端 |
Also Published As
Publication number | Publication date |
---|---|
CN113641694B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11139959B2 (en) | Stream ciphers for digital storage encryption | |
US9548866B2 (en) | Deletion of content in digital storage systems | |
CN101917403B (zh) | 一种用于密文存储的分布式密钥管理方法 | |
JP2003015912A (ja) | メッセージ・ロギングの細分制御のためのシステム及び方法 | |
KR101047213B1 (ko) | 암호화 장치, 암호화 방법 및 컴퓨터 판독가능한 기록 매체 | |
DE112011105678T5 (de) | Entsperren eines Speichergeräts | |
US20140129848A1 (en) | Method and Apparatus for Writing and Reading Hard Disk Data | |
CN101587479A (zh) | 面向数据库管理系统内核的数据加解密系统及其方法 | |
WO2021098293A1 (zh) | 一种数据库的安全保护方法及装置 | |
CN106682521B (zh) | 基于驱动层的文件透明加解密系统及方法 | |
CN110704858A (zh) | 一种分布式环境下数据安全存储方法以及系统 | |
TW201738801A (zh) | 資料庫中密文資料換密失敗的處理方法和裝置 | |
CN107066346A (zh) | 一种数据备份方法、数据恢复方法及装置 | |
CN111222152B (zh) | 一种数据写入方法、装置、设备及存储介质 | |
CN113641694B (zh) | 数据库的海量历史数据备份方法和恢复方法 | |
WO2024045407A1 (zh) | 虚拟磁盘安全存储方法 | |
US20090282055A1 (en) | Database unload/reload of partitioned tables | |
US20230325524A1 (en) | Systems and methods for end-to end-encryption with encrypted multi-maps | |
US20230315897A1 (en) | Systems and methods for end-to end-encryption with encrypted multi-maps | |
US8694796B2 (en) | Secure data deletion in a database | |
CN112463460B (zh) | 一种基于纠删码的小块数据恢复方法及系统 | |
CN109240804A (zh) | 虚拟机的磁盘资源的管理方法和装置 | |
WO2011120335A1 (zh) | 数据操作的方法、装置及计算机 | |
JP2004199229A (ja) | 記憶装置に記憶されたデータを解読不能にする方法及びコンピュータプログラム。 | |
KR101330072B1 (ko) | 데이터베이스 데이터 재저장 방법 및 시스템 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |