CN115794483A - 一种基于区块链的数据备份方法及装置 - Google Patents
一种基于区块链的数据备份方法及装置 Download PDFInfo
- Publication number
- CN115794483A CN115794483A CN202211352483.2A CN202211352483A CN115794483A CN 115794483 A CN115794483 A CN 115794483A CN 202211352483 A CN202211352483 A CN 202211352483A CN 115794483 A CN115794483 A CN 115794483A
- Authority
- CN
- China
- Prior art keywords
- data
- backed
- block
- transaction number
- chain
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000011084 recovery Methods 0.000 claims description 68
- 230000008569 process Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书一个或多个实施例提供一种基于区块链的数据备份方法及装置。该方法可以包括:从区块链系统处获取区块链数据;所述区块链数据包括:区块数据,以及添加有事务号的状态数据;其中,所述状态数据的事务号用于表征所述状态数据基于已执行交易而发生变更的次数;将获取到的区块链数据备份至链下存储空间;其中,所述事务号在节点数据恢复时,用于使恢复得到的区块数据和状态数据保持同步。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的数据备份方法及装置。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中心化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
鉴于区块链技术存在上述优势,越来越多的数据,如个人信息、网络资源等被存储至区块链系统。而在区块链系统中,可以将维护的数据划分为区块数据和状态数据。其中,区块数据为区块链系统接收到的数据,多以交易的形式维护于区块链结构中,状态数据则为基于区块数据而发生变更的数据。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于区块链的数据备份方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种基于区块链的数据备份方法,包括:
从区块链系统处获取区块链数据;所述区块链数据包括:区块数据,以及添加有事务号的状态数据;其中,所述状态数据的事务号用于表征所述状态数据基于已执行交易而发生变更的次数;
将获取到的区块链数据备份至链下存储空间;其中,所述事务号在节点数据恢复时,用于使恢复得到的区块数据和状态数据保持同步。
根据本说明书一个或多个实施例的第二方面,提出了一种基于区块链的数据恢复方法,包括:
从链下存储空间获取区块链数据;所述区块链数据包括:已备份区块数据,添加有事务号的已备份状态数据;其中,所述事务号用于表征所述已备份状态数据基于已执行交易而发生变更的次数;
根据所述事务号对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
根据本说明书一个或多个实施例的第三方面,提出了一种基于区块链的数据备份装置,包括:
获取单元,从区块链系统处获取区块链数据;所述区块链数据包括:区块数据,以及添加有事务号的状态数据;其中,所述状态数据的事务号用于表征所述状态数据基于已执行交易而发生变更的次数;
备份单元,将获取到的区块链数据备份至链下存储空间;其中,所述事务号在节点数据恢复时,用于使恢复得到的区块数据和状态数据保持同步。
根据本说明书一个或多个实施例的第四方面,提出了一种基于区块链的数据恢复装置,包括:
获取单元,从链下存储空间获取区块链数据;所述区块链数据包括:已备份区块数据,添加有事务号的已备份状态数据;其中,所述事务号用于表征所述已备份状态数据基于已执行交易而发生变更的次数;
恢复单元,根据所述事务号对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面中任一项所述的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面中任一项所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种基于区块链的数据备份方法的流程图。
图2是一示例性实施例提供的一种基于区块链的数据恢复方法的流程图。
图3是一示例性实施例提供的一种基于区块链的数据备份方法的交互图。
图4是一示例性实施例提供的一种基于区块链的数据恢复方法的交互图。
图5是一示例性实施例提供的一种设备的结构示意图。
图6是一示例性实施例提供的一种基于区块链的数据备份装置的框图。
图7是一示例性实施例提供的一种基于区块链的数据恢复装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
鉴于区块链技术具有去中心化、不可篡改等特征,越来越多的用户选择将数据存证至区块链系统,以保证数据的安全性。区块链系统中维护的数据可以包括区块数据和状态数据,其中,区块数据多指:打包成区块的交易数据;而状态数据则多指:用于记录交易执行结果,会随交易执行不断更新的数据。
区块链节点在实际运行过程中,难免出现运行故障等问题,进而出现数据丢失、缺损等情况。为此,相关技术提出了对区块链系统中维护的数据进行备份的技术方案,以便区块链系统中的节点在出现故障时,可以基于备份的数据恢复节点中缺损的数据。
值得注意的是,为保证节点的正常运行,通常需要保证节点中恢复的区块数据与状态数据是同步的。应当理解的是,由于区块数据本质上为打包成区块的交易,而状态数据则记录交易的执行结果,换言之,状态数据基于区块数据而发生变更。在该前提下,所谓区块数据与状态数据同步指的是:保证节点中记录的状态数据恰为基于当前维护的区块数据而得到,举例而言,若节点中维护的区块数据包含交易1、2、3,那么,该节点中记录的状态数据应当为执行交易1、2、3后得到的执行结果,此时,便可以称作该节点中的区块数据和状态数据同步,或者说,保证了区块数据和状态数据的一致性;与之相反的是,若节点中记录的状态数据为执行交易1、2后得到的执行结果,则证明该节点中的状态数据和区块数据发生了错位,该情况便可称作该节点中的区块数据和状态数据未同步,或者说未保持一致性,若此时继续运行节点,将会导致后续继续处理区块数据,如执行交易4、5时,是在交易1、2的执行结果上进行状态数据的更新,必然得到不准确的状态数据,可见,在为节点进行数据恢复时,保证区块数据和状态数据的一致性,是节点正常运行的基础。
在相关技术中,为保证区块数据与状态数据的同步,通常采用冷备份的方式实现链上数据的备份,即在需要进行数据备份时,停止区块链节点的运行,以利用区块链节点在完成所有交易的执行之后才进行关机的特性,保证区块数据和状态数据的一致性,然后,再对区块链节点中维护的区块数据和状态数据均进行备份,在此基础上,当链上数据发生缺失时,只需直接基于已备份的区块数据对链上的区块数据进行恢复、基于已备份的状态数据对链上的状态数据进行恢复,即可保证数据恢复后,节点中的区块数据和状态数据保持同步。
当然,除了冷备份的方式以外,相关技术也可以仅对区块数据进行备份,那么,当链上数据发生缺失时,可以通过复制已备份的区块数据的方式恢复链上的区块数据。然而,由于该方式仅备份区块数据,导致难以对链上缺失的状态数据进行恢复。
为此,本说明书提出了一种基于区块链的数据备份方法,能够在节点保持运行的前提下,实现区块数据和状态数据的备份,且在基于备份得到的数据进行链上数据恢复时,保证恢复得到的区块数据和状态数据是保持同步的。
图1为本说明书一示例性实施例示出的一种基于区块链的数据备份方法的流程图。如图1所示,该方法可以包括以下步骤:
步骤102,从区块链系统处获取区块链数据;所述区块链数据包括:区块数据,以及添加有事务号的状态数据;其中,所述状态数据的事务号用于表征所述状态数据基于已执行交易而发生变更的次数。
在本说明书中,可以将区块链系统维护的数据统称为区块链数据。其中,该区块链数据至少可以包含上述区块数据和状态数据。
本说明书中的区块链系统在运行过程中,可以在基于区块数据更新状态数据的同时,为状态数据添加事务号。应当理解的是,在区块链领域中,每执行一笔交易,便会对状态数据进行一次变更,因此,状态数据的事务号实际记录的为:状态数据基于已执行交易而发生变更的次数。
在本说明书中,可以从区块链系统中获取已生成的区块数据,以及添加有事务号的状态数据,并将该区块数据和添加有事务号的状态数据备份至链下存储空间中。
应当理解的是,由于本说明书在对区块链数据进行备份时,对状态数据的事务号也进行了记录,因此,在区块链系统需要进行数据恢复时,可以基于该事务号确定与已备份状态数据同步的区块数据为哪一区块数据,进而确定已备份状态数据和已备份区块数据的错位程度,在此基础上,即可根据该错位程度对已备份状态数据和已备份区块数据进行数据同步后,再对区块链系统中的节点进行数据恢复。
换言之,本说明书是通过在备份区块数据和状态数据时,记录状态数据的事务号的方式,使得本说明书在进行数据恢复时,可以基于事务号对已备份状态数据和已备份区块进行数据同步。显然,由于该方法是在数据恢复时通过记录的事务号完成数据同步,因此,可以避免相关技术由于采用冷备份方式实现数据同步,导致需要停止节点运行才能够进行数据备份,影响节点正常运行的问题。
正如上文所述的,本说明书可以在节点未停止运行的情况下执行数据备份操作,因此,本说明书从区块链系统处获取区块链数据的操作可以为:在区块链系统中的目标节点的运行过程中,从该目标节点处获取目标节点中当前已生成的区块数据,以及当前记录的添加有事务号的状态数据。换言之,无论目标节点是否已经完成“基于当前生成的区块数据,对状态数据进行更新”的操作,均直接将维护的区块数据和状态数据备份至链下存储空间中。需要声明的是,该目标节点在本说明书中特指“负责提供区块链数据,以实现数据备份的节点”,具体将区块链系统中的哪一节点作为该目标节点,可由本领域技术人员根据实际情况确定,本说明书对此不作限制。
在本说明书中,可以设置备份条件,以用于规定执行备份操作的时机,那么,一旦该备份条件被满足,即可执行从区块链系统处获取区块链数据的操作。例如,预设的备份条件可以为:距离上一次区块链数据备份操作的间隔时长达到预设时长;再例如,预设的备份条件可以为:相较于上一次区块链数据备份操作的增量区块数据到达预设数据量;又例如,预设的备份条件可以为:接收到用户下达的区块链数据备份指示。当然,此处举例仅是示意性的,具体如何设置备份条件,可以由本领域技术人员根据实际需求确定,本说明书对此不作限制。
在本说明书中,既可以由区块链系统触发区块链数据的备份操作,也可以由本说明书的执行主体触发区块链数据的备份操作。例如,可以预先在区块链系统中部署用于区块链数据备份的链上数据备份合约,那么,区块链系统可以通过触发该链上数据备份合约的方式,向本说明书的执行主体下发区块链系统维护的区块链数据。再例如,可以由本说明书的执行主体向区块链系统发起针对区块链数据的数据备份请求,以使区块链系统返回维护的区块链数据。当然,上述举例仅是示意性的,具体由哪一主体触发数据备份操作,可由本领域技术人员根据实际需求设置,本说明书对此不作限制。
步骤104,将获取到的区块链数据备份至链下存储空间;其中,所述事务号在节点数据恢复时,用于使恢复得到的区块数据和状态数据保持同步。
在本说明书中,在将获取到的区块链数据备份至链下存储空间之后,即可基于已备份的区块链数据进行数据恢复。例如,当区块链系统中的任一节点由于节点故障等原因而导致数据丢失时,即可在节点修复后,向本说明书的执行主体发送数据恢复请求。在此基础上,本说明书的执行主体即可将链下存储空间中的已备份区块数据和已备份状态数据提供至该任一节点,以使该任一节点基于接收到的已备份区块数据和已备份状态数据进行数据恢复。
在该任一节点进行数据恢复时,可以获取接收到的已备份状态数据的事务号,并确定出已备份区块数据中包含的所有交易的最大交易编号,并将该最大交易编号与获取到的事务号进行比较,以根据比较结果恢复该任一节点中的区块链数据。
在本说明书中,在最大交易编号与事务号的比较结果不同时,该任一节点可以通过不同的方式对区块数据和状态数据进行数据同步。
其中,在比较结果表明事务号等于最大交易编号的情况下,证明已备份状态数据恰为基于已备份区块数据中包含的所有交易更新得到的状态数据,因此,该任一节点可以直接将接收到的区块链数据作为数据恢复得到的数据,即可以将接收到的已备份区块数据作为恢复得到的链上区块数据、将接收到的已备份状态数据作为恢复得到的链上状态数据。
而在比较结果表明事务号大于最大交易编号的情况下,证明基于已备份区块数据中包含的所有交易得到的状态数据滞后于已备份状态数据。因此,还需获取用于将已备份区块数据同步至已备份状态数据的区块数据,例如,该任一节点可以从区块链系统的其他节点中获取交易编号大于最大交易编号、但小于该事务号的交易,以将已备份区块数据中包含的交易和从其他节点处获取到的交易作为恢复得到的链上区块数据。应当理解的是,由于根据事务号将已备份区块数据补全至与已备份状态数据同步,因此,在该情况下,可以直接将已备份状态数据作为恢复得到的链上状态数据。
而在比较结果表明事务号小于最大交易编号的情况下,则证明已备份状态数据滞后于基于已备份区块数据中包含的所有交易得到的状态数据,因此,还需对已备份状态数据进行更新才能够与已备份区块数据同步。例如,该任一节点可以优先从接收到的已备份区块数据中确定出交易编号大于事务号的交易,并基于接收到的已备份状态数据依次执行确定出的交易,以将根据执行结果得到的状态数据作为恢复得到的链上状态数据。当然,该过程也可以称作通过执行确定出的交易对接收到的已备份状态数据进行更新,以将更新得到的状态数据作为恢复得到的链上状态数据。
在本说明书中,区块链数据还可以包括配置信息。换言之,除了对区块数据和状态数据进行备份以外,还可以将区块链系统的配置信息也备份至链下存储空间中。例如,本说明书的执行主体可以从区块链系统处获取配置信息,并将该配置信息备份至链下存储空间中,在此基础上,即可在需要对区块链系统中的节点进行数据恢复时,将已备份的配置信息也恢复至该节点。
在本说明书中,区块链系统的配置信息可以根据实际情况确定,例如,该配置信息可以包括:区块链系统中已部署的智能合约的合约信息;再例如,该配置信息可以包括:区块链系统所采用的状态数据库的结构信息;又例如,该配置信息可以包括:区块链系统所包含节点的节点信息。当然,上述举例仅是示意性的,区块链系统中具体包含哪些配置信息,可以由本领域技术人员根据实际需求确定,本说明书对此不作限制。
需要声明的是,本说明书中的区块链系统既可以基于区块链技术的传统架构部署,即区块链系统中的所有节点均通过在相应实体设备上部署区块链代码而形成,大多数情况下,每个节点均对应于一个实体设备;本说明书的区块链系统也可以基于区块链技术中的BaaS(Blockchain as a Service)架构部署,即区块链系统中的所有节点均通过云服务在云端实现的虚拟机上部署区块链代码而形成,区块链节点无需一一对应于相应的实体设备。
还需声明的是,本说明书的技术方案的执行主体可以为任一类型的电子设备,例如,该电子设备可以为智能手机、平板电脑、折叠屏手机等移动终端,也可以为智能电视、PC(个人计算机,Personal Computer)等固定终端。应当理解的是,任何可以将区块数据和状态数据存储至“用于数据备份的链下存储空间”的设备或设备集群均可作为本说明书的执行主体,具体将哪一种类型的电子设备作为本说明书技术方案的执行主体,可以由本领域技术人员根据实际需求确定,本说明书对此不作限制。
除此之外,在不同情况下,本说明书可以将不同的存储空间作为用于数据备份的链下存储空间。例如,可以将本说明书执行主体所配备的存储空间作为用于数据备份的链下存储空间,也可以将区别于该执行主体的独立存储空间作为用于数据备份的链下存储空间。应当理解的是,任何未被作为链上存储空间的存储空间均可作为本说明书中的链下存储空间,甚至区块链节点的本地存储空间也可以作为该链下存储空间。具体将何种存储空间作为用于对链上数据进行备份的链下存储空间,可由本领域技术人员根据实际需求确定,本说明书对此不作限制。
由上述技术方案可知,本说明书的技术方案在对区块链系统中包含的区块链数据进行备份的过程中,记录了备份得到的状态数据的事务号。由于该事务号用于表征相应状态数据基于已执行交易而发生变更的次数,相当于标记了与相应状态数据所同步的区块数据,使得本说明书在进行数据恢复时,可以基于该事务号对已备份区块数据和已备份状态数据进行数据同步,进而将数据同步后的区块数据和状态数据作为恢复得到的区块链数据。
可见,本说明书通过在数据备份时记录状态数据的事务号的方式,实现数据恢复时区块数据和状态数据的数据同步,避免了相关技术需要停止节点运行,以实现区块数据和状态数据的同步,而导致节点处理业务的操作因数据备份操作而中断的问题。
在本说明书中,还公开了一种基于区块链的数据恢复方法。需要声明的是,该数据恢复方法基于“通过上述数据备份方法备份至链下存储空间的已备份区块链数据”实现,大多数操作方式,例如,如何在数据恢复时实现数据同步、具体备份有何种数据等,均已在上文中介绍,因此,在下文对数据恢复方法的介绍中不再赘述,相关内容均可参照上文的解释。
图2为本说明书一示例性实施例示出的一种基于区块链的数据恢复方法的流程图。如图2所示,该方法可以包括以下步骤:
步骤202,从链下存储空间获取区块链数据;所述区块链数据包括:已备份区块数据,添加有事务号的已备份状态数据;其中,所述事务号用于表征所述已备份状态数据基于已执行交易而发生变更的次数。
如上所述,通过上文所述的数据备份方法,备份至链下存储空间的区块链数据可以包括:已备份区块数据和添加有事务号的已备份状态数据。在此基础上,在进行数据恢复时,即可从链下存储空间中获取已备份的区块链数据,并在基于事件号对已备份区块数据和已备份状态数据进行同步操作后,将得到的区块数据和状态数据作为恢复得到的区块链数据。
步骤204,根据所述事务号对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
如上所述,在根据事务号对已备份区块数据和已备份状态数据进行数据同步时,可以优先获取已备份状态数据的事件号,以及已备份区块数据包含的所有交易的最大交易编号,在此基础上,即可比较事务号和该最大交易编号,并根据比较结果对已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
如上所述,在最大交易编号与事务号的比较结果不同时,可以通过不同的方式对区块数据和状态数据进行数据同步。
如上所述,在比较结果表明事务号等于最大交易编号的情况下,证明已备份状态数据恰为基于已备份区块数据中包含的所有交易更新得到的状态数据,因此,本说明书可以直接将接收到的区块链数据作为数据恢复得到的数据,即可以将接收到的已备份区块数据作为恢复得到的链上区块数据、将接收到的已备份状态数据作为恢复得到的链上状态数据。
如上所述,在比较结果表明事务号大于最大交易编号的情况下,证明基于已备份区块数据中包含的所有交易得到的状态数据滞后于已备份状态数据。因此,还需获取用于将已备份区块数据同步至已备份状态数据的区块数据,例如,可以从区块链系统的其他节点中获取交易编号大于最大交易编号、但小于该事务号的交易,以将已备份区块数据中包含的交易和从其他节点处获取到的交易作为恢复得到的链上区块数据。应当理解的是,由于根据事务号将已备份区块数据补全至与已备份状态数据同步,因此,在该情况下,可以直接将已备份状态数据作为恢复得到的链上状态数据。
如上所述,在比较结果表明事务号小于最大交易编号的情况下,则证明已备份状态数据滞后于基于已备份区块数据中包含的所有交易得到的状态数据,因此,还需对已备份状态数据进行更新才能够与已备份区块数据同步。例如,该任一节点可以优先从接收到的已备份区块数据中确定出交易编号大于事务号的交易,并基于接收到的已备份状态数据依次执行确定出的交易,以将根据执行结果得到的状态数据作为恢复得到的链上状态数据。当然,该过程也可以称作是通过执行确定出的交易对接收到的已备份状态数据进行更新,以将更新得到的状态数据作为恢复得到的链上状态数据。
如上所述,链下存储空间中还可以备份有区块链系统的配置信息。例如,该配置信息可以包括下述至少之一:区块链系统中已部署的智能合约的合约信息、区块链系统所采用的状态数据库的结构信息、区块链系统所包含节点的节点信息。在此基础上,即可从链下存储空间中获取该配置信息,以用于恢复区块链节点的配置。例如,在配置信息包括上述合约信息时,即可通过该合约信息恢复区块链节点中部署的智能合约;在配置信息包括上述结构信息时,即可通过结构信息构建用于记录状态数据的状态数据库;而在配置信息包括上述节点信息时,即可通过该节点信息与所属区块链系统中的其他节点建立通信。
需要声明的是,本说明书的数据恢复方法应用于区块链系统中的任一节点,即该数据恢复方法的执行主体为区块链系统中的任一节点。其中,值得注意的是,“执行数据恢复操作”的节点,可以与“提供区块链数据,以备份至链下存储空间”的节点,既可以为不同节点,也可以为同一节点。例如,在将区块链系统的第一节点维护的区块链数据备份至链下存储空间的基础上,链下存储空间中维护的区块链数据既可以用于第一节点的数据恢复,又可以用于第二节点等其他节点的恢复。
由上述技术方案可知,通过本说明书的数据恢复方法,可以根据已备份状态数据的事件号对已备份状态数据与已备份区块数据进行数据同步,以在实现数据同步后,再用于对区块链系统的数据恢复。
应当理解的是,由于本说明书的数据同步操作在数据恢复阶段基于事务号执行,致使本说明书在数据备份阶段,除了区块数据和状态数据以外,只需额外获取状态数据的事务号即可,而无需通过停止节点运行的方式使区块数据和状态数据同步。可见,通过本说明书的技术方案,能够避免相关技术为实现数据同步,需要在数据备份时停止节点运行的问题。
下面,以将区块链系统中维护的区块链数据备份至链下服务器为例,对本说明书的技术方案进行介绍。
图3为本说明书一示例性实施例示出的一种基于区块链的数据备份方法的交互图。如图3所示,该方法可以包括以下步骤:
步骤301,链下服务器监测距离上一次数据备份操作的间隔时长。
在本实施例中,可以预先部署专用于对区块链系统中维护的区块链数据进行备份的链下服务器。在此基础上,链下服务器即可在需要进行数据备份时,向区块链系统发起数据备份请求,以获取需要备份的区块链数据。
步骤302,链下服务器在间隔时长达到预设时长的情况下,向区块链系统发起数据备份请求。
在本实施例中,以按照预设时间间隔进行数据备份为例进行介绍。链下服务器可以在进行一次数据备份操作后,进行计时,以监测距离上一次数据备份操作的间隔时长,其中,每当间隔时长达到预设时长,可以向区块链系统发起数据备份请求,以指示区块链系统读取当前已生成的区块数据和已记录的添加有事务号的状态数据,并将读取到的区块数据和添加有事务号的状态数据返回至链下服务器。
步骤303,区块链系统读取当前维护的区块数据和添加有事务号的状态数据。
步骤304,区块链系统将读取到的区块数据和添加有事务号的状态数据返回至链下服务器。
步骤305,链下服务器将接收到的区块数据和添加有事务号的状态数据存储至本地存储空间。
在本实施例中,链下服务器在接收到区块链系统返回的区块数据和添加有事务号的状态数据后,即可将该区块数据和状态数据存储至自身维护的本地存储空间中。
由上述技术方案可知,本实施例在备份区块链系统中维护的区块链数据时,直接获取区块链系统中当前已生成的区块数据和当前已记录的状态数据,并记录了该状态数据的事务号,除此之外,并未做额外的数据同步操作,致使本实施例在数据备份时无需停止节点的运行。
在此基础上,对本说明书的数据恢复方法进一步进行介绍。
图4为本说明书一示例性实施例示出的一种基于区块链的数据恢复方法的交互图。如图4所示,该方法可以包括以下步骤:
步骤401,区块链节点向链下服务器发送数据恢复请求。
在通过上一实施例的方式备份区块链系统维护的区块链数据之后,即可在任一节点需要数据恢复时,从链下服务器处获取已备份的区块链数据,以用于该任一节点的数据恢复。
在本实施例中,将需要进行数据恢复的节点直接称作区块链节点。区块链节点可以向上述链下服务器发送数据恢复请求,以指示链下服务器提供已备份的区块链数据。
步骤402,链下服务器读取已备份区块数据和添加有事务号的已备份状态数据。
在本实施例中,链下服务器在接收到数据恢复请求之后,即可将已备份区块数据和添加有事务号的状态数据发送至区块链节点,以由其用于数据恢复。
步骤403,链下服务器将读取到的区块数据和添加有事务号的已备份状态数据返回至区块链节点。
步骤404,区块链节点读取已备份区块数据中包含的交易的最大交易编号。
在本实施例中,区块链节点在获取到已备份区块数据和已备份状态数据后,即可读取已备份区块数据包含的交易的最大交易编号,以用于与已备份状态数据的事务号进行比较,进而使得区块链节点可以根据该比较结果进行区块数据和状态数据的同步。
步骤405,区块链节点对读取到的最大交易编号和已备份状态数据的事务号进行比较。
步骤406,区块链节点根据比较结果对已备份状态数据和已备份区块数据进行数据同步。
举例而言,假设基于上一实施例得到的已备份区块数据X包含8个交易,即交易1~8,而已备份状态数据Y的事务号也为8,此时,事务号恰等于已备份区块数据X的最大交易编号,说明已备份区块数据X与已备份状态数据Y已实现数据同步,因此,可以直接将已备份区块数据X和已备份状态数据Y作为恢复得到的区块链数据。
再假设,若已备份区块数据X仍包含交易1~8,但已备份状态数据Y的事务号则为6,此时,事务号小于已备份区块数据X的最大交易编号,说明已备份状态数据Y滞后于已备份区块数据X,由于已备份状态数据Y与“包含交易1~6的区块数据”同步,因此,可以依次执行交易7和8,以对已备份状态数据Y进行两次更新,进而得到与已备份区块数据X同步的状态数据Y’。
又假设,若已备份区块数据X仍包含交易1~8,但已备份状态数据Y的事务号则为9,此时,事务号大于已备份区块数据X的最大交易编号,说明已备份区块数据X滞后于已备份区块数据Y,由于已备份区块数据X与“基于交易1~8得到的状态数据”同步,若要与已备份状态数据Y同步,区块数据还需获取交易9,因此,区块链节点可以从区块链系统的其他节点处获取该交易9,以将已备份区块数据X和交易9合并为包含交易1~9的区块数据X’。
步骤407,区块链节点基于经由数据同步后的区块数据和状态数据进行数据恢复。
承接上述举例,在上述第一个假设中,可以直接将已备份区块数据X和已备份状态数据Y作为恢复得到的区块链数据;在上述第二个假设中,可以将已备份区块数据X和经由数据同步得到的状态数据Y’作为恢复得到的区块链数据;而在上述第三个假设中,可以将经由数据同步得到的区块数据X’和已备份状态数据Y作为恢复得到的区块链数据。
由上述技术方案可知,通过本实施例的技术方案,区块链节点在获取已备份状态数据和已备份区块数据之后,可以对已备份状态数据的事务号和已备份区块数据的最大交易编号进行比较,并在比较结果不同时,采用不同的方式对已备份状态数据和已备份区块数据进行数同步,并基于同步得到的区块数据和状态数据进行数据恢复,避免了相关技术需要在节点备份阶段进行数据同步,而停止节点运行的情况。
图5是一示例性实施例提供的一种设备的示意结构图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图6,基于区块链的数据备份装置可以应用于如图5所示的设备中,以实现本说明书的技术方案。其中,该基于区块链的数据备份装置可以包括:
获取单元601,从区块链系统处获取区块链数据;所述区块链数据包括:区块数据,以及添加有事务号的状态数据;其中,所述状态数据的事务号用于表征所述状态数据基于已执行交易而发生变更的次数;
备份单元602,将获取到的区块链数据备份至链下存储空间;其中,所述事务号在节点数据恢复时,用于使恢复得到的区块数据和状态数据保持同步。
可选的,获取单元601被进一步用于:
在所述区块链系统的目标节点的运行过程中,从所述目标节点处获取所述目标节点中当前已生成的区块数据,以及当前记录的添加有事务号的状态数据。
可选的,从区块链系统获取区块链数据的操作在下述至少一种情况下执行:
距离上一次区块链数据备份操作的间隔时长达到预设时长;
相较于上一次区块链数据备份操作的增量区块数据到达预设数据量;
接收到用户下达的区块链数据备份指示。
可选的,获取单元601被进一步用于:
接收区块链系统通过触发链上数据备份合约而下发的区块链数据;或者,
向所述区块链系统发起针对区块链数据的数据备份请求,以使所述区块链系统返回所述区块链系统中维护的区块链数据。
可选的,还包括:
提供单元603,响应于所述区块链系统中任一节点的数据恢复请求,将所述链下存储空间中的已备份区块数据和已备份状态数据提供至所述任一节点,以使所述任一节点对所述已备份状态数据的事务号和所述已备份区块数据中包含的所有交易的最大交易编号进行比较,并根据比较结果恢复所述任一节点中的区块链数据。
可选的,
所述任一节点在确定所述事务号等于所述最大交易编号的情况下,将接收到的已备份区块数据作为恢复得到的链上区块数据、将接收到的已备份状态数据作为恢复得到的链上状态数据;
所述任一节点在确定所述事务号大于所述最大交易编号的情况下,将接收到的已备份状态数据作为恢复得到的链上状态数据,并从所述区块链系统的其他节点中获取交易编号大于所述最大交易编号、但小于所述事务号的交易,以将获取到的交易和所述已备份区块数据包含的交易作为恢复得到的链上区块数据;
所述任一节点在确定所述事务号小于所述最大交易编号的情况下,将接收到的已备份区块数据作为恢复得到的链上区块数据,并从接收到的已备份区块数据中确定出交易编号大于所述事务号的交易,以基于接收到的已备份状态数据依次执行确定出的交易,将根据执行结果得到的状态数据作为恢复得到的链上状态数据。
可选的,获取单元601还被用于:
从所述区块链系统处获取配置信息,所述配置信息包含下述至少之一:所述区块链系统中已部署的智能合约的合约信息、所述区块链系统所采用的状态数据库的结构信息、所述区块链系统所包含节点的节点信息。
请参考图7,基于区块链的数据恢复装置可以应用于如图5所示的设备中,以实现本说明书的技术方案。其中,该基于区块链的数据恢复装置可以包括:
获取单元701,从链下存储空间获取区块链数据;所述区块链数据包括:已备份区块数据,添加有事务号的已备份状态数据;其中,所述事务号用于表征所述已备份状态数据基于已执行交易而发生变更的次数;
恢复单元702,根据所述事务号对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
可选的,恢复单元702被进一步用于:
比较所述事务号和所述已备份区块数据的最大交易编号,并根据比较结果对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
可选的,恢复单元702被进一步用于:
在确定所述事务号等于所述最大交易编号的情况下,将接收到的已备份区块数据作为恢复得到的链上区块数据、将接收到的已备份状态数据作为恢复得到的链上状态数据;
在确定所述事务号大于所述最大交易编号的情况下,将接收到的已备份状态数据作为恢复得到的链上状态数据,并从所述区块链系统的其他节点中获取交易编号大于所述最大交易编号、但小于所述事务号的交易,以将获取到的交易和所述已备份区块数据包含的交易作为恢复得到的链上区块数据;
在确定所述事务号小于所述最大交易编号的情况下,将接收到的已备份区块数据作为恢复得到的链上区块数据,并从接收到的已备份区块数据中确定出交易编号大于所述事务号的交易,以基于接收到的已备份状态数据依次执行确定出的交易,将根据执行结果得到的状态数据作为恢复得到的链上状态数据。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (14)
1.一种基于区块链的数据备份方法,包括:
从区块链系统处获取区块链数据;所述区块链数据包括:区块数据,以及添加有事务号的状态数据;其中,所述状态数据的事务号用于表征所述状态数据基于已执行交易而发生变更的次数;
将获取到的区块链数据备份至链下存储空间;其中,所述事务号在节点数据恢复时,用于使恢复得到的区块数据和状态数据保持同步。
2.根据权利要求1所述的方法,所述从区块链系统处获取区块链数据,包括:
在所述区块链系统的目标节点的运行过程中,从所述目标节点处获取所述目标节点中当前已生成的区块数据,以及当前记录的添加有事务号的状态数据。
3.根据权利要求1所述的方法,从区块链系统获取区块链数据的操作在下述至少一种情况下执行:
距离上一次区块链数据备份操作的间隔时长达到预设时长;
相较于上一次区块链数据备份操作的增量区块数据到达预设数据量;
接收到用户下达的区块链数据备份指示。
4.根据权利要求1所述的方法,所述从区块链系统处获取区块链数据,包括:
接收区块链系统通过触发链上数据备份合约而下发的区块链数据;或者,
向所述区块链系统发起针对区块链数据的数据备份请求,以使所述区块链系统返回所述区块链系统中维护的区块链数据。
5.根据权利要求1所述的方法,还包括:
响应于所述区块链系统中任一节点的数据恢复请求,将所述链下存储空间中的已备份区块数据和已备份状态数据提供至所述任一节点,以使所述任一节点对所述已备份状态数据的事务号和所述已备份区块数据中包含的所有交易的最大交易编号进行比较,并根据比较结果恢复所述任一节点中的区块链数据。
6.根据权利要求5所述的方法,
所述任一节点在确定所述事务号等于所述最大交易编号的情况下,将接收到的已备份区块数据作为恢复得到的链上区块数据、将接收到的已备份状态数据作为恢复得到的链上状态数据;
所述任一节点在确定所述事务号大于所述最大交易编号的情况下,将接收到的已备份状态数据作为恢复得到的链上状态数据,并从所述区块链系统的其他节点中获取交易编号大于所述最大交易编号、但小于所述事务号的交易,以将获取到的交易和所述已备份区块数据包含的交易作为恢复得到的链上区块数据;
所述任一节点在确定所述事务号小于所述最大交易编号的情况下,将接收到的已备份区块数据作为恢复得到的链上区块数据,并从接收到的已备份区块数据中确定出交易编号大于所述事务号的交易,以基于接收到的已备份状态数据依次执行确定出的交易,将根据执行结果得到的状态数据作为恢复得到的链上状态数据。
7.根据权利要求1所述的方法,还包括:
从所述区块链系统处获取配置信息,所述配置信息包含下述至少之一:所述区块链系统中已部署的智能合约的合约信息、所述区块链系统所采用的状态数据库的结构信息、所述区块链系统所包含节点的节点信息。
8.一种基于区块链的数据恢复方法,包括:
从链下存储空间获取区块链数据;所述区块链数据包括:已备份区块数据,添加有事务号的已备份状态数据;其中,所述事务号用于表征所述已备份状态数据基于已执行交易而发生变更的次数;
根据所述事务号对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
9.根据权利要求8所述的方法,所述根据所述事务号对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据,包括:
比较所述事务号和所述已备份区块数据的最大交易编号,并根据比较结果对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
10.根据权利要求9所述的方法,所述根据比较结果对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据,包括:
在确定所述事务号等于所述最大交易编号的情况下,将接收到的已备份区块数据作为恢复得到的链上区块数据、将接收到的已备份状态数据作为恢复得到的链上状态数据;
在确定所述事务号大于所述最大交易编号的情况下,将接收到的已备份状态数据作为恢复得到的链上状态数据,并从所述区块链系统的其他节点中获取交易编号大于所述最大交易编号、但小于所述事务号的交易,以将获取到的交易和所述已备份区块数据包含的交易作为恢复得到的链上区块数据;
在确定所述事务号小于所述最大交易编号的情况下,将接收到的已备份区块数据作为恢复得到的链上区块数据,并从接收到的已备份区块数据中确定出交易编号大于所述事务号的交易,以基于接收到的已备份状态数据依次执行确定出的交易,将根据执行结果得到的状态数据作为恢复得到的链上状态数据。
11.一种基于区块链的数据备份装置,包括:
获取单元,从区块链系统处获取区块链数据;所述区块链数据包括:区块数据,以及添加有事务号的状态数据;其中,所述状态数据的事务号用于表征所述状态数据基于已执行交易而发生变更的次数;
备份单元,将获取到的区块链数据备份至链下存储空间;其中,所述事务号在节点数据恢复时,用于使恢复得到的区块数据和状态数据保持同步。
12.一种基于区块链的数据恢复装置,包括:
获取单元,从链下存储空间获取区块链数据;所述区块链数据包括:已备份区块数据,添加有事务号的已备份状态数据;其中,所述事务号用于表征所述已备份状态数据基于已执行交易而发生变更的次数;
恢复单元,根据所述事务号对所述已备份区块数据和已备份状态数据进行数据同步,以将经由数据同步得到的区块数据和状态数据作为恢复得到的区块链数据。
13.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-10中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211352483.2A CN115794483A (zh) | 2022-10-31 | 2022-10-31 | 一种基于区块链的数据备份方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211352483.2A CN115794483A (zh) | 2022-10-31 | 2022-10-31 | 一种基于区块链的数据备份方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794483A true CN115794483A (zh) | 2023-03-14 |
Family
ID=85434676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211352483.2A Pending CN115794483A (zh) | 2022-10-31 | 2022-10-31 | 一种基于区块链的数据备份方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794483A (zh) |
-
2022
- 2022-10-31 CN CN202211352483.2A patent/CN115794483A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11397648B2 (en) | Virtual machine recovery method and virtual machine management device | |
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
EP3474516B1 (en) | Data processing method and device | |
US9098439B2 (en) | Providing a fault tolerant system in a loosely-coupled cluster environment using application checkpoints and logs | |
CN107426265A (zh) | 数据一致性同步的方法及设备 | |
CN107357688B (zh) | 分布式系统及其故障恢复方法和装置 | |
CN111880956B (zh) | 一种数据同步方法和装置 | |
CN109144790A (zh) | MySQL数据库的合成备份方法和装置 | |
CN107729515B (zh) | 一种数据同步的方法、装置及存储介质 | |
CN113297173B (zh) | 分布式数据库集群管理方法及装置、电子设备 | |
CN112600690B (zh) | 一种配置数据同步方法、装置、设备及存储介质 | |
CN112929438B (zh) | 一种双站点分布式数据库的业务处理方法及装置 | |
CN107943615B (zh) | 基于分布式集群的数据处理方法与系统 | |
CN110825758B (zh) | 一种交易处理的方法及装置 | |
CN111125060B (zh) | 一种数据库管理方法、系统、设备及存储介质 | |
CN112035418A (zh) | 多机房同步方法、计算设备及计算机存储介质 | |
CN115794483A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN111737043A (zh) | 数据库容灾方法、设备、服务器和存储介质 | |
CN115328931A (zh) | 数据库集群数据校验方法、装置、存储介质及电子设备 | |
CN115237674A (zh) | 基于opendaylight的SDN控制器的数据备份方法及设备、介质 | |
CN115686943A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN115756953A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN113590380A (zh) | 一种数据库恢复方法及系统 | |
CN110018986B (zh) | 异常快照识别方法及装置 | |
KR20200122724A (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 |