数据校验方法、装置和计算机可读存储介质与流程

文档序号:20838715发布日期:2020-05-22 17:12阅读:116来源:国知局
本申请涉及通信
技术领域
:,具体涉及一种数据校验方法、装置和计算机可读存储介质。
背景技术
::由于信息时代的到来,数据量的急速增长使得数据库的应用也越来越广泛,为了保障数据的安全性,通常将主数据库中所存储的数据备份到从数据库中,此时,则需要校验主、从数据库中的数据是否一致。目前,主从数据库的数据校验通常是通过记录主数据库上的操作语句,然后在从数据库上执行相同的操作语句,基于对主、从数据库的操作结果的比较来完成数据的校验。然而,发明人在实际实践中发现,该方法由于记录的操作语句容易受到其他因素影响而导致无法校验,例如,当操作语句中存在时间因素时,可能导致主从数据库的操作结果不一致,进而无法校验数据,降低了数据校验的准确性。技术实现要素:本申请实施例提供了一种数据校验方法、装置和计算机可读存储介质,可以提高数据校验的准确性。本申请实施例提供了一种数据校验方法,包括:从主数据库中获取当前位点待校验的第一数据表,所述主数据库中包括多个位点对应的第一数据表;对当前位点的第一数据表进行锁定,得到锁定信息,所述锁定信息包括锁定后第一数据表;对所述锁定后第一数据表进行校验信息计算,得到当前位点所述第一数据表的第一校验信息;对所述主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,所述从数据库中的第二数据表与所述第一数据表相对应;对所述锁定后第二数据表进行校验信息计算,得到当前位点所述第二数据表的第二校验信息;将所述第一校验信息与所述第二校验信息进行对比,得到所述第一数据表的数据校验结果。相应的,本申请实施例还提供了一种数据校验装置,包括:获取单元,用于从主数据库中获取当前位点待校验的第一数据表,所述主数据库中包括多个位点对应的第一数据表;第一锁定单元,用于对当前位点的第一数据表进行锁定,得到锁定信息,所述锁定信息包括锁定后第一数据表;第一计算单元,用于对所述锁定后第一数据表进行校验信息计算,得到当前位点所述第一数据表的第一校验信息;第二锁定单元,用于对所述主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,所述从数据库中的第二数据表与所述第一数据表相对应;第二计算单元,用于对所述锁定后第二数据表进行校验信息计算,得到当前位点所述第二数据表的第二校验信息;校验单元,用于将所述第一校验信息与所述第二校验信息进行对比,得到所述第一数据表的数据校验结果。可选的,在一些实施例中,所述锁定信息还包括锁定日志信息,所述锁定日志信息包括数据库库名、数据表表名;所述第二锁定单元具体可以用于:基于所述数据库库名确定所述主数据库对应的从数据库;根据所述数据表表名从所述从数据库中确定与所述第一数据表相对应的第二数据表;对所述第二数据表进行锁定。可选的,在一些实施例中,所述数据校验装置还包括记录计算单元,所述记录计算单元具体可以用于:基于所述第一数据表中的每条记录进行校验记录计算,得到所述第一数据表的每条记录对应的记录校验信息;将所述记录校验信息添加至所述第一数据表中;根据所述记录校验信息确定对应的信息访问索引;所述第一计算单元还可以包括索引计算子单元,所述索引计算子单元可以用于:根据所述信息访问索引对所述锁定后第一数据表进行校验信息计算。可选的,在一些实施例中,所述第一计算单元还可以包括索引计算子单元,所述索引计算子单元具体可以用于:根据所述信息访问索引在所述锁定后第一数据表中进行查询,得到所述锁定后第一数据表的每条记录对应的记录校验信息;基于所述记录校验信息进行校验信息计算,得到所述第一数据表的第一校验信息。可选的,在一些实施例中,所述记录计算单元还可以包括更新子单元,所述更新子单元具体可以用于:获取所述第一数据表的每条记录对应的修改信息;根据所述修改信息对所述记录校验信息进行更新。可选的,在一些实施例中,所述数据校验装置还可以包括数据同步单元,所述数据同步单元具体可以用于:从主数据库中获取所述第一数据表;基于所述第一数据表在从数据库中进行数据同步操作,得到所述第二数据表。可选的,在一些实施例中,所述校验信息包括校验和;所述校验单元具体可以用于:根据所述第一校验信息获取所述第一数据表的校验和;根据所述第二校验信息获取所述第二数据表的校验和;将所述第一数据表的校验和与所述第二数据表的校验和进行对比,得到所述第一数据表的数据校验结果。可选的,在一些实施例中,所述数据校验装置还可以包括区块链存储单元,所述区块链存储单元具体可以用于:将所述第一数据表的数据校验结果存储至区块链中。相应的,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有指令,所述指令被处理器执行时实现本申请实施例任一提供的数据校验方法中的步骤。相应的,本申请实施例还提供了一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本申请实施例任一提供的数据校验方法中的步骤。本申请实施例可以从主数据库中获取当前位点待校验的第一数据表,所述主数据库中包括多个位点对应的第一数据表;对当前位点的第一数据表进行锁定,得到锁定信息,所述锁定信息包括锁定后第一数据表;对所述锁定后第一数据表进行校验信息计算,得到当前位点所述第一数据表的第一校验信息;对所述主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,所述从数据库中的第二数据表与所述第一数据表相对应;对所述锁定后第二数据表进行校验信息计算,得到当前位点所述第二数据表的第二校验信息;将所述第一校验信息与所述第二校验信息进行对比,得到所述第一数据表的数据校验结果,由于本申请实施例可以对当前位点主、从数据库中待校验的数据表进行锁定后,再基于锁定后的数据表得到校验信息,然后可以根据校验信息的对比结果得到数据表校验结果,可以有效地提高数据校验的准确性。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的数据校验方法的流程示意图。图2是本申请实施例提供的数据校验方法的又一流程示意图;图3是本申请实施例提供的数据校验方法中主节点的处理流程示意图;图4是本申请实施例提供的数据校验方法中从节点的处理流程示意图;图5是本申请实施例提供的数据校验装置的一种结构示意图;图6是本申请实施例提供的数据校验装置的又一种结构示意图;图7是本申请实施例提供的数据校验装置的另一种结构示意图;图8是本申请实施例提供的数据校验装置的另一种结构示意图;图9是本申请实施例提供的数据校验装置的另一种结构示意图;图10是本申请实施例提供的数据校验装置的另一种结构示意图;图11是本申请实施例提供的计算机设备的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请实施例提供了一种数据校验方法和装置。其中,该数据校验装置具体可以集成在服务器中,该服务器可以包括后台服务器,等等。例如,以该数据校验装置具体集成在服务器中为例,该服务器可以从主数据库中获取当前位点待校验的第一数据表,该主数据库中包括多个位点对应的第一数据表;对当前位点的第一数据表进行锁定,得到锁定信息,该锁定信息包括锁定后第一数据表;对该锁定后第一数据表进行校验信息计算,得到当前位点该第一数据表的第一校验信息;对该主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,该从数据库中的第二数据表与该第一数据表相对应;对该锁定后第二数据表进行校验信息计算,得到当前位点该第二数据表的第二校验信息;将该第一校验信息与该第二校验信息进行对比,得到该第一数据表的数据校验结果。以下分别进行详细说明。需说明的是,以下实施例描述顺序不作为对实施例优选顺序的限定。在一些实施例中,本申请实施例将从数据校验装置的角度进行描述,其中该数据校验装置具体可以集成在服务器中。如图1所示,如图1所示,提供了一种数据校验方法,该数据校验方法可以由服务器执行,具体流程可以如下:101、从主数据库中获取当前位点待校验的第一数据表,该主数据库中包括多个位点对应的第一数据表。其中,主数据库可以有多种表现形式,例如,在一些实施例中,主数据库可以为数据库服务器群的一个节点。譬如,可以是数据库服务器群的主节点。又例如,在一些实施例中,可以是一个数据库。其中,位点可以用于表示数据表所处于的位置状态。位点可以有多种表现形式,例如,在一些实施例中,位点可以是时间节点。又例如,在一些实施例中,位点可以为某一条数据在数据表中所处的位置节点。又例如,在一些实施例中,位点还可以为时间节点与位置节点的结合。具体可以根据实际需求进行设置。比如,该多个位点对应的第一数据表可以是多个时间节点对应的第一数据表,可以表示该第一数据表处于动态更新的状态,其中,位点是指时间节点。又比如,该多个位点对应的第一数据表可以是数据表中多条数据处于不同位置,可以表示该第一数据表一直有数据在增加、删除、修改,也可以表示该第一数据表是处于动态更新的状态,其中,位点是指每条数据所处在的未知节点。在一些实施例中,当从主数据库中获取当前位点待校验的第一数据表之前,为了提高获取该第一数据表的校验信息的速度,还可以基于该第一数据表中的每条记录进行计算,得到每条记录对应的记录校验信息,并且确定每条校验记录对应的索引,具体可以包括:基于该第一数据表中的每条记录进行校验记录计算,得到该第一数据表的每条记录对应的记录校验信息;将该记录校验信息添加至该第一数据表中;根据该记录校验信息确定对应的信息访问索引;对该锁定后第一数据表进行校验信息计算,包括:根据该信息访问索引对该锁定后第一数据表进行校验信息计算。其中,每条记录的表现形式可以有多种。例如,可以是该第一数据表中的每行数据。又例如,可以是该第一数据表中的每列数据。还例如,可以是将该第一数据表中的数据划分为多部分数据,则每条记录可以是其中的一部分数据,具体形式可以根据实际需求进行变化。其中,基于该第一数据表中的每条记录进行校验记录计算的方式可以有很多种。例如,可以是基于该第一数据表中的每行数据进行计算校验和(checksum)。又例如,可以是基于该第一数据表中的每列数据进行计算checksum。其中,计算checksum的方式也可以有很多种。例如,可以基于循环冗余校验(cyclicredundancycheck,crc)进行计算获取校验和。譬如,可以是基于crc-16(一种crc版本的计算方式)进行计算获取校验和。又譬如,可以基于crc-32进行计算获取校验和,比如,在一些实施例中,可以是根据该第一数据表中的每行数据内容,采用crc-32的方式计算获取校验和。又比如,在一些实施例中,可以是根据该第一数据表中的每部分数据内容,采用crc-16的方式计算获取校验和。其中,将该记录校验信息添加至该第一数据表中的方式可以有多种。例如,可以是通过增加列的方式来添加。譬如,可以是在该第一数据表中增加一个用于记录每行数据校验和的crc列。其中,为了减少对用户数据的侵入,该crc列可以是隐藏的,只有当需要使用到校验和的时候才能够获取;该crc列也可以是不隐藏的。具体可以根据实际需求进行设置。又例如,可以是通过增加行的方式来添加。譬如,可以是在该第一数据表中增加一个用于记录每列数据校验和的crc行。其中,在一些实施例中,为了提高对该记录校验信息的访问效率,还可以为该记录校验信息创建索引,具体可以包括:根据该记录校验信息确定对应的信息访问索引。其中,索引可以是二级索引,二级索引也被称为非聚簇索引、辅助索引,二级索引可以在叶子节点中存储主键值,每次查找数据时,根据索引找到叶子节点中的主键值,根据主键值再到聚簇索引中得到完整的一行记录。比如,当在表中增加了一个用户记录每行数据校验和的隐藏crc列后,可以为该隐藏crc列创建二级索引。当需要使用到每行数据校验和时,可以根据该二级索引在该数据表中直接查找到该隐藏crc列,从而有效地提高了每行数据校验和的访问效率。其中,每行数据校验和可以是指记录校验信息。其中,在一些实施例中,为了降低数据库的计算压力,在基于该第一数据表中的每条记录进行校验记录计算之前,还可以对如何开启数据校验功能进行设置。例如,可以在数据库管理系统中设置开启数据校验功能的指令,当开发人员输入该指令时开启数据校验功能,再进行基于该第一数据表中的每条记录进行校验记录计算的步骤。比如,当开发人员在数据库管理系统中输入了开启数据校验功能的指令时,可以对其后创建的新数据表中的每行数据内容进行计算校验和,然后增加一个用于记录每行数据校验和的隐藏crc列。其中,在一些实施例中,为了保证数据校验的准确性,在数据表出现数据修改操作时,还需要更新每条记录对应的记录校验信息,具体可以包括:获取该第一数据表的每条记录对应的修改信息;根据该修改信息对该记录校验信息进行更新。其中,修改信息可以是数据修改操作。数据修改操作可以有多种表现形式。例如,可以是插入(insert)操作。又例如,可以是更新(update)操作。比如,当获取到该第一数据表出现insert、update等数据修改操作时,对每行数据对应的隐藏crc列进行更新。其中,数据修改操作可以指修改信息,记录校验信息可以是指每行数据对应的隐藏crc列。又比如,当获取到该第一数据表出现insert、update等数据修改操作时,对每部分数据对应的隐藏crc块进行更新。其中,数据修改操作可以指修改信息,记录校验信息可以是指每部分数据对应的隐藏crc块。由于基于第一数据表中的每条记录进行计算,可以先获取到每条记录对应的记录校验信息,可以提高计算该第一数据表对应的校验信息的效率,进而提高数据校验的效率。又由于,为记录校验信息确定了对应的信息访问索引,其中索引可以有效地提高访问效率,进而也提高了数据校验的效率。然后,可以为数据校验功能设置开启功能,可以有效地减轻数据库计算的压力。又由于,可以对每条记录对应的记录校验信息进行更新,有效地确保了数据校验的准确性。102、对当前位点的第一数据表进行锁定,得到锁定信息,该锁定信息包括锁定后第一数据表。其中,在一些实施例中,对当前位点的第一数据表进行锁定之前,还可以对数据校验任务的触发进行设置。例如,可以设置触发校验任务的指令,当开发人员输入该指令时,可以触发开启数据校验的任务。又例如,可以设置触发校验任务的功能键,当开发人员对该功能键进行操作时,可以触发开启数据校验的任务。触发方式可以根据实际需求进行设置。其中,对当前位点的第一数据表进行锁定的方式可以有多种。例如,在触发数据校验任务开启后,即根据该数据校验任务开启了数据校验的事务,并为该事务设置隔离级别,以保证在隔离级别下事务内读取到的数据始终都是一致的。又例如,可以为数据表上锁,在上锁期间表中的数据无法被更新。再例如,还可以在触发数据校验任务开启后,即根据该数据校验任务开启了数据校验的事务,并为该事务设置隔离级别,然后对数据表上锁,以保证事务内读取到的数据都是一直的,以及在上锁期间数据表的数据无法被更新。其中,隔离级别是数据库中一个事务必须与由其他事务进行的资源或数据更改相隔离的程度。该隔离级别可以有多种,例如,可以为读未提交(readuncommitted),该隔离级别下一个事务可以读取另一个未提交事务的数据。又例如,可以为读提交(readcommitted),该隔离级别下一个事务要等另一个事务提交后才能读取数据,等等。又例如,可以为重复读(repeatableread),该隔离级别在开始读取数据(事务开启)时不再允许修改操作。具体可以根据实际操作进行设置。其中,锁是一种协调多个进程或线程并发访问某一资源的机制,锁可以有多种,例如,可以有写锁(排他锁),即如果事务对数据加上排他锁后,则其他事务不能再对该数据加任何类型的封锁,获准排他锁的事务既能读数据,又能修改数据。又例如,可以有读锁,读锁(共享锁)是读取操作创建的锁,其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁,在上读锁期间表中的数据无法被更新。比如,在一些实施例中,当开发人员触发校验任务开启之后,可以为校验任务对应的事务设置重复读(repeatableread),由于该隔离级别在开始读取数据(事务开启)时不再允许修改操作,可以确保在该隔离级别下事务内读取到的数据都是始终一致的;然后,再为该第一数据表上读锁,在上读锁期间表中的数据无法被更新,只能够读取。其中,在一些实施例中,该锁定信息还可以包括锁定日志信息,该锁定日志信息具体可以是表示当前位点的日志信息。该锁定日志信息可以有多种表现方式。比如,该锁定日志信息可以为二进制日志(binarylog,binlog)的形式,该二进制日志记录了当前位点信息。在一些实施例中,该锁定日志信息还可以包括当前位点待校验的数据库库名,以及待校验的数据表表名,以用于对查询主数据库对应的从数据库、以及第一数据表对应的第二数据表。在另一些实施例中,该锁定日志信息还可以包括当前数据校验任务的任务标识(id,identification),以保证数据校验的准确性。由于根据当前位点的数据校验任务上了隔离级别,保证在当前位点所读取到的第一数据表的数据内容都是一致的,有效地提高了数据校验的准确性。又由于对当前位点的第一数据表上了读锁,可以有效地确保数据表中的数据无法被更新,进一步提高了数据校验的准确性。103、对该锁定后第一数据表进行校验信息计算,得到当前位点该第一数据表的第一校验信息。其中,对该锁定后第一数据表进行校验信息计算的方式可以有多种。在一些实施例中,可以基于第一数据表的每条记录获取对应的记录校验信息,然后根据该记录校验信息对应的信息访问索引对该锁定后第一数据表进行校验信息计算,具体可以包括:根据该信息访问索引对该锁定后第一数据表进行校验信息计算。其中,根据该信息访问索引对该锁定后第一数据表进行校验信息计算的方式可以有多种。在一些实施例中,可以根据该信息访问索引在锁定后第一数据表进行查询得到每条记录对应的记录校验信息,然后再基于该记录校验信息计算第一数据表对应的校验信息。具体可以包括:根据该信息访问索引在该锁定后第一数据表中进行查询,得到该锁定后第一数据表的每条记录对应的记录校验信息;基于该记录校验信息进行校验信息计算,得到该第一数据表的第一校验信息。比如,在一些实施例中,可以根据每行数据对应的数据校验和列的二级索引在该锁定后的第一数据表进行查询并访问该数据校验和列,以获取每行数据对应的数据校验和。然后,基于该数据校验和采用crc-32的方式进行计算,得到该第一数据表的校验和。其中,二级索引可以是信息访问索引;每行数据可以是该锁定后第一数据表的每条记录;每行数据对应的数据校验和可以是每条记录对应的记录校验信息;第一数据表的校验和可以是该第一数据表的第一校验信息。其中,在一些实施例中,基于该记录校验信息进行校验信息计算时,可以在当前线程生成该计算任务,该计算任务可以在数据校验任务对应的事务中进行,当计算任务开始时,可以释放对该第一数据表所上的读锁。其中,在一些实施例中,当得到该第一数据表的第一校验信息之后,可以根据该第一校验信息生成二进制日志,以方便数据同步操作。在该二进制日志中可以记录该第一校验信息,还可以记录下数据库库名、数据表表名、以及数据校验任务的任务标识,以便能够保证在进行数据校验时的准确性。由于可以根据信息访问索引查询到每行记录对应的记录校验信息,然后再基于该记录校验信息计算该第一数据表的校验信息,可以有效地提高数据校验的速度。104、对该主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,该从数据库中的第二数据表与该第一数据表相对应。其中,在一些实施例中,对该主数据库对应的从数据库中的第二数据表进行锁定之前,还可以基于主从数据复制的过程,将主数据库上的数据同步到从数据库上,具体可以包括:从主数据库中获取该第一数据表;基于该第一数据表在从数据库中进行数据同步操作,得到该第二数据表。其中,数据同步操作的方式可以有很多种。例如,当处于mysql的使用场景时,可以是基于binlog的mysql主从复制方式。其中,基于binlog的mysql主从复制方式中,主数据库可以为数据库中的主节点,从数据库可以为数据库中的从节点。主节点将数据修改操作记录到二进制日志(binlog)中,从节点会在预设时间间隔内对主节点的二进制日志进行检查。当发现改变时,从节点开启i/othread(输入/输出线程),用于请求主节点的二进制事件。同时主节点向从节点发送二进制事件,二进制时间保存在从节点的本地中继日志(relay-log)中。然后从节点启动sql线程(sqlthread)读取本地中继日志后在本地回放(replay),使得主从节点数据一致。最后,i/othread和sqlthread将进入睡眠状态,等待下一次复制。比如,可以在数据库的主节点获取所要校验的第一数据表的数据修改操作记录,并记录在二进制日志中。当从节点基于该数据修改操作记录进行基于binlog的mysql主从复制后,可以在从节点中得到该第一数据表对应的第二数据表。在进行复制时,可以将主节点所要校验的第一数据表的数据内容,以及第一数据表中每行数据对应的数据校验和列复制到从节点的第二数据表中。其中,主节点可以是主数据库,从节点可以是从数据库。其中,对该主数据库对应的从数据库中的第二数据表进行锁定的方式可以有很多种。在一些实施例中,锁定信息还可以包括锁定日志信息,该锁定日志信息包括数据库库名、数据表表名,则该方式具体可以包括:基于该数据库库名确定该主数据库对应的从数据库;根据该数据表表名从该从数据库中确定与该第一数据表相对应的第二数据表;对该第二数据表进行锁定。比如,该锁定日志信息可以为二进制日志(binarylog,binlog)的形式,基于该二进制日志获取到了主数据库库名,则可以对应的确定该主数据对应的从数据,然后又根据二进制日志获取到了第一数据表的表名,则可以根据对应的在从数据库中确定对应的第二数据表。其中,对该第二数据表进行锁定的方式可以有多种。例如,在一些实施例中,在触发数据校验任务开启后,即根据该数据校验任务开启了数据校验的事务,并为该事务设置隔离级别,以保证在隔离级别下事务内读取到的数据始终都是一致的。又例如,可以为数据表上锁,在上锁期间表中的数据无法被更新。再例如,还可以在触发数据校验任务开启后,即根据该数据校验任务开启了数据校验的事务,并为该事务设置隔离级别,然后对数据表上锁,以保证事务内读取到的数据都是一直的,以及在上锁期间数据表的数据无法被更新。比如,当锁定日志信息为二进制日志时,记录了当前位点信息,则根据该当前位点信息,在相同的位点对从数据库对应的第二数据表进行锁定,锁定时可以对数据校验任务对应的事务设置重复读(repeatableread),由于该隔离级别在开始读取数据(事务开启)时不再允许修改操作,可以确保在该隔离级别下事务内读取到的数据都是始终一致的;然后,再为该第二数据表上读锁,在上读锁期间表中的数据无法被更新,只能够读取。由于可以基于mysql的主从复制方式将主数据库中的数据复制到从数据库中,可以有效地保证数据校验时的准确性。又由于,在相同位点对第二数据表进行了锁定,使得校验过程在同一位点进行,进一步提高了数据校验的准确性,使得数据校验更有说服力。105、对该锁定后第二数据表进行校验信息计算,得到当前位点该第二数据表的第二校验信息。其中,由于在进行数据同步操作时,第一数据表的数据内容以及记录校验信息也同步到了第二数据表,因此对该锁定后第二数据表进行校验信息计算,可以包括:根据该信息访问索引在该锁定后第二数据表中进行查询,得到该锁定后第二数据表的每条记录对应的记录校验信息;基于该记录校验信息进行校验信息计算,得到该第二数据表的第二校验信息。比如,在一些实施例中,可以根据每行数据对应的数据校验和列的二级索引在该锁定后的第二数据表进行查询并访问该数据校验和列,以获取每行数据对应的数据校验和。然后,基于该数据校验和采用crc-32的方式进行计算,得到该第二数据表的校验和。其中,二级索引可以是信息访问索引;每行数据可以是该锁定后第二数据表的每条记录;每行数据对应的数据校验和可以是每条记录对应的记录校验信息;第二数据表的校验和可以是该第二数据表的第一校验信息。其中,在一些实施例中,基于该记录校验信息进行校验信息计算时,可以在当前线程生成该计算任务,该计算任务可以在数据校验任务对应的事务中进行,当计算任务开始时,可以释放对该第二数据表所上的读锁。由于可以根据信息访问索引查询到每行记录对应的记录校验信息,然后再基于该记录校验信息计算该第二数据表的校验信息,可以有效地提高数据校验的速度。106、将该第一校验信息与该第二校验信息进行对比,得到该第一数据表的数据校验结果。其中,在一些实施例中,该校验信息包括校验和,将该第一校验信息与该第二校验信息进行对比的方式,具体可以包括:根据该第一校验信息获取该第一数据表的校验和;根据该第二校验信息获取该第二数据表的校验和;将该第一数据表的校验和与该第二数据表的校验和进行对比,得到该第一数据表的数据校验结果。其中,根据该第一校验信息获取该第一数据表的校验和的方法可以有很多种。例如,在一些实施例中,当得到该第一数据表的第一校验信息之后,可以根据该第一校验信息生成二进制日志,则可以根据该二进制日志获取到第一数据表的校验和。其中,根据该第二校验信息获取该第二数据表的校验和的方法可以有很多种。例如,在一些实施例中,对该锁定后第二数据表进行校验信息计算,得到当前位点该第二数据表的第二校验信息。由于该第二校验信息包括校验和,则可以根据该第二校验信息直接获取第二数据表的校验和。比如,在一些实施例中,可以在从数据库上回放根据第一数据表的校验信息生成的二进制日志,从而获取到第一数据表的校验和。又由于,在从数据库上进行计算得到了第二数据表的校验和,则对第一数据表的校验和与第二数据表的校验和进行对比,得到对比结果,该对比结果即为第一数据表的校验结果。其中,在一些实施例中,将该第一数据表的校验和与该第二数据表的校验和进行对比之后,还可以在数据库管理系统中设置校验结果展示指令,当开发人员触发该指令时可以展示校验结果。比如,当开发人员触发了校验结果展示指令时,则可以展示第一数据表的校验和与第二数据表的校验和,由于校验和比较直观,开发人员可以直接对比得到第一数据表的校验结果。在一些实施例中,当得到该第一数据表的数据校验结果之后,还包括:将该第一数据表的数据校验结果存储至区块链中。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。由此可得,本申请实施例可以从主数据库中获取当前位点待校验的第一数据表,所述主数据库中包括多个位点对应的第一数据表;对当前位点的第一数据表进行锁定,得到锁定信息,所述锁定信息包括锁定后第一数据表;对所述锁定后第一数据表进行校验信息计算,得到当前位点所述第一数据表的第一校验信息;对所述主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,所述从数据库中的第二数据表与所述第一数据表相对应;对所述锁定后第二数据表进行校验信息计算,得到当前位点所述第二数据表的第二校验信息;将所述第一校验信息与所述第二校验信息进行对比,得到所述第一数据表的数据校验结果,由于本申请实施例可以对当前位点主、从数据库中待校验的数据表进行锁定后,再基于锁定后的数据表得到校验信息,然后可以根据校验信息的对比结果得到数据表校验结果,可以有效地提高数据校验的准确性。以上是以数据校验装置为例来介绍本申请实施例的方法。根据以上实施例所描述的方法,以下将以该数据校验装置具体集成于服务器中为例作进一步详细说明,该服务器可以包括后台服务器等等。如图2所示,提供了一种数据校验方法,具体流程可以如下:201、服务器从主数据库中获取当前位点待校验的第一数据表,该主数据库中包括多个位点对应的第一数据表。在一些实施例中,当服务器从主数据库中获取当前位点待校验的第一数据表之前,为了提高获取该第一数据表的校验信息的速度,还可以基于该第一数据表中的每条记录进行计算,得到每条记录对应的记录校验信息,并且确定每条校验记录对应的索引,具体可以包括:基于该第一数据表中的每条记录进行校验记录计算,得到该第一数据表的每条记录对应的记录校验信息;将该记录校验信息添加至该第一数据表中;根据该记录校验信息确定对应的信息访问索引;对该锁定后第一数据表进行校验信息计算,包括:根据该信息访问索引对该锁定后第一数据表进行校验信息计算。其中,在一些实施例中,为了降低数据库的计算压力,在基于该第一数据表中的每条记录进行校验记录计算之前,还可以对如何开启数据校验功能进行设置。例如,可以在数据库管理系统中设置开启数据校验功能的指令,当开发人员输入该指令时开启数据校验功能,再进行基于该第一数据表中的每条记录进行校验记录计算的步骤。其中,在一些实施例中,为了保证数据校验的准确性,在数据表出现数据修改操作时,还需要更新每条记录对应的记录校验信息,具体可以包括:获取该第一数据表的每条记录对应的修改信息;根据该修改信息对该记录校验信息进行更新。比如,当开发人员在数据库管理系统中输入了开启数据校验功能的指令时,服务器可以对之后创建的新数据表中的每行数据内容进行计算校验和,然后增加一个用于记录每行数据校验和的隐藏crc列。其中,该新数据表可以是第一数据表。当获取到该第一数据表出现insert、update等数据修改操作时,对每行数据对应的隐藏crc列进行更新。然后,服务器从主数据库中获取到了当前位点待校验的第一数据表,该主数据库可以包括多个位点对应的第一数据表。202、服务器对当前位点的第一数据表进行锁定,得到锁定信息,该锁定信息包括锁定后第一数据表。其中,在一些实施例中,对当前位点的第一数据表进行锁定之前,还可以对数据校验任务的触发进行设置。例如,可以设置触发校验任务的指令,当开发人员输入该指令时,可以触发开启数据校验的任务。又例如,可以设置触发校验任务的功能键,当开发人员对该功能键进行操作时,可以触发开启数据校验的任务。触发方式可以根据实际需求进行设置。其中,在一些实施例中,该锁定信息还可以包括锁定日志信息,该锁定日志信息具体可以是表示当前位点的日志信息。该锁定日志信息可以有多种表现方式。比如,该锁定日志信息可以为二进制日志(binarylog,binlog)的形式,该二进制日志记录了当前位点信息。在一些实施例中,该锁定日志信息还可以包括当前位点的数据库库名,以及数据表表名,以用于对查询主数据库对应的从数据库、以及第一数据表对应的第二数据表。在另一些实施例中,该锁定日志信息还可以包括当前数据校验任务的任务标识(id,identification),以保证数据校验的准确性。比如,当开发人员触发校验任务开启之后,服务器对当前位点的第一数据表进行锁定,得到锁定后第一数据表,具体可以是为校验任务对应的事务设置重复读(repeatableread),由于该隔离级别在开始读取数据(事务开启)时不再允许修改操作,可以确保在该隔离级别下事务内读取到的数据都是始终一致的;然后,再为该第一数据表上读锁,在上读锁期间表中的数据无法被更新,只能够读取。其中,得到锁定后第一数据表之后,服务器还能够生成第一条校验二进制日志,该第一条校验二进制日志包括当前位点校验任务的任务标识、当前位点待校验的数据库库名、以及待校验的数据表表名。203、服务器对该锁定后第一数据表进行校验信息计算,得到当前位点该第一数据表的第一校验信息。其中,在一些实施例中,基于该记录校验信息进行校验信息计算时,可以在当前线程生成该计算任务,该计算任务可以在数据校验任务对应的事务中进行,当计算任务开始时,可以释放对该第一数据表所上的读锁。其中,在一些实施例中,当得到该第一数据表的第一校验信息之后,可以根据该第一校验信息生成二进制日志,以方便数据同步操作。在该二进制日志中可以记录该第一校验信息,还可以记录下数据库库名、数据表表名、以及数据校验任务的任务标识,以便能够保证在进行数据校验时的准确性。比如,服务器对该锁定后第一数据表进行校验信息计算,具体可以为服务器在当前线程可以生成基于数据校验和列计算数据表的校验和的任务。该任务可以根据数据校验和列的二级索引在该表进行查询并访问该数据校验和列,以获取每行数据对应的数据校验和,然后,服务器基于该数据校验和采用crc-32的方式进行计算,得到该第一数据表的校验和。其中,二级索引可以是信息访问索引;每行数据可以是该锁定后第一数据表的每条记录;每行数据对应的数据校验和可以是每条记录对应的记录校验信息;第一数据表的校验和可以是该第一数据表的第一校验信息。当计算开始时,可以释放该第一数据表的读锁。当计算完成之后,服务器可以生成第二条校验二进制日志,该二进制日志可以记录下该第一数据表的校验和、当前位点校验任务的任务标识、当前位点待校验的数据库库名、以及待校验的数据表表名。204、服务器对该主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,该从数据库中的第二数据表与该第一数据表相对应。其中,在一些实施例中,对该主数据库对应的从数据库中的第二数据表进行锁定之前,还可以基于主从数据复制的过程,将主数据库上的数据同步到从数据库上,具体可以包括:从主数据库中获取该第一数据表;基于该第一数据表在从数据库中进行数据同步操作,得到该第二数据表。比如,服务器在将主数据库上的数据同步到从数据上时,具体可以从主数据库获取所要校验的第一数据表的数据修改操作记录,并记录在二进制日志中。当从数据库基于该数据修改操作记录进行基于binlog的mysql主从复制后,可以在从数据库中得到该第一数据表对应的第二数据表。在进行复制时,可以将主数据库所要校验的第一数据表的数据内容,以及第一数据表中每行数据对应的数据校验和列复制到从数据库的第二数据表中。其中,对该主数据库对应的从数据库中的第二数据表进行锁定的方式可以有很多种。在一些实施例中,锁定信息还可以包括锁定日志信息,该锁定日志信息包括数据库库名、数据表表名,则该方式具体可以包括:基于该数据库库名确定该主数据库对应的从数据库;根据该数据表表名从该从数据库中确定与该第一数据表相对应的第二数据表;对该第二数据表进行锁定。比如,当服务器读取了第一条校验二进制日志后,可以根据该二进制日志获取到当前位点、当前位点校验任务的任务标识、当前位点待校验的数据库库名、以及待校验的数据表表名等信息。然后,服务器可以据此在相同的位点对从数据库对应的第二数据表进行锁定,锁定时可以对数据校验任务对应的事务设置重复读(repeatableread),由于该隔离级别在开始读取数据(事务开启)时不再允许修改操作,可以确保在该隔离级别下事务内读取到的数据都是始终一致的;然后,再为该第二数据表上读锁,在上读锁期间表中的数据无法被更新,只能够读取。205、服务器对该锁定后第二数据表进行校验信息计算,得到当前位点该第二数据表的第二校验信息。比如,服务器可以根据每行数据对应的数据校验和列的二级索引在该锁定后的第二数据表进行查询并访问该数据校验和列,以获取每行数据对应的数据校验和。然后,基于该数据校验和采用crc-32的方式进行计算,得到该第二数据表的校验和。其中,二级索引可以是信息访问索引;每行数据可以是该锁定后第二数据表的每条记录;每行数据对应的数据校验和可以是每条记录对应的记录校验信息;第二数据表的校验和可以是该第二数据表的第一校验信息。206、服务器将该第一校验信息与该第二校验信息进行对比,得到该第一数据表的数据校验结果。其中,在一些实施例中,该校验信息包括校验和,将该第一校验信息与该第二校验信息进行对比的方式,具体可以包括:根据该第一校验信息获取该第一数据表的校验和;根据该第二校验信息获取该第二数据表的校验和;将该第一数据表的校验和与该第二数据表的校验和进行对比,得到该第一数据表的数据校验结果。比如,服务器可以在从数据库上回放第二条校验二进制日志,获取到第一数据表的校验和。又由于,服务器在从数据库上进行计算得到了第二数据表的校验和,则对第一数据表的校验和与第二数据表的校验和进行对比,得到对比结果,该对比结果即为第一数据表的校验结果。其中,在一些实施例中,将该第一数据表的校验和与该第二数据表的校验和进行对比之后,还可以在数据库管理系统中设置校验结果展示指令,当开发人员触发该指令时可以展示校验结果。比如,当开发人员触发了校验结果展示指令时,则可以展示第一数据表的校验和与第二数据表的校验和,由于校验和比较直观,开发人员可以直接对比得到第一数据表的校验结果。在一些实施例中,当得到该第一数据表的数据校验结果之后,还包括:将该第一数据表的数据校验结果存储至区块链中。由此可得,本申请实施例中,服务器可以从主数据库中获取当前位点待校验的第一数据表,所述主数据库中包括多个位点对应的第一数据表;服务器对当前位点的第一数据表进行锁定,得到锁定信息,所述锁定信息包括锁定后第一数据表;服务器对所述锁定后第一数据表进行校验信息计算,得到当前位点所述第一数据表的第一校验信息;服务器对所述主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,所述从数据库中的第二数据表与所述第一数据表相对应;服务器对所述锁定后第二数据表进行校验信息计算,得到当前位点所述第二数据表的第二校验信息;将所述第一校验信息与所述第二校验信息进行对比,服务器得到所述第一数据表的数据校验结果,由于本申请实施例可以对当前位点主、从数据库中待校验的数据表进行锁定后,再基于锁定后的数据表得到校验信息,然后可以根据校验信息的对比结果得到数据表校验结果,可以有效地提高数据校验的准确性。下面以该数据校验装置在数据库管理系统中的应用为例对本方法进行介绍。其中,该数据库管理系统可以包括主数据库与从数据库,其中,从数据库对主数据库中的数据内容进行复制。其中,该数据库可以有多种表现形式,比如,该数据库可以为redis(remotedictionaryserver)数据库,又比如,该数据库可以为sql(structuredquerylanguage)数据库,等等,具体可以根据实际需求进行设置。其中,该数据库管理系统可以有多种表现形式,例如,该数据库管理系统可以为mysql,mysql是一种关系数据库管理系统(rdbms,relationaldatabasemanagementsystem),又例如,该数据库管理系统可以为postgresql,postgresql是一种对象关系数据库管理系统(ordbms,objectrelationaldatabasemanagementsystem),等等,具体可以根据实际需求进行设置。其中,从数据库对主数据库中的数据内容进行复制的方式可以有很多种,例如,当该数据库管理系统为mysql时,可以采用mysql的主从节点复制(replication)进行节点数据内容之间的复制。在一些实施例中,当该数据库管理系统为mysql时,相应的主数据库与从数据库可以为mysql数据库服务器群中的主节点(master)与从节点(slave),其中采用mysql的主从节点复制的方式复制数据。下面以该数据库管理系统为mysql数据库,相应的主数据库与从数据库可以为mysql数据库服务器群中的主节点(master)与从节点(slave),通过主从节点的处理步骤对本方案进行介绍。其中,如图3所示,主节点的处理步骤可以如下:1、在开发人员开启数据校验功能后,主节点对其后创建的新表记录每行数据的校验和(crc,checksum)。其中,记录每行数据的校验和的方式可以有多种,例如,在一些实施例中,可以在其后创建的新表中增加一列隐藏校验和(crc,checksum)列,该隐藏crc列可以用于记录每行数据的校验和,由于该crc列位于其后创建的新表中,并且处于隐藏状态,对于用户来说是不可见的,可以在不入侵用户数据库的情况下基于该隐藏crc列进行数据校验;又例如,可以在其后创建的新表中增加一列校验和列,该校验和列可以是不隐藏的,该校验和列可以用于记录每行数据的校验和,等等,具体记录的方式可以根据实际需求进行设置。其中,每行数据的校验和可以基于每行数据的数据内容获取,例如,表中的某行数据在隐藏crc列所对应的校验和可以基于该行数据的数据内容进行计算获取,其中,该计算方式可以有很多种,例如,可以基于crc-16进行计算获取校验和,又例如,可以基于crc-32进行计算获取校验和,具体的计算方式可以根据实际需要进行设置。其中,在一些实施例中,为了能够准确地验证主从数据的一致性,当该表出现insert(插入)、update(更新)等数据修改操作时,可以对相应的crc列进行更新。由于可以在表中添加用于记录每行数据校验和的隐藏crc列,可以有效地减少在计算所要校验的数据表全表的checksum值时全表扫描io(input/output,输入/输出)开销和计算时间开销,进而有效地提高了主从数据校验的速率。2、主节点可以对记录每行数据校验和的隐藏校验和(crc)列创建二级索引。当对隐藏crc列创建二级索引后,在计算全表的checksum时可以基于该二级索引在主节点数据库中直接查找到该隐藏crc列,减少在全表进行检索的开销,并且能够有效地提高对该隐藏crc列的访问效率。3、基于开发人员的触发操作,主节点开启数据校验任务。其中,该触发操作可以有多种形式,例如,开发人员可以在数据库管理系统中增加触发校验任务的语法,开发人员可以通过在系统的可视化界面中输入该新增触发校验任务的语法来进行触发操作。其中,该新增的触发校验任务的语法可以有多种表现形式。例如,可以为selectchecksum_table(mydb.test)),该新增语法具体可以根据实际需求进行设置。4、主节点对数据库事务设置隔离级别。其中,数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位;事务由事务开始与事务结束之间执行的全部数据库操作组成;数据库事务具有以下几个特性:原子性(atomicity);一致性(consistency);夺隔离性(isolation);夺持久性(durability)。其中,隔离级别是数据库中一个事务必须与由其他事务进行的资源或数据更改相隔离的程度,该隔离级别可以有多种,例如,可以为读未提交(readuncommitted),该隔离级别下一个事务可以读取另一个未提交事务的数据,又例如,可以为读提交(readcommitted),该隔离级别下一个事务要等另一个事务提交后才能读取数据,等等,具体可以根据实际操作进行设置。比如,在一些实施例中,主节点可以对数据库事务设置重复读(repeatableread),由于该隔离级别在开始读取数据(事务开启)时不再允许修改操作,可以确保在该隔离级别下事务内读取到的数据都是始终一致的。比如,当主节点开启数据校验任务后,即根据该数据校验任务开启了对应的数据校验事务,然后对该事务设置重复读(repeatableread)的隔离级别,可以保证在该隔离级别下该事务内读取到的数据都是始终一致的。5、主节点对所要校验的数据表上读锁。其中,锁是一种协调多个进程或线程并发访问某一资源的机制,锁可以有多种,例如,可以有写锁(排他锁),即如果事务对数据加上排他锁后,则其他事务不能再对该数据加任何类型的封锁,获准排他锁的事务既能读数据,又能修改数据。又例如,可以有读锁,读锁(共享锁)是读取操作创建的锁,其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁,在上读锁期间表中的数据无法被更新。比如,在一些实施例中,主节点对所要校验的数据表上读锁,读锁(共享锁)是读取操作创建的锁,其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁,在上读锁期间表中的数据无法被更新。由于数据库是动态的,通过对数据库事务设置隔离级别以及对表上锁,可以有效地保证同一位点对所要校验的数据表进行数据校验,防止出现由于主、从节点在进行校验时都处于动态变化而导致所校验的位点从一开始就不一致的情况,这样可以有效地提高数据校验的准确性。6、主节点生成第一条校验二进制日志(binlog)。其中,该第一条校验二进制日志用于记录数据被校验时的位点,该校验binlog中可以记录多种内容,例如,在一些实施例中,该校验binlog可以记录校验任务标识(id,identification),所校验的数据库名,所校验的数据表名。其中,该校验binlog文件的格式可以有多种,具体可以根据mysql主从复制的方式确定,其中,mysql主从复制可以有多种方式,例如,当mysql主从复制为基于sql语句的复制(statement-basedreplication,sbr)时,对应的校验binlog文件的格式可以为statement;又例如,当mysql主从复制为基于行的复制(row-basedreplication,rbr)时,对应的校验binlog文件的格式可以为row(行);再例如,当mysql主从复制为混合模式复制(mixed-basedreplication,mbr)时,对应的校验binlog文件的格式可以为mixed(混合)。具体可以根据实际需求对校验binlog文件的格式进行设置。7、主节点在当前连接处理线程生成计算任务,该计算任务可以为基于隐藏crc列计算所要校验的数据表的checksum。其中,该计算任务在实现以上步骤后所设置的数据库事务中进行,当开启计算任务后,即可释放实现以上步骤时获取的读锁。在一些实施例中,该计算任务的流程可以有多种方式,例如,可以根据二级索引在所要校验的数据表中查询到该隐藏crc列;然后基于该隐藏crc列计算所要校验的数据表全表的checksum,其中计算的方式可以有多种,例如可以基于crc-32的方式来计算,等等,具体可以根据实际需求进行设置。其中,在一些实施例中,该计算任务的处理方式可以有多种,例如,可以为当连接处理线程接到数据校验的命令时,由该线程生成所要校验的数据表全表checksum的计算任务并进行计算的同步计算方案,又例如,可以为当连接处理线程接到数据校验的命令时,由连接处理线程生成该计算所要检验的数据表全表checksum任务,后台有一组工作线程专门执行该计算任务的异步计算方案。由于本方案在计算所要检验的数据表全表的checksum时,只需要读取隐藏crc列的值再进行计算即可,可以有效地减少读取的时间,进而可以有效地提高校验的效率;又由于在该列上创建了二级索引,无需通过主键索引访问该隐藏crc列,可以有效地减少io开销。8、在计算完成后,主节点生成第二条校验二进制日志(binlog)。其中,该第二条检验binlog用于记录计算结果,该校验binlog中可以记录多种内容,例如,在一些实施例中,该校验binlog可以记录校验任务标识(id,identification)(与上述步骤中所记录的校验任务标识相同),所校验的数据库名,所校验的数据表名,以及所要校验的数据表全表的checksum。其中,如图4所示,从节点的处理步骤可以如下:1、基于二进制日志(binlog)的mysql主从复制方式将主节点上的数据同步到从节点上,该数据包括隐藏校验和(crc)列。其中,在基于二进制日志(binlog)的mysql主从复制方式中,主数据库可以为数据库中的主节点,从数据库可以为数据库中的从节点。主节点将数据修改操作记录到二进制日志(binlog)中,从节点会在预设时间间隔内对主节点的二进制日志进行检查。当发现改变时,从节点开启i/othread(输入/输出线程),用于请求主节点的二进制事件。同时主节点向从节点发送二进制事件,二进制时间保存在从节点的本地中继日志(relay-log)中。然后从节点启动sql线程(sqlthread)读取本地中继日志后在本地回放(replay),使得主从节点数据一致。最后,i/othread和sqlthread将进入睡眠状态,等待下一次复制。其中,基于binlog的mysql主从复制方式可以有多种,例如,可以为基于sql语句的复制(statement-basedreplication,sbr);又例如,可以为基于行的复制(row-basedreplication,rbr);再例如,可以为混合模式复制(mixed-basedreplication,mbr)。具体的主从复制方式可以根据实际需求进行设置。其中,该binlog的格式可以有多种,例如,可以为row格式;又例如,可以为statement格式,等等,本方案不限制binlog的格式,可以根据实际需求进行设置。由于以往进行主从数据校验时,需要记录主节点上的操作语句然后在从节点基于该操作语句进行操作,因此对binlog格式有严格要求,需要限制binlog的格式为statement,然而statement格式的binlog只记录了主节点上的操作语句,存在导致主从数据不一致的隐患,例如当主机上执行insertintotime_tableselectnow()的操作时,因为该操作语句与时间有关系,在从节点上执行相同语句时由于时间不同,其插入的内容必定与主节点不同,但是本方案中无需显示通过mysql语句计算crc的过程,因此对binlog格式无要求,从而避免了由于其他因素导致无法校验主从数据的问题,有效地提高了校验的准确性;并且对binlog格式无要求,可以有效地提高该数据校验方法的通用性。2、当回放到主节点传来的第一条校验binlog(二进制日志)时,在从节点上对数据库事务设置repeatableread(重复读)隔离级别,并获取所要检验的数据表的读锁。由于第一条检验binlog记录了数据被校验时的位点,当回放到该条校验binlog时,可以在从节点中基于该位点对该数据校验任务所对应的数据库事务设置repeatableread隔离级别,并且获取所要检验的数据表的读锁,使得从节点在同一位点进行数据的校验。3、从节点在当前连接处理线程生成计算任务,该计算任务可以为基于隐藏校验和(crc)列计算从节点中对应的所要校验的数据表的校验和(checksum)。其中,该计算任务在数据库事务中进行,当开启计算任务后,即可释放实现所要检验的数据表的读锁。4、从节点将计算结果存入内存中,当接到校验结果展示命令时,基于主节点传来的第二条校验binlog(二进制日志)将校验结果显示给用户。其中,该校验结果展示命令可以为开发人员在数据库管理系统中增加的校验结果展示命令的语法,其中,该语法可以有多种表现形式,例如,可以为showconsistencyresults(展示数据校验一致性校验结果),该语法可以根据实际需求进行设置。其中,将校验结果显示给用户的方式可以有多种,例如,在一些实施例中,可以基于主节点传来的第二条校验binlog将主节点的计算结果进行显示,然后再显示从节点的计算结果,由于计算结果一目了然,用户可以很容易地得到校验结果;又例如,当显示了主从节点的计算结果之后,可以由数据库管理系统对计算结果进行比较从而得到校验结果,并显示该校验结果给用户。具体可以根据实际需求进行设置。由于本方案中将主节点所要检验的数据表全表的checksum值通过校验binlog传给从节点,无需额外建表,可以减少对用户实例的入侵性,有效地减少用户实例的风险性。其中,在从节点回放到第一条校验binlog和第二条校验binlog时,并未在从节点上记录自身的binlog。在一些实施例中,当从节点接到由主节点传来的两条校验binlog时,也可以分别记录下自身的两条校验binlog,当该从节点是其他节点的“主节点”时,从真正的主节点发起校验操作则可以根据复制顺序进行连续的数据校验。由于本方案在所要检验的数据表中创建隐藏crc列来计算每行数据内容的checksum,相比于其他校验方案需要在相应数据库实例上创建用于记录checksum的表,可以做到不侵入用户数据库,有效地保证了用户数据库的安全性;并且本方案对binlog格式无限制,可以有效地提高该校验方案的通用性;进一步地,该方案中通过两条检验binlog确定主从节点上所要校验的数据的位点一致,可以主动、快速、准确地对主从数据进行校验,并且可以确保从节点数据可靠,降低了用户实例服务不可用的风险。为了便于更好的实施本申请实施例提供的数据校验方法,在一些实施例中还提供了一种数据校验装置,该数据校验装置可以适用于服务器。其中名词的含义与上述数据校验方法中相同,具体实现细节可以参考方法实施例中的说明。在一些实施例中,还提供了一种数据校验装置,该数据校验装置具体可以集成在服务器中,如图5所示,该数据校验装置可以包括获取单元301、第一锁定单元302、第一计算单元303、第二锁定单元304、第二计算单元305和校验单元306,具体如下:获取单元301,用于从主数据库中获取当前位点待校验的第一数据表,该主数据库中包括多个位点对应的第一数据表;第一锁定单元302,用于对当前位点的第一数据表进行锁定,得到锁定信息,该锁定信息包括锁定后第一数据表;第一计算单元303,用于对该锁定后第一数据表进行校验信息计算,得到当前位点该第一数据表的第一校验信息;第二锁定单元304,用于对该主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,该从数据库中的第二数据表与该第一数据表相对应;第二计算单元305,用于对该锁定后第二数据表进行校验信息计算,得到当前位点该第二数据表的第二校验信息;校验单元306,用于将该第一校验信息与该第二校验信息进行对比,得到该第一数据表的数据校验结果。可选的,在一些实施例中,该锁定信息还包括锁定日志信息,该锁定日志信息包括数据库库名、数据表表名;该第二锁定单元304具体可以用于:基于该数据库库名确定该主数据库对应的从数据库;根据该数据表表名从该从数据库中确定与该第一数据表相对应的第二数据表;对该第二数据表进行锁定。可选的,在一些实施例中,如图6所示,该数据校验装置还包括记录计算单元307,该记录计算单元307具体可以用于:基于该第一数据表中的每条记录进行校验记录计算,得到该第一数据表的每条记录对应的记录校验信息;将该记录校验信息添加至该第一数据表中;根据该记录校验信息确定对应的信息访问索引;该第一计算单元303还可以包括索引计算子单元3031,该索引计算子单元3031可以用于:根据该信息访问索引对该锁定后第一数据表进行校验信息计算。可选的,在一些实施例中,如图7所示,该第一计算单元303还可以包括索引计算子单元3031,该索引计算子单元3031具体可以用于:根据该信息访问索引在该锁定后第一数据表中进行查询,得到该锁定后第一数据表的每条记录对应的记录校验信息;基于该记录校验信息进行校验信息计算,得到该第一数据表的第一校验信息。可选的,在一些实施例中,如图8所示,该记录计算单元307还可以包括更新子单元3071,该更新子单元3071具体可以用于:获取该第一数据表的每条记录对应的修改信息;根据该修改信息对该记录校验信息进行更新。可选的,在一些实施例中,如图9所示,该数据校验装置还可以包括数据同步单元308,该数据同步单元308具体可以用于:从主数据库中获取该第一数据表;基于该第一数据表在从数据库中进行数据同步操作,得到该第二数据表。可选的,在一些实施例中,该校验信息包括校验和;该校验单元306具体可以用于:根据该第一校验信息获取该第一数据表的校验和;根据该第二校验信息获取该第二数据表的校验和;将该第一数据表的校验和与该第二数据表的校验和进行对比,得到该第一数据表的数据校验结果。可选的,在一些实施例中,如图10所示,该数据校验装置还可以包括区块链存储单元309,该区块链存储单元309具体可以用于:将该第一数据表的数据校验结果存储至区块链中。由于本申请实施例的数据校验装置可以通过获取单元301从主数据库中获取当前位点待校验的第一数据表,所述主数据库中包括多个位点对应的第一数据表;第一锁定单元302对当前位点的第一数据表进行锁定,得到锁定信息,所述锁定信息包括锁定后第一数据表;第一计算单元303对所述锁定后第一数据表进行校验信息计算,得到当前位点所述第一数据表的第一校验信息;第二锁定单元304对所述主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,所述从数据库中的第二数据表与所述第一数据表相对应;第二计算单元305对所述锁定后第二数据表进行校验信息计算,得到当前位点所述第二数据表的第二校验信息;校验单元306将所述第一校验信息与所述第二校验信息进行对比,得到所述第一数据表的数据校验结果,由于本申请实施例的数据校验装置可以对当前位点主、从数据库中待校验的数据表进行锁定后,再基于锁定后的数据表得到校验信息,然后可以根据校验信息的对比结果得到数据表校验结果,可以有效地提高数据校验的准确性。此外,本申请实施例还提供一种计算机设备,如图11所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中计算机设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:从主数据库中获取当前位点待校验的第一数据表,所述主数据库中包括多个位点对应的第一数据表;对当前位点的第一数据表进行锁定,得到锁定信息,所述锁定信息包括锁定后第一数据表;对所述锁定后第一数据表进行校验信息计算,得到当前位点所述第一数据表的第一校验信息;对所述主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,所述从数据库中的第二数据表与所述第一数据表相对应;对所述锁定后第二数据表进行校验信息计算,得到当前位点所述第二数据表的第二校验信息;将所述第一校验信息与所述第二校验信息进行对比,得到所述第一数据表的数据校验结果。以上各个操作的具体实施可参见前面的实施例,在此不再赘述。本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本申请实施例还提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种数据校验方法中的步骤。例如,该指令可以执行如下步骤:从主数据库中获取当前位点待校验的第一数据表,所述主数据库中包括多个位点对应的第一数据表;对当前位点的第一数据表进行锁定,得到锁定信息,所述锁定信息包括锁定后第一数据表;对所述锁定后第一数据表进行校验信息计算,得到当前位点所述第一数据表的第一校验信息;对所述主数据库对应的从数据库中的第二数据表进行锁定,得到锁定后第二数据表,其中,所述从数据库中的第二数据表与所述第一数据表相对应;对所述锁定后第二数据表进行校验信息计算,得到当前位点所述第二数据表的第二校验信息;将所述第一校验信息与所述第二校验信息进行对比,得到所述第一数据表的数据校验结果。以上各个操作的具体实施可参见前面的实施例,在此不再赘述。其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种数据校验方法中的步骤,因此,可以实现本申请实施例所提供的任一种数据校验方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上对本申请实施例所提供的一种数据校验方法、装置、计算机设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1