具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
数据库的数据备份非常重要,尤其是在云环境上的数据备份,但每次完成的数据备份,在真正发生数据丢失时,是否都可以正常使用备份数据进行数据恢复,是不能完全确定的,同时即使根据备份数据恢复出来的数据,是否可以保证和备份时的数据完全一致,也不能完全确定。
在本申请实施例中,在对待备份数据进行备份的过程中,获取数据库在待备份时间段的截止时间点记录的对应数据的库表信息,将库表信息以及待备份数据对应的已备份数据进行存储,以使后续通过该库表信息来确定该待备份数据在备份的过程是否丢失了数据以及数据表,弥补了无法在数据备份的过程验证数据丢失的问题,较为准确地保证了备份数据在关键时刻的可用性、可靠性以及可恢复性。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1A为本申请一示例性实施例提供的一种备份数据的校验系统的结构示意图。如图1A所示,该校验系统100A包括:数据备份节点101以及数据存储节点102。
其中,数据备份节点101是指用于可以对数据进行备份以及恢复的节点,在物理表现形式上可以为服务器,该服务器是指可以在网络虚拟环境中提供计算处理服务的数据库服务器,通常是指利用网络进行数据备份以及数据恢复的数据库服务器。在物理实现上,该服务器可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。该服务器的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
数据存储节点102是指用于可以对数据进行存储的节点,特别是对已备份数据进行存储的节点,在物理表现形式上可以为服务器或者服务器存储集群,其中,服务器是指可以在网络虚拟环境中提供计算处理服务的存储服务器,通常是指利用网络进行存储已备份数据的服务器。服务器可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。该服务器的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
在本申请实例中,数据备份节点101,用于确定数据库中待备份数据对应的备份时间段;在对待备份数据进行备份的过程中,通过隔离所述数据库中所述备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据;将库表信息以及待备份数据对应的已备份数据存储至数据存储节点102中。
数据备份节点101从数据存储节点102获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据;将待恢复数据进行恢复,得到已恢复数据;将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性,当比较结果为相同时,则确定已恢复数据与至少一份已备份数据对应的待备份数据一致。
在一些实例中,数据备份节点101可以从自身存储的数据中获取到隔离后的待备份数据,完成数据备份,在备份完成,将已备份数据上传至数据存储节点102后,数据备份节点101可以从自身获取到备份时间段的后续的日志,以供数据备份节点101在对已备份数据进行恢复时,根据后续的日志,对已恢复数据进行验证,当接收到日志报错数据,则表示待备份数据在进行备份时,存在数据丢失。
在上述本实施例中,数据备份节点101可以与数据存储节点102进行网络连接,该网络连接可以是有线网络连接。
图1B为本申请一示例性实施例提供的一种备份数据的校验系统的结构示意图。如图1B所示,该校验系统100B包括:数据备份节点101’、数据存储节点102以及数据恢复节点103。其中,校验系统100B中的数据存储节点102与校验系统100A中的数据存储节点102相同。
数据备份节点101’是指用于可以对数据进行备份的节点,在物理表现形式上可以为服务器,该服务器是指可以在网络虚拟环境中提供计算处理服务的数据库服务器,通常是指利用网络进行数据备份的数据库服务器。在物理实现上,该服务器可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。该服务器的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
数据恢复节点103是指用于可以对数据进行恢复的节点,在物理表现形式上可以为服务器,该服务器是指可以在网络虚拟环境中提供计算处理服务的数据库服务器,通常是指利用网络进行数据恢复的数据库服务器。在物理实现上,该服务器可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。该服务器的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
在一些实例中,数据备份节点101’,用于确定数据库中待备份数据对应的备份时间段;在对待备份数据进行备份的过程中,通过隔离所述数据库中所述备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据;将库表信息以及待备份数据对应的已备份数据存储至数据存储节点102中。
数据恢复节点103从数据存储节点102获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据;将待恢复数据进行恢复,得到已恢复数据;将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性,当比较结果为相同时,则确定已恢复数据与至少一份已备份数据对应的待备份数据一致。
在一些实例中,数据备份节点101’可以从自身存储的数据中获取到待备份数据,完成数据备份,在备份完成,将已备份数据上传至数据存储节点102后,数据备份节点101’可以从自身获取到备份时间段的后续的日志,以供数据恢复节点103获取该后续的日志,或者,数据恢复节点103在恢复数据后,直接从自身获取该后续的日志,数据恢复节点103在对已备份数据进行恢复时,根据后续的日志,对已恢复数据进行验证,当接收到日志报错数据,则表示待备份数据在进行备份时,存在数据丢失。应理解,此时,数据备份节点101’与数据恢复节点103具有相同的存储数据。
在上述实施例中,数据备份节点101’可以与数据存储节点102以及数据恢复节点103进行网络连接,该网络连接可以是有线网络连接。
需要说明的是,无论是数据备份节点101、数据备份节点101’还是数据恢复节点104,均可以属于独立数据库服务器,也可以属于从属于其他数据库服务器的数据库备份服务器。
下面结合方法实施例,针对数据备份节点101对备份数据的验证过程或者,数据备份节点101’以及数据恢复节点103对备份数据的验证过程进行详细说明。
图2为本申请一示例性实施例的数据的验证方法的流程示意图。本申请实施例提供的该方法200由服务器执行,例如,由数据库服务器执行,该方法200包括以下步骤:
201:确定数据库中待备份数据对应的备份时间段。
202:在对待备份数据进行备份的过程中,通过隔离数据库中备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据。
203:将库表信息以及待备份数据对应的已备份数据存储至预置存储区域中。
需要说明的是,该数据库服务器可以是独立的数据库服务器,也可以是从属于其他数据库服务器的数据库备份服务器。
以下针对上述步骤进行详细阐述:
201:确定数据库中待备份数据对应的备份时间段。
其中,备份时间段是指产生待备份数据或存储待备份数据的时间,例如,可以根据用户的需求,确定该备份时间段为xx年x月x日,下午3点到5点,针对该备份时间段,备份该时间段的数据,即该时间段产生的待备份数据或存储的待备份数据。
例如,数据备份服务器接收用户终端发送的指令或语句,该指令或语句指示数据库服务器对其自身MySQL中的xx年x月x日,下午3点到5点的数据进行备份。
需要说明的是,在数据备份服务器接收到该指令或语句时,该时间可以是xx年x月x日,下午5点,也可以是xx年x月x日,下午5点以后的某个时间。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
202:在对待备份数据进行备份的过程中,通过隔离数据库中备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据。
其中,备份时间段的截止时间点是指该时间段中的最后时间,如下午3点到5点的时间段的截止时间为下午5点。
库表信息是指数据库服务器中的至少一个数据库标识,如名称,以及至少一个数据表标识,如名称。其中,数据库名称和数据表名称通过列表的形式记录。
需要说明的是,数据库服务器中可以具有多个数据库,每个数据库中也可以具有多个数据表,如数据库服务器的MySQL具有多个数据库,每个数据库中也可以具有多个数据表。
在一些实例中,通过隔离数据库中备份时间段对应的数据,获取隔离后的数据对应的库表信息,包括:可以根据可重读事务隔离级别,将截止时间点对应的数据库中的数据进行隔离,并获取隔离后的数据的库表信息;
还可以通过对对应的数据进行加锁,获取到隔离后的数据
其中,可重读事务隔离级别是指在关系型数据库(例如,MySQL)中,同一事务同样查询可获得同样结果的事务隔离级别,例如,在利用该可重读实务隔离级别时,可获取到某个时间点的待备份数据,且该待备份数据不受后续数据更新的影响。
需要说明的是,由于数据库通常是在持续更新的,从而更新其中的数据,如,通过修改数据、新增数据以及删除数据等等操作进行数据库或数据的更新,所以在不同时间段的数据库中查找的数据是不同的,例如,可以是数据属性的变化、数据值的变化以及不同数据之间关联关系的变化导致的数据不同,所以为了避免后续数据更新带来的影响,导致待备份数据不在是其备份时间段对应的数据(因为被更新了),需要对该备份时间段对应的待备份数据进行隔离,查找到的待备份数据就是备份时间对应的,并没有被更新,但却不影响数据库的数据更新,只是在查找的时候不会得到更新的数据。
例如,根据前文所述,数据库服务器在接收到备份指示后,通过备份工具或备份程序对其自身的MySQL中的xx年x月x日,下午3点到5点的待备份数据进行备份,例如,可以直接自身MySQL中获取xx年x月x日,下午3点到5点之间的待备份数据,从而完成备份,得到已备份数据,已备份数据以备份结果集元数据文件,可以存储至本地的中,或者也可以不存储在本地,只要获取到具有已备份数据的备份结果集元数据文件即可。如图5所示,可以在这备份过程中,数据库服务器通过可重读事务隔离级别的连接方式连接自身的MySQL,指示隔离的时间段是xx年x月x日,下午3点到5点之间,从而从其自身MySQL中获取到xx年x月x日,下午5点时存在的数据库名称以及数据表名称,数据库服务器可以以列表的形式接收记录有数据库名称以及数据表名称的名称列表。
需要说明的是,数据库服务器在获取库表信息时,也可以直接从其MySQL中直接获取备份时间段对应库表信息,MySQL可以记录每个时间点所对应的库表信息。
此外,在获取备份时间段对应的库表信息时,也可以获取备份时间段中临近截止时间点的库表信息,如,备份时间段为xx年x月x日,下午3点到5点,那么也可以获取4点50分30秒时间点对应的库表信息。
203:将库表信息以及待备份数据对应的已备份数据存储至预置存储区域中。
其中,预置存储区域是指用于存储已备份数据的存储区域,如,存储服务器或存储服务器集群。
例如,根据前文所述,如图5所示,数据库服务器在获取到数据库以及数据表的名称列表后,将数据库以及数据表的名称列表存储至已备份数据的备份结果集元数据文件中,并将该存储有已备份数据、数据库以及数据表的名称列表的备份结果集元数据文件发送至存储服务器集群中进行存储。
需要说明的是,通过存储数据库以及数据表的名称列表,可以在对已备份数据进行恢复时,来验证在上述数据备份的过程中是否有数据丢失或者数据表的丢失等问题。
在一些实例中,该方法200还包括:将隔离后的数据作为待备份数据;确定待备份数据的第一校验信息,并将第一校验信息存储至已备份数据所在的预置存储区域中。
其中,第一校验信息是指用于校验待备份数据正确性的信息,通过预定算法对数据进行计算得到该第一校验信息,例如,第一校验信息可以为checksum总和检验码,也可以称为校验和,这里可以特指对数据进行哈希计算获取的结果,哈希算法可以为CRC32、CRC64(循环冗余校验Cyclic Redundancy Check,CRC),MD5(消息摘要算法,Message-DigestAlgorithm)、SHA1(安全哈希算法,Secure Hash Algorithm)等。
在一些实例中,获取待备份数据,包括:根据可重读事务隔离级别,获取待备份数据。
例如,根据前文所述,如图5所示,可以在备份过程中,数据库服务器通过可重读事务隔离级别的连接方式连接自身的MySQL,指示隔离的时间段是xx年x月x日,下午3点到5点之间,从而从其自身MySQL中获取到xx年x月x日,下午3点到5点之间隔离后的待备份数据,可以通过数据快照的形式获取到该待备份数据,该数据快照可以是其所表示的待备份数据的一个副本,也可以是待备份数据的一个复制品,该获取到的待备份数据未经过5点以后的更新。
在一些实例中,待备份数据是通过数据表存储的数据;其中,确定待备份数据的第一校验信息,并将第一校验信息存储至预置存储区域中,包括:针对每个数据表,计算每个数据表中待备份数据的第一校验信息;将第一校验信息以及对应的数据表存储至已备份数据所在的预置存储区域中。
例如,根据前文所述,数据库服务器获取到的隔离的待备份数据可以数据表的形式展示在数据快照中,利用MySQL checksum table指令,对数据表进行数据库层面的checksum计算,如,对数据表中的数据进行一行一行的CRC32算法的校验和(checksum)进行计算,并把数据表与计算出的checksum对应结果存储到备份结果集元数据文件中。
在一些实例中,该方法200还包括:对待备份数据进行备份,得到至少一份已备份数据;确定每份已备份数据所在文件的第二校验信息以及文件大小;将第二校验信息以及对应的文件大小数值存储至已备份数据所在的预置存储区域中。
其中,第二校验信息是指用于校验待备份数据正确性的信息,也可以是通过预定算法对文件进行计算得到该第二校验信息,例如,第二校验信息可以为checksum总和检验码,也可以称为校验和,这里可以特指对数据进行哈希计算获取的结果,哈希算法可以为CRC32、CRC64(循环冗余校验Cyclic Redundancy Check,CRC),MD5(消息摘要算法,Message-Digest Algorithm)、SHA1(安全哈希算法,Secure Hash Algorithm)等。
需要说明的是,由于待备份数据是一个备份时间段对应的数据,所以数据可以有很多,那么待备份数据对应的已备份数据可以是由多个数据文件组成的,每个数据文件是指一个具有数据的文件,每个数据文件可以作为一份已备份数据。那么待备份数据可以对应至少一份已备份数据。且备份结果集元数据文件中可以具有多个数据文件。
例如,根据前文所述,数据库服务器在获取到多份已备份数据后,且每份已备份数据作为一个数据文件存储在备份结果集元数据文件中,所以备份结果集元数据文件会存在很多个数据文件,在生成备份结果集元数据文件时,如图7所示,会对每个数据文件计算checksum值,如,对每个数据文件进行CRC32算法的校验和(checksum)的计算,同时确定每个数据文件的大小,并存储数据文件大小和对应的checksum值到备份结果集元数据文件中。
需要说明的是,这里是对文件级别的checksum计算,与数据库层面checksum计算的结果是不同的。
在一些实例中,该方法200还包括:确定至少一份已备份数据所在文件的第三校验信息以及文件大小;将第三校验信息以及对应的文件大小存储至已备份数据所在的预置存储区域中。
其中,第三校验信息是指用于校验待备份数据正确性的信息,也可以是通过预定算法对文件进行计算得到该第三校验信息,例如,第三校验信息可以为checksum总和检验码,也可以称为校验和,这里可以特指对数据进行哈希计算获取的结果,哈希算法可以为CRC32、CRC64(循环冗余校验Cyclic Redundancy Check,CRC),MD5(消息摘要算法,Message-Digest Algorithm)、SHA1(安全哈希算法,Secure Hash Algorithm)等。
应理解,由于备份结果集元数据文件可以具有多个数据文件,所以至少一份备份数据所在的文件就是备份结果集元数据文件,对这个备份结果集元数据文件进行checksum的计算。
例如,根据前文所述,数据库服务器生成备份结果集元数据文件后,也会确定整个备份结果集元数据文件大小,并计算备份结果集元数据文件的checksum,如,对备份结果集元数据文件进行CRC32算法的校验和(checksum)的计算,并存储备份结果集元数据文件大小和对应的checksum值到备份结果集元数据文件中。
在一些实例中,该方法200还包括:对待备份数据进行备份,得到至少一份已备份数据;根据预置存储区域中的数据块的大小,划分至少一份已备份数据,生成多个划分后的至少一份已备份数据;确定划分后的至少一份已备份数据的第四校验信息;将第四校验信息与对应的划分后的至少一份已备份数据存储至对应的数据块中。
其中,数据块是指一组或几组按顺序连续排列在一起的记录,是主存储器与输入设备、输出设备或外存储器之间进行传输的数据单位。每个数据块都具有固定的大小。将备份结果集元数据文件向存储集群上传时,需要先对该备份结果集元数据文件进行分块上传,即根据数据块的大小,对备份结果集元数据文件进行划分并依次上传。
第四校验信息是指用于校验待备份数据正确性的信息,也可以是通过预定算法对数据进行计算得到该第四校验信息,例如,第四校验信息可以为checksum总和检验码,也可以称为校验和,这里可以特指对数据进行哈希计算获取的结果,哈希算法可以为CRC32、CRC64(循环冗余校验Cyclic Redundancy Check,CRC),MD5(消息摘要算法,Message-Digest Algorithm)、SHA1(安全哈希算法,Secure Hash Algorithm)等。
例如,根据前文所述,数据库服务器在得到备份结果集元数据文件后,根据数据块大小,划分备份结果集元数据文件,并将备份结果集元数据文件上传至存储集群中进行存储,每块数据在上传前计算每块数据的CRC32算法的校验和checksum值,可以存储在伴随该块数据一起上传,上传完成后存储集群或存储服务器会计算接收到的每块数据的checksum值并与上传之前计算的checksum值进行对比,保证数据传输过程中的一致性。
图3为本申请另一示例性实施例提供的又一种备份数据的校验方法的流程示意图。本申请实施例提供的该方法300由服务器执行,例如,数据库服务器,该方法300包括以下步骤:
301:从预置存储区域获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据。
302:将待恢复数据进行恢复,得到已恢复数据。
303:将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性,待备份数据与备份时间段对应。
需要说明的是,用于执行方法300的数据库服务器可以是执行方法200的数据库服务器,也可以是其他数据库服务器。
以下针对上述步骤进行详细阐述:
301:从预置存储区域获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据。
例如,根据前文所述,数据库服务器在对数据进行恢复时,即已备份数据进行恢复时,需要从存储集群下载已备份数据,在下载过程中依然使用数据块下载的机制,依次从多个数据块中下载多个数据块已备份数据,在得到多个数据块已备份数据后,对每个数据块已备份数据进行解压解包操作,得到多个解压解包后的数据块已备份数据,从而得到多个数据文件(即多份已备份数据)组成的备份结果集元数据文件,作为待恢复数据并从备份结果集元数据文件中获取到对应的库表信息。
在一些实例中,从预置存储区域获取至少一份已备份数据,包括:从预置存储区域中获取被数据块划分后的至少一份已备份数据;其中,该方法300还包括:从预置存储区域中获取划分后的至少一份已备份数据的第四校验信息;确定划分后的至少一份已备份数据的第四校验信息;将获取到的第四校验信息与确定的第四校验信息进行比较,确定获取到的至少一份已备份数据是否完整。
例如,根据前文所述,数据库服务器依次从多个数据块中下载多个数据块已备份数据,在得到多个数据块已备份数据后,对每个数据块已备份数据进行解压解包操作,得到多个解压解包后的数据块已备份数据,并从每个解压解包后的数据块已备份数据中获取到对应的校验和checksum值,同时重新计算每个数据块的已备份数据CRC32算法的校验和checksum值,将获取到的校验和checksum值与对应的计算确定的校验和checksum值进行对比,当比较结果相同,则表示已备份数据在备份时,并未丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是一致的。当比较结果不相同,则表示已备份数据在备份时,丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是不一致的。
需要说明的是,在以数据块的形式上传已备份数据时,需要对已备份数据进行打包,在上传到数据块中。
302:将待恢复数据进行恢复,得到已恢复数据。
例如,根据前文所述,数据库服务器将得到的多份待备份数据导入至数据库服务器中的MySQL中,生成已恢复数据。
303:将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性,待备份数据与备份时间段对应。
例如,根据前文所述,数据库服务器从MySQL中的已恢复数据中获取到对应的库表信息。将该库表信息与备份结果集元数据文件中获取到对应的库表信息进行对比,当对比结果相同,则表示已备份数据在备份时,并未丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是一致的。当对比结果不相同,则表示已备份数据在备份时,丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是不一致的。
在一些实例中,该方法300还包括:从预置存储区域获取针对数据表中的已备份数据的第一校验信息;针对已恢复数据中的每个数据表,确定每个数据表中的已恢复数据的第一校验信息;将获取到的第一校验信息与确定的第一校验信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性。
例如,根据前文所述,数据库服务器从备份结果集元数据文件中还可以获取到数据表中的数据进行一行一行的CRC32算法的较验和(checksum),在从MySQL中获取到已恢复数据的数据表,通过对数据表中的数据进行一行一行的CRC32算法的校验和(checksum)的计算,将计算确定的校验和(checksum)与获取到的校验和(checksum)进行比较,当比较结果相同,则表示已备份数据在备份时,并未丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是一致的。当比较结果不相同,则表示已备份数据在备份时,丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是不一致的。
在一些实例中,该方法300还包括:获取备份时间段后的数据操作日志,该数据操作日志记录了在备份时间段后操作待备份数据的行为数据;根据数据操作日志,对已恢复数据进行操作;若接收到数据操作日志的报错数据,则验证已恢复数据与至少一份已备份数据对应的待备份数据不一致。
例如,根据前文所述,如图6所示,数据库服务器在恢复完数据后,根据该已恢复数据对应的备份时间段,可以从自身的MySQL中获取到该备份时间段后(即备份位点后)的相关数据信息(即备份位点信息):数据操作日志:binlog,如,备份时间段为xx年x月x日,下午3点到5点,那么该该binlog可以为5点以后的binlog。数据库服务器在获取到binlog后,通过其自身的MySQL基于已恢复数据来执行该binlog中的操作行为,若接收到binlog发出的报错数据,则表示已备份数据在备份时,丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是不一致的。若未接收到binlog发出的报错数据,则表示已备份数据在备份时,未丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是一致的。
需要说明的是,数据库服务器也可以从备份结果集元数据文件中获取到该备份时间段后(即备份位点后)的相关数据信息(即备份位点信息):数据操作日志:binlog,此时就需要在上传已备份数据时,将该binlog一同在备份结果集元数据文件中上传至存储集群。
在一些实例中,该方法300还包括:从预置存储区域获取每份已备份数据所在文件的第二校验信息以及文件大小;确定每份已备份数据所在文件的第二校验信息以及文件大小;将获取到的第二校验信息与确定的第二校验信息进行比较,将获取到的文件大小与确定的文件大小进行比较,确定获取到的每份已备份数据是否完整。
例如,根据前文所述,数据库服务器可以从备份结果集元数据文件中获取到多个数据文件以及对应的校验和(checksum)和数据文件大小,并对每个数据文件重新进行CRC32算法的校验和(checksum)的计算并确定每个数据文件大小,将计算确定的校验和(checksum)与获取到的校验和(checksum)进行比较,以及将确定的数据文件大小与获取到的对应的数据文件大小进行比较,当比较结果相同(即文件大小相同且校验和(checksum)也相同),则表示已备份数据在备份时,并未丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是一致的。当比较结果不相同(即文件大小不相同和/或校验和(checksum)不相同),则表示已备份数据在备份时,丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是不一致的。
在一些实例中,该方法300还包括:从预置存储区域获取至少一份已备份数据所在文件的第三校验信息以及文件大小;确定至少一份已备份数据所在文件的第三校验信息以及文件大小;将获取到的第三校验信息与确定的第三校验信息进行比较,将获取到的文件大小与确定的文件大小进行比较,确定获取到的至少一份已备份数据是否完整。
例如,根据前文所述,数据库服务器可以从备份结果集元数据文件中获取到备份结果集元数据文件的校验和(checksum)和备份结果集元数据文件大小,并对备份结果集元数据文件重新进行CRC32算法的校验和(checksum)的计算并确定备份结果集元数据文件大小,将计算确定的校验和(checksum)与获取到的校验和(checksum)进行比较,以及将确定的备份结果集元数据文件大小与获取到的对应的备份结果集元数据文件大小进行比较,当比较结果相同(即备份结果集元数据文件大小相同且校验和(checksum)也相同),则表示已备份数据在备份时,并未丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是一致的。当比较结果不相同(即备份结果集元数据文件大小不相同和/或校验和(checksum)不相同),则表示已备份数据在备份时,丢失数据。验证已恢复数据与至少一份已备份数据对应的待备份数据是不一致的。
本申请的实施例,通过备份恢复流程中的多维度校验,可以校验到备份结果集元数据文件中,每张表的数据是否符合预期;可以验证到由于备份过程问题,导致的表数据备份缺失;可以验证到备份结果集元数据文件,是否是备份时位点预期的数据,保障了备份数据在关键时刻可用性、可恢复性。
图4为本申请另一示例性实施例提供的又一种备份数据的校验方法的流程示意图。本申请实施例提供的该方法400由服务器执行,例如,数据库服务器,该方法400包括以下步骤:
401:确定数据库中待备份数据对应的备份时间段。
402:在对待备份数据进行备份的过程中,通过隔离数据库中备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据。
403:将库表信息以及待备份数据对应的已备份数据存储至预置存储区域中。
404:从预置存储区域获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据。
405:将待恢复数据进行恢复,得到已恢复数据。
406:将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性。
需要说明的是,上述实施例所提供方法400中的步骤的具体实施方式在前文已经详细阐述过了,此处就不再赘述。
此外,执行方法400的数据库服务器可以是独立的数据库服务器,也可以是从属于其他数据库服务器的数据库备份服务器。
图8为本申请又一示例性实施例提供的备份数据的校验装置的结构框架示意图。该装置800可以应用于服务器中,该装置800包括确定模块801、获取模块802以及存储模块803,以下针对各个模块的功能进行详细的阐述:
确定模块801,用于确定数据库中待备份数据对应的备份时间段。
获取模块802,用于在对待备份数据进行备份的过程中,通过隔离数据库中备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据。
存储模块803,用于将库表信息以及待备份数据对应的已备份数据存储至预置存储区域中。
在一些实例中,获取模块802:可以根据可重读事务隔离级别,将截止时间点对应的数据库中的数据进行隔离,并获取隔离后的数据的库表信息;还可以通过对对应的数据进行加锁,获取到隔离后的数据。
在一些实例中,获取模块802,用于将隔离后的数据作为待备份数据;确定模块801,用于确定待备份数据的第一校验信息,并将第一校验信息存储至已备份数据所在的预置存储区域中。
在一些实例中,获取模块802,用于根据可重读事务隔离级别,获取待备份数据。
在一些实例中,待备份数据是通过数据表存储的数据;其中,确定模块801,包括:计算单元,用于针对每个数据表,计算每个数据表中待备份数据的第一校验信息;存储单元,用于将第一校验信息以及对应的数据表存储至已备份数据所在的预置存储区域中。
在一些实例中,该装置800还包括:备份模块,用于对待备份数据进行备份,得到至少一份已备份数据;确定模块801:用于确定每份已备份数据所在文件的第二校验信息以及文件大小;存储模块803:用于将第二校验信息以及对应的文件大小数值存储至已备份数据所在的预置存储区域中。
在一些实例中,确定模块801:用于确定至少一份已备份数据所在文件的第三校验信息以及文件大小;存储模块803,用于将第三校验信息以及对应的文件大小存储至已备份数据所在的预置存储区域中。
在一些实例中,备份模块,用于对待备份数据进行备份,得到至少一份已备份数据;该装置800还包括:划分模块,用于根据预置存储区域中的数据块的大小,划分至少一份已备份数据,生成多个划分后的至少一份已备份数据;确定模块801,用于确定划分后的至少一份已备份数据的第四校验信息;存储模块803,用于将第四校验信息与对应的划分后的至少一份已备份数据存储至对应的数据块中。
图9为本申请又一示例性实施例提供的又一种备份数据的校验装置的结构框架示意图。该装置900可以应用于服务器中,该装置900包括:获取模块901、恢复模块902以及比较模块903,以下针对各个模块的功能进行详细的阐述:
获取模块901,用于从预置存储区域获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据。
恢复模块902,用于将待恢复数据进行恢复,得到已恢复数据。
比较模块903,用于将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性,待备份数据与备份时间段对应。
在一些实例中,获取模块901,用于从预置存储区域获取针对数据表中的已备份数据的第一校验信息;该装置900还包括:确定模块,用于针对已恢复数据中的每个数据表,确定每个数据表中的已恢复数据的第一校验信息;比较模块903,用于将获取到的第一校验信息与确定的第一校验信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性。
在一些实例中,获取模块901,用于获取备份时间段后的数据操作日志,该数据操作日志记录了在备份时间段后操作待备份数据的行为数据;该装置900还包括:操作模块,用于根据数据操作日志,对已恢复数据进行操作;验证模块,用于若接收到数据操作日志的报错数据,则验证已恢复数据与至少一份已备份数据对应的待备份数据不一致。
在一些实例中,获取模块901,用于从预置存储区域获取每份已备份数据所在文件的第二校验信息以及文件大小;确定模块,用于确定每份已备份数据所在文件的第二校验信息以及文件大小;比较模块903,用于将获取到的第二校验信息与确定的第二校验信息进行比较,将获取到的文件大小与确定的文件大小进行比较,确定获取到的每份已备份数据是否完整。
在一些实例中,获取模块901,用于从预置存储区域获取至少一份已备份数据所在文件的第三校验信息以及文件大小;确定模块,用于确定至少一份已备份数据所在文件的第三校验信息以及文件大小;比较模块903,用于将获取到的第三校验信息与确定的第三校验信息进行比较,将获取到的文件大小与确定的文件大小进行比较,确定获取到的至少一份已备份数据是否完整。
在一些实例中,获取模块901,用于从预置存储区域中获取被数据块划分后的至少一份已备份数据;从预置存储区域中获取划分后的至少一份已备份数据的第四校验信息;确定模块,用于确定划分后的至少一份已备份数据的第四校验信息;比较模块903,用于将获取到的第四校验信息与确定的第四校验信息进行比较,确定获取到的至少一份已备份数据是否完整。
图10为本申请又一示例性实施例提供的又一种备份数据的校验装置的结构框架示意图。该装置1000可以应用于服务器中,该装置1000包括:确定模块1001、获取模块1002、存储模块1003、恢复模块1004以及比较模块1005,以下针对各个模块的功能进行详细的阐述:
确定模块1001,用于确定数据库中待备份数据对应的备份时间段。
获取模块1002,用于在对待备份数据进行备份的过程中,通过隔离数据库中备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据。
存储模块1003,用于将库表信息以及待备份数据对应的已备份数据存储至预置存储区域中。
获取模块1002,用于从预置存储区域获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据。
恢复模块1004,用于将待恢复数据进行恢复,得到已恢复数据。
比较模块1005,用于将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性。
以上描述了图8所示的校验装置800的内部功能和结构,在一个可能的设计中,图8所示的校验装置800的结构可实现为服务器,如图11所示,该服务器1100可以包括:存储器1101、处理器1102以及通信组件1103;
存储器1101,用于存储计算机程序;
处理器1102,用于执行计算机程序,以用于:
确定数据库中待备份数据对应的备份时间段;
在对待备份数据进行备份的过程中,通过隔离数据库中备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据;
通信组件1103,用于将库表信息以及待备份数据对应的已备份数据存储至预置存储区域中。
在一些实例中,处理器1102,具体用于:可以根据可重读事务隔离级别,将截止时间点对应的数据库中的数据进行隔离,并获取隔离后的数据的库表信息;还可以通过对对应的数据进行加锁,获取到隔离后的数据。
在一些实例中,处理器1102,具体用于:将隔离后的数据作为待备份数据;确定待备份数据的第一校验信息,并将第一校验信息存储至已备份数据所在的预置存储区域中。
在一些实例中,处理器1102,具体用于:根据可重读事务隔离级别,获取待备份数据。
在一些实例中,待备份数据是通过数据表存储的数据;其中,处理器1102,具体用于:针对每个数据表,计算每个数据表中待备份数据的第一校验信息;将第一校验信息以及对应的数据表存储至已备份数据所在的预置存储区域中。
在一些实例中,处理器1102,还用于:对待备份数据进行备份,得到至少一份已备份数据;处理器1102,具体用于:确定每份已备份数据所在文件的第二校验信息以及文件大小;将第二校验信息以及对应的文件大小数值存储至已备份数据所在的预置存储区域中。
在一些实例中,处理器1102,具体用于:确定至少一份已备份数据所在文件的第三校验信息以及文件大小;将第三校验信息以及对应的文件大小存储至已备份数据所在的预置存储区域中。
在一些实例中,处理器1102,具体用于:对待备份数据进行备份,得到至少一份已备份数据;处理器1102,还用于:根据预置存储区域中的数据块的大小,划分至少一份已备份数据,生成多个划分后的至少一份已备份数据;处理器1102,具体用于:确定划分后的至少一份已备份数据的第四校验信息;将第四校验信息与对应的划分后的至少一份已备份数据存储至对应的数据块中。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图2方法实施例中备份数据的校验方法的步骤。
以上描述了图9所示的校验装置900的内部功能和结构,在一个可能的设计中,图9所示的校验装置900的结构可实现为服务器,如图12所示,该服务器1200可以包括:存储器1201、处理器1202以及通信组件1203;
存储器1201,用于存储计算机程序;
通信组件1203,用于从预置存储区域获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据;
处理器1202,用于执行计算机程序,以用于:
将待恢复数据进行恢复,得到已恢复数据;
将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性,待备份数据与备份时间段对应。
在一些实例中,处理器1202,具体用于:从预置存储区域获取针对数据表中的已备份数据的第一校验信息;处理器1202,还用于:针对已恢复数据中的每个数据表,确定每个数据表中的已恢复数据的第一校验信息;处理器1202,具体用于:将获取到的第一校验信息与确定的第一校验信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性。
在一些实例中,处理器1202,具体用于:获取备份时间段后的数据操作日志,该数据操作日志记录了在备份时间段后操作待备份数据的行为数据;处理器1202,还用于:根据数据操作日志,对已恢复数据进行操作;若接收到数据操作日志的报错数据,则验证已恢复数据与至少一份已备份数据对应的待备份数据不一致。
在一些实例中,处理器1202,具体用于:从预置存储区域获取每份已备份数据所在文件的第二校验信息以及文件大小;确定每份已备份数据所在文件的第二校验信息以及文件大小;将获取到的第二校验信息与确定的第二校验信息进行比较,将获取到的文件大小与确定的文件大小进行比较,确定获取到的每份已备份数据是否完整。
在一些实例中,处理器1202,具体用于:从预置存储区域获取至少一份已备份数据所在文件的第三校验信息以及文件大小;确定至少一份已备份数据所在文件的第三校验信息以及文件大小;将获取到的第三校验信息与确定的第三校验信息进行比较,将获取到的文件大小与确定的文件大小进行比较,确定获取到的至少一份已备份数据是否完整。
在一些实例中,处理器1202,具体用于:从预置存储区域中获取被数据块划分后的至少一份已备份数据;从预置存储区域中获取划分后的至少一份已备份数据的第四校验信息;确定划分后的至少一份已备份数据的第四校验信息;将获取到的第四校验信息与确定的第四校验信息进行比较,确定获取到的至少一份已备份数据是否完整。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图3方法实施例中备份数据的校验方法的步骤。
以上描述了图10所示的校验装置1000的内部功能和结构,在一个可能的设计中,图10所示的校验装置1000的结构可实现为服务器,如图13所示,该服务器1300可以包括:存储器1301、处理器1302以及通信组件1303;
存储器1301,用于存储计算机程序;
处理器1302,用于执行计算机程序,以用于:
确定数据库中待备份数据对应的备份时间段;
在对待备份数据进行备份的过程中,通过隔离数据库中备份时间段对应的数据,获取隔离后的数据对应的库表信息,其中,隔离后的数据是指数据库在待备份时间段的截止时间点记录到的对应数据;
通信组件1303,用于;将库表信息以及待备份数据对应的已备份数据存储至预置存储区域中;
从预置存储区域获取至少一份已备份数据以及至少一份已备份数据对应的库表信息,并将至少一份已备份数据作为待恢复数据;
处理器1302,用于将待恢复数据进行恢复,得到已恢复数据;
将获取到的库表信息与已恢复数据中的库表信息进行比较,验证已恢复数据与至少一份已备份数据对应的待备份数据的一致性。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图4方法实施例中备份数据的校验方法的步骤。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202、203等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程多媒体数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程多媒体数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程多媒体数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程多媒体数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。