用于基于区块链的备份和恢复的系统和方法与流程

文档序号:30860546发布日期:2022-07-23 08:00阅读:422来源:国知局
1.本发明涉及数据备份和恢复,并且更特别地涉及基于区块链技术的实时数据备份和恢复。
背景技术
::2.区块链是被分组为区块的记录的列表,使用加密技术将这些区块链接在一起。使用区块链系统借助于集体参与以及参与者之间的共识(consensus)来维护可靠的交易记录。区块链可以被理解为由被称为节点的多个联网设备共同维护的分布式账本技术(distributedledgertechnology)。因此,区块链可以被认为是分布式存储系统。3.利用数据库备份和恢复处理的常规存储系统通常需要对冗余硬件和相关联的软件进行大量投资。此外,实际的备份和恢复周期在被执行时通常可能会相当耗费人力。因此,在企业环境中建立能够对数据进行实时备份和恢复的可靠系统通常是昂贵的。4.对于实时数据备份,利用现有技术的常规系统通常需要使用强大的备份服务器。然而,这样强大的服务器的利用率通常较低,这意味着对已经获取的计算资源的巨大浪费。5.如果对备份服务器中的备份数据进行了更改,则当系统恢复时,生产数据库中的数据将会不正确。因此,需要满足各种组织的需求的可靠、安全、通用且不昂贵的备份系统。6.减轻与备份和恢复操作相关联的问题的常规方式之一是使用增量备份。在增量备份期间,利用交易日志对自从进行上次备份以来所做的更改进行标识,并且在下一增量备份过程中,将仅备份与在前一备份操作中无法解释的更改相关联的内容。7.由于交易日志仅记录在前一数据库备份或交易日志记录备份之后对数据库所做的更改,因此增量备份仅记录在备份操作之间的有限时间段期间对数据库所做的更改。因此,在进行交易记录备份或初始增量备份之前,需要完整的数据库备份。8.存在与之前提及的方法的可靠性、安全性和一致性有关的若干问题。9.就可靠性而言,存在备份系统的中心节点会故障的可能性。如果存在与备份交易日志相关联的中心节点或机器的问题,则可能会发生数据丢失或损坏,并且整个备份处理可能会失败。10.关于安全性和一致性,对交易日志的任何未经授权的更改都会不可避免地导致恢复的数据不可信。11.因此,需要改进的系统和方法,以减轻与利用常规硬件设备和技术的备份和恢复系统相关联的至少一些之前提及的问题。技术实现要素:12.根据本发明的一个方面,提供了一种基于区块链的备份和恢复系统和方法。本发明的实施方式包括安全、可靠并且能够实时操作的基于区块链的备份和恢复系统。13.根据本发明的一个方面,提供了一种数据备份和恢复系统,用于与数据存储器和包括多个节点的区块链一起使用,该系统包括:包括一个或更多个处理器和存储器的服务器;在服务器上执行的存储适配层,一个或更多个处理器与区块链和数据存储器进行数据通信;其中,存储适配层将与存储在数据存储器内的数据的更改的子集相关联的日志存储到区块链中。14.根据本发明的另一方面,该系统还可以包括与数据存储器和区块链进行数据通信的恢复适配层,恢复适配层被配置成从区块链中检索存储的数据,并且将与检索到的存储数据相对应的数据存储到数据存储器中。15.根据本发明的另一方面,提供了一种数据备份和恢复的方法。该方法包括:由用户在日志中跟踪在数据存储器处存储的数据的更改的子集;将用户映射到区块链上的帐户;使用帐户的公钥对日志进行加密;以及将经加密的数据存储至缓存;以及将经加密的数据存储至区块链。16.该方法还可以包括:从缓存中检索数据;使用区块链适配器触发区块链中的区块链合约以用于数据共识和全局验证;将新数据更改记录在所述多个节点之一中;在区块链中执行共识投票;其中,当所述新数据更改与区块链中的历史更改记录冲突时,共识投票失败;以及,否则将所述新数据更改存储在区块链中的区块中。17.根据本发明的另一方面,提供了一种实时数据复制系统,该系统基于包括:区块链;目标数据存储器;计算设备。该计算设备包括:区块链监听模块,其适于监听区块链上的所有区块;交易过滤器,其对与数据复制相关的区块上的交易进行过滤;事件生成器,其用于将经过滤的交易的内容转换成用于在目标数据存储器上执行的数据操作,交易内容包括修改前内容、修改后内容和操作类型;以及数据恢复模块,其用于执行数据操作,使得在执行之后,目标数据存储器被修改以与区块链相对应。18.根据本发明的另一方面,提供了一种用于区块链的数据备份和恢复系统,该系统包括:包括数据适配层的服务器;和数据存储系统;其中,数据适配层连接至区块链,数据存储系统包括具有一个或更多个存储设备的分布式数据存储器,并且数据适配层适于促进数据存储系统与区块链之间的通信。数据适配层包括:数据更改监测模块,其监测数据存储系统中的数据更改记录;数据转换模块,其适于将监测到的更改记录的格式转换成标准数据更改记录;区块链合约,其用于将数据记录到区块链。附图说明19.附图仅通过示例的方式示出本发明的实施方式,在附图中,20.图1是本发明的示例性实施方式的利用基于区块链的备份和恢复操作的系统的示意性框图;21.图2是用于使用图1的系统来备份数据的示例性过程的流程图;22.图3是总结本发明的示例性实施方式中的实时数据同步过程的流程图;以及23.图4是用于使用图1的系统来恢复数据的示例性过程的流程图。具体实施方式24.本公开内容描述了基于区块链的备份和恢复系统和方法。本发明的实施方式包括基于区块链的备份和恢复系统,该系统以满足针对安全性、可靠性、可信度和/或实时操作的一个或更多个要求的方式运行。25.下面提供本发明的各种实施方式的描述。在本公开内容中,当在本文中结合术语“包括”使用时,词“一(a)”或“一个(an)”的使用可以是指“一个”,但是它也与“一个或更多个”、“至少一个”和“一个或多于一个”的含义一致。以单数形式表达的任何元素也包含其复数形式。以复数形式表达的任何元素也包含其单数形式。如本文中所使用的,术语“多个”是指多于一个,例如,两个或更多个、三个或更多个、四个或更多个等。诸如“顶部”、“底部”、“向上”、“向下”、“竖直地”和“横向地”的方向性术语仅用于提供相对参考的目的,并且不旨在对任何物品在使用期间如何定位或者在组件中或相对于环境如何安装提出任何限制。26.术语“包括(comprising)”、“具有”、“包括(including)”和“包含”及其语法变型是包括性的或开放式的,并且不排除附加的、未列举的元素和/或方法步骤。当在本文中结合组合物、用途或方法使用时,术语“基本上由……组成”表示可以存在附加的元素、方法步骤或者附加的元素和方法步骤两者,但是这些附加物不会实质上影响所列举的组合物、方法或用途起作用的方式。当在本文中结合组合物、用途或方法使用时,术语“由……组成”排除附加的元素和/或方法步骤的存在。[0027]“区块链”是一种记录计算设备的公共或私有的对等式网络中的交易的防篡改的共享数字账本。账本保持为增长的加密哈希链块的连续链。[0028]区块链环境中的“节点”是区块链网络上的设备。该设备通常是具有处理器的计算设备,该处理器与其上储存有处理器可读指令的处理器可读介质互连,该处理器可读介质包括存储器。[0029]术语“第一”、“第二”、“第三”等仅用于描述性目的,并且不能被解释为指示或暗示相对重要性。[0030]在本发明的描述中,还应当注意,除非另有明确定义和限制,否则术语“安装”、“链接”和“连接”应当在广义上解释。例如,可以是固定连接,或组装式连接,或一体式连接;硬连线或软连线;可以直接连接,或通过中介间接连接。对于技术人员,可以按照上下文理解本发明中上述术语的具体意思。[0031]在示出本发明的实施方式的附图中,相同或相似的附图标记对应于相同或相似的部分。在本发明的说明书中,应当注意,“多个”的意思是指两个或更多个,除非另有说明;术语“上”、“下”、“左”、“右”、“内部”、“外部”、“前端”、“后端”、“头”、“尾”的方向或位置,附图中所示出的方向或位置关系仅是为了方便描述本发明和简化描述,而不是指示或暗示指示的设备或元件必须具有特定的方向并且在特定的方向上构造和操作,并且因此不能用作对本发明的限制。[0032]i.系统概述[0033]图1示意性描绘了本发明的示例性实施方式的利用基于区块链的备份和恢复操作的系统的框图。该系统包括数据源101、日志跟踪器模块102、事件过滤器103、事件存储器104、智能合约写入器105、区块链106、智能合约107、节点108、恢复管理模块109、目标数据存储器110、数据恢复模块111、事件生成器112、交易过滤器113和区块传输器114。[0034]存储适配层115可以被定义为包括日志跟踪器模块102、事件过滤器103、事件存储器104和合约写入器105。[0035]恢复适配层116可以包括数据恢复模块111、事件生成器112、交易过滤器113和区块传输器114。[0036]每当数据源101中的数据发生更改时,数据源101生成更改日志。数据源101可以是关系数据库管理系统(rdbms),例如oracletm数据库、mysqltm、microsoftsqlservertm和ibmdb2tm数据库。可以理解,mysqltm数据库生成二进制日志,而oracletm数据库生成重做日志。[0037]日志跟踪器模块102基于日志来存储数据更改。对于不同的数据源,使用不同的数据跟踪器插件来捕获数据。例如,在数据库系统中,一个数据跟踪器可以模拟复制客户端并且连接至主数据库,并且在交易成功时,主数据库可以将交易日志发送至日志跟踪器。在捕获数据源101中的日志之后,数据跟踪器模块102生成内部结构或格式来存储数据更改。[0038]事件过滤器103基于配置设置来过滤数据。并非所有数据都需要备份到区块链。事件过滤器103因此选择与预定义条件或选择标准相匹配的数据用于备份或恢复以及相关处理。[0039]事件存储器104临时存储事件。事件存储器104将区块链与数据源之间的速度相匹配。如果数据更改的速度快于区块链写入速度,则数据会临时存储在缓存或消息队列中并且等待进一步的处理。因此,缓存或消息队列有助于将数据源中的更改的数据速率与写入区块链的数据速率相匹配。在这种情况下,即使系统中断,捕获的数据更改也不会丢失,并且可以在系统恢复时继续处理。[0040]智能合约写入器105对更改事件进行加密,并且触发区块链中的合约。它也是用于对不同的区块链进行匹配的插件。[0041]区块链106部署在多个站点中,并且生成用于达成共识的网络。在该示例性实施方式中,仅存储交易,并且因此几乎所有的区块链都可以被支持。[0042]智能合约107是在区块链106上运行的智能合约。智能合约107将更改后的数据作为输入,验证提交了该更改后的数据的帐户,并且检查该数据与特定规则和格式的匹配。在大多数节点达成共识后,数据作为交易存储在区块中。[0043]节点108是区块链106上的另一节点,在该另一节点处,包含交易的区块被同步并且可以被提取。[0044]恢复管理模块109管理数据恢复处理。恢复管理模块109将恢复控制成精确的数据快照或实时恢复以与源数据同步。[0045]目标数据存储器110是可以与数据源101中使用的类型相同或不同的数据存储器。例如,数据源101可以是oracletm数据库,而数据存储器110可以是mongodbtm。如果选择相同数据类型的数据存储器,则给定节点node-n上的模块也可以在node-1中应用,以在原始数据源101崩溃的情况下将数据恢复到数据源101。[0046]该实施方式中的数据恢复模块111包括插件以与目标数据库相匹配。在所描绘的实施方式中,数据恢复模块111将通用javascript对象表示法(json)数据转换成特定的数据库操作。例如,对于关系数据库,数据恢复模块111将操作转换成sql命令,而对于nosql数据库,数据恢复模块111使用另一种执行格式。[0047]事件生成器112用于生成事件数据。在过滤出交易之后,由于数据是加密的,因此需要对事件进行解密以获得更改后的数据,并且将更改后的数据转换为json格式。[0048]交易过滤器113过滤出备份和恢复操作所需的交易数据。区块可以包含多种交易,并且针对数据备份/恢复交易对适当的子集进行过滤。在从区块中提取交易后,还需要过滤出基于恢复方兴趣的事件。例如,一些目标节点只对特定表的更改感兴趣,而其他节点可能具有不同的兴趣。[0049]区块跟踪器114捕获区块链106中的目标区块。对于实时同步,跟踪器114从当前同步的区块开始,并且以链中的最新区块结束。[0050]ii.备份过程[0051]图2描绘了用于使用本发明的示例性实施方式的系统(例如图1所示的系统)来备份数据的示例性过程200的流程图。下面描述的过程200的每个步骤可以由系统100执行,该系统100包括一个或更多个服务器计算设备上的一个或更多个处理器,一个或更多个处理器连接至存储处理器可执行指令的存储器,该处理器可执行指令在被执行时使得处理器执行下面列举的步骤中的一个或更多个步骤。[0052]在步骤201处,在其中数据被更改的数据库中发生交易。与运行数据库相关联的处理器之一记录更改后的数据,并且以二进制日志或重做日志的形式生成日志来记录该更改。[0053]在步骤202处,备份服务器模拟数据库复制客户端,并且连接至数据库。数据库将更改日志复制到备份服务器。[0054]在步骤203处,监测器监督日志上的更改。[0055]在步骤204处,如果日志处于原始模式,则日志通常包含“之前”数据、“之后”数据和更改类型(“插入”、“删除”或“更新”)。[0056]在步骤205处,由于资源有限,并且并非所有数据都可能需要被备份,因此用户对哪些数据库更改或表格更改或列更改或行更改应当备份至区块链106进行配置。在从日志中提取数据后,应用配置的过滤器过滤出不需要的数据。[0057]在步骤206处,由于不同数据源中原始数据格式可能不同,因此使用适配器将数据格式转换为期望格式(例如,json格式)。示例性json格式可以如下所示:“[0058]{operator:“oliver”,“source-db”:“dbl”,“table”:“salary”,“operation”:“insert”,“before”:[{“id”:l,“name”:“oliver”,“salary”:“1500.00”},{“id”:2,“name”:“frank”,“salary”:“2000.00”}],“after”:[{“id”:1,“name”:“oliver”,“salary”:“1510.00”},{“id”:2,“name”:“frank”,“salary”:“2010.00”}]}[0059]可以理解,这不记录原始sql命令,而是仅记录数据的更改。[0060]在步骤207处,json事件被放入消息队列中。由于日志生成的速度可能会随着调用区块链合约的速度而波动,因此消息队列充当缓存来缓冲更改后的数据。[0061]在步骤208处,消息队列临时存储json数据,并且在系统崩溃的情况下,未保存的数据不会丢失。当系统从崩溃中恢复时,它将从中断点继续运行。[0062]在步骤209处,从消息队列中检索事件。合约写入器从消息队列中检索json数据。如果存在多组数据,则智能合约写入器检索它们,并且将它们合并到一个json记录中。[0063]在步骤210处,需要帐户来操作区块链。利用日志,我们可以提取操作数据的数据库用户,并且将该用户映射到配置文件中的区块链帐户。[0064]在步骤211处,数据被加密,以防止第三方读取数据库中的敏感信息。使用帐户的公钥对json数据进行加密。[0065]在步骤212处,在区块链106中调用智能合约。输入是经加密的json数据。[0066]在步骤213处,智能合约生成自动增加的事件标识符(id)。在区块链中,生成区块需要时间。在该时间段期间,存储多个json记录。在一个区块中,不保证记录的交易的顺序。智能合约针对每个json记录生成自动增加的顺序id,以对同一区块内的顺序进行标识。[0067]在步骤214处,在区块链中的大多数节点上执行智能合约以达成共识。智能合约对帐户以及json数据的正确性进行验证。如果大多数节点投票结果相同,则智能合约被成功执行。[0068]在步骤215处,在成功调用智能合约后,json数据被记录为区块中的智能合约输入。[0069]在步骤216处,所生成的区块被再次投票以在生效前在区块链中达成共识。[0070]iii.实时数据同步过程[0071]图3描绘了总结本发明的示例性实施方式中的实时数据同步处理的流程图。在所描绘的实施方式中,使用处理300将更改后的数据实时恢复到另一节点,下面列举了处理300的步骤。下面描述的过程300的每个步骤可以由系统100执行,系统100包括一个或更多个服务器计算设备上的一个或更多个处理器,一个或更多个处理器连接至存储处理器可执行指令的存储器,处理器可执行指令在被执行时使处理器执行下面列举的一个或更多个步骤。[0072]在步骤301处,区块链106生成包含加密后的json数据的新区块。[0073]在步骤302处,获取当前块高度或将当前块高度指定为目标区块,并且获取同步的区块或将同步的区块指定为起始区块。[0074]在步骤303处,该处理监测链中的区块,并且从起始区块到目标区块检索区块信息。[0075]在步骤304处,该处理在每个区块中提取所有交易。[0076]在步骤305处,应用过滤器。由于区块链上可能还运行着其他服务,因此该步骤会过滤出由备份/恢复合约生成的交易。[0077]在步骤306处,该处理用帐户的私钥对交易进行解密并且检索明文json事件记录。由于区块链106可供所有节点查看,因此这防止了未经授权的用户检索数据存储器中的敏感数据。只有经授权的帐户才能访问数据。[0078]在步骤307处,该处理基于由智能合约生成的唯一id对json事件进行排序。如果同一区块中存在多个json事件,则区块存储的顺序可能与事件的顺序不同。[0079]在步骤308处,应用另一过滤器。由于恢复的目标端可能并非对数据源中的所有更改都感兴趣,因此该处理仅过滤出目标端感兴趣的数据。[0080]在步骤309处,该处理使用插件将json数据转换为数据执行命令。对于不同的目标数据存储器,它可以使用不同的命令来应用更改。[0081]在步骤310处,该处理针对不同数据库操作来检查json数据类型。[0082]在步骤311处,“插入”操作使得使用“之后”数据部分来将其插入到目标存储器中。[0083]在步骤312处,“更新”操作使得使用json中的“之后”数据部分来更新存储器中的值。[0084]在步骤313处,“删除”操作使得使用json中的“之前”数据部分来在目标存储器中找到匹配的记录并且将其移除。[0085]在步骤314处,针对ddl(数据定义语言)操作,根据json记录中的定义来更改目标数据结构。[0086]在步骤315处,在当前区块完成处理后,处理进行至链中的下一区块,直至到达最新的区块。然后,处理进行到步骤303以开始处理新的区块。[0087]iv.恢复过程[0088]图4是用于使用图1的备份和恢复系统来恢复数据的示例性过程的流程图。下面描述的过程400的每个步骤可以由系统100执行,该系统100包括一个或更多个服务器计算设备上的一个或更多个处理器,一个或更多个处理器连接至存储处理器可执行指令的存储器,该处理器可执行指令在被执行时使得处理器执行下面列举的步骤中的一个或更多个步骤。[0089]在一种情况下,目标数据存储器已与区块10,000同步。该处理将目标存储器状态恢复到区块8,000。该处理将区块链中的所有操作从区块10,000提取到区块8,000,并且以相反的顺序恢复数据更改,这称为回滚。[0090]在另一种情况下,目标存储器在区块8,000中,并且需要将状态移动至区块10,000状态。该处理将区块链中的操作从区块8,000提取到区块10,000,并且按顺序应用更改,这被称为前滚。[0091]在这两种情况下,应用于目标数据存储器的操作不同。[0092]对于回滚操作,如果操作为“插入”,则首先对与“之后”值匹配的数据应用“删除”;对于“删除”操作,利用“之前”值来应用“插入”。[0093]对于前滚操作,操作保持与json中定义的相同。[0094]借助图4中的流程图描述了示例性处理400,如下所述。[0095]在步骤401处,区块链按顺序包含更改日志。[0096]在步骤402处,该处理获取本地数据存储器上的当前同步的区块高度。[0097]在步骤403处,该处理利用目标区块高度来检查当前高度。如果相同,则表示已经达到目标状态,并且可以退出。如果不相同,则该处理继续。[0098]在步骤404处,该处理监测链中的区块并且检索区块信息。[0099]在步骤405处,该处理提取区块中的交易。[0100]在步骤406处,该处理过滤出由备份/恢复智能合约生成的交易。[0101]在步骤407处,该处理利用帐户的私钥对区块中的交易进行解密。[0102]在步骤408处,如果多个事件发生在同一区块中,则该处理检索由智能合约生成的唯一id,并且使用该id进行排序。如果需要回滚,该处理使用反向排序,否则使用正向排序。[0103]在步骤409处,由于目标存储器可能包含比请求所感兴趣的数据更多的数据,因此该处理再次应用过滤器,以仅检索目标存储器感兴趣的数据。[0104]在步骤410处,该处理基于不同的数据存储器类型将json记录转换为数据执行命令。例如,将关系数据库转换成sql命令,以及将mongodb/redis转换成mongo或redis命令。[0105]在步骤411处,如果目标区块大于当前区块,则处理进行前滚,否则处理进行回滚。该处理检查json中数据更改操作的类型。[0106]在步骤412处,在回滚模式下,如果操作为“插入”,则该处理针对与“之后”部分相匹配的数据来向目标存储器应用“删除”动作。[0107]在步骤413处,在回滚模式下,为了更新,该处理利用“之前”数据部分将数据更改回去。[0108]在步骤414处,在回滚模式下,如果操作为“删除”,则处理利用json中的“之前”值应用“插入”动作。[0109]在步骤415处,如果数据结构已经更改,则该处理将数据结构更改回去。[0110]在步骤416处,在前滚模式下,该处理检查数据更改操作。[0111]在步骤417处,在前滚模式下,该处理利用json中的“之后”值来应用“插入”。[0112]在步骤418处,在前滚模式下,该处理利用json中的“之后”值来应用“更新”。[0113]在步骤419处,在前滚模式下,对与“之前”值匹配的数据应用“删除”。[0114]在步骤420处,对于ddl,该处理更改json中定义的结构。[0115]在步骤421处,该处理获取链中的下一区块。[0116]在仅通过示例的方式如此描述了本发明的实施方式的情况下,应理解,由所附权利要求限定的本发明不受上述示例性实施方式的描述中阐述的特定细节的限制,因为在不脱离权利要求的范围的情况下,可以有许多变型和置换。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1