CN112162989B - 数据库数据一致性检测方法、装置、介质和电子设备 - Google Patents
数据库数据一致性检测方法、装置、介质和电子设备 Download PDFInfo
- Publication number
- CN112162989B CN112162989B CN202011017249.5A CN202011017249A CN112162989B CN 112162989 B CN112162989 B CN 112162989B CN 202011017249 A CN202011017249 A CN 202011017249A CN 112162989 B CN112162989 B CN 112162989B
- Authority
- CN
- China
- Prior art keywords
- database
- data
- source
- connection
- target
- 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.)
- Active
Links
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据库数据一致性检测方法、装置、介质和电子设备,其中方法包括:获取源数据库的第一数据库连接,配置隔离级别为串行化隔离级别,关闭自动提交;在第一数据库连接中开启数据检测事务;获取源数据库当前时刻的全量数据和第一数据库日志信息;获取目标数据库的目标同步系统中已同步完成的第二数据库日志信息;基于第一数据库日志信息和第二数据库日志信息,从源数据库的源端同步系统中获取对应的同步日志;将同步日志解析为SQL语句以在目标数据库执行;执行完毕后获取目标数据库的全量数据;基于目标数据库的全量数据与源数据库的全量数据进行数据一致性检测;数据一致性检测完成后提交数据检测事务。
Description
技术领域
本公开实施例涉及数据库技术领域,尤其涉及一种数据库数据一致性检测方法、数据库数据一致性检测装置,实现数据库数据一致性检测方法的计算机可读存储介质和电子设备。
背景技术
在应用数据库的业务场景中,数据从源数据库同步到目标数据库,中间存在很多环节可能导致一些数据错误或缺失等。因此在进行数据同步时需要检测源端和目标端数据是否一致。
相关技术中,在比对源端与目标端数据是否一致时,通常是先对源数据库及目标数据库的相关业务表加锁进行锁定,然后进行比对以实现数据一致性检测。
但是,目前的数据一致性检测方式存在如下一些问题:当用户的业务频繁时,数据库吞吐量非常大,一次锁表操作会导致业务中涉及到该表的许多业务无法正常进行,影响用户的正常业务。当用户的业务表中数据量较大时,一致性检测的时间会显著增加,这就导致了数据库锁很长时间不能释放,同样影响用户正常的业务运行。数据一致性检测时要停止数据同步系统的运行,因此导致许多和本次数据一致性检测无关的其他表也不能进行正常的同步,导致目标端的数据和源端存在较大差异。另外,当对多表进行数据一致性检测时,同时锁住多个表,对数据库的运行有一定程度上的影响,并且增加死锁的风险。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种数据库数据一致性检测方法、数据库数据一致性检测装置,实现数据库数据一致性检测方法的计算机可读存储介质和电子设备。
第一方面,本公开实施例提供了一种数据库数据一致性检测方法,包括:
获取源数据库的第一数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交;
在所述第一数据库连接中开启数据检测事务;
获取所述源数据库当前时刻的全量数据和第一数据库日志信息;
获取目标数据库的目标同步系统中已同步完成的第二数据库日志信息;
基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志;
将所述同步日志解析为SQL语句以在所述目标数据库执行;
执行完毕后获取所述目标数据库的全量数据;
基于所述目标数据库的全量数据与所述源数据库的全量数据进行数据一致性检测;
数据一致性检测完成后提交数据检测事务。
在本公开的一些实施例中,还包括:
在所述获取源数据库的第一数据库连接之后,在所述第一数据库连接中开启数据检测事务之前,获取目标数据库的第二数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交;
在将所述同步日志解析为SQL语句以在所述目标数据库执行之前,在所述目标数据库的第二数据库连接中配置保存点;
数据一致性检测完成后将所述第二数据库连接回滚至所述保存点,并关闭所述第一数据库连接和第二数据库连接以提交数据检测事务。
在本公开的一些实施例中,所述第一数据库日志信息和第二数据库日志信息均为数据库日志号;所述基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志,包括:
从所述源端同步系统中获取大于第二数据库日志号而小于第一数据库日志号的所有同步日志。
在本公开的一些实施例中,所述将所述同步日志解析为SQL语句以在所述目标数据库执行,包括:
基于用户输入的选择操作,确定所述目标数据库中待执行的预设数据表;
在所述预设数据表中执行所述SQL语句已完成相应数据操作。
在本公开的一些实施例中,获取所述源数据库当前时刻的第一数据库日志信息,包括:
获取所述源数据库的第三数据库连接,基于该第三数据库连接获取所述源数据库当前时刻的第一数据库日志信息;
在所述第三数据库连接获取所述源数据库当前时刻的第一数据库日志信息之后,关闭所述第三数据库连接。
在本公开的一些实施例中,所述获取所述源数据库当前时刻的全量数据,包括:
基于所述源数据库的所述第一数据库连接获取所述源数据库当前时刻的的全量数据。
第二方面,本公开实施例提供一种数据库数据一致性检测装置,包括:
第一连接处理模块,用于获取源数据库的第一数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交;
事务开启模块,用于在所述第一数据库连接中开启数据检测事务;
第一数据获取模块,用于获取所述源数据库当前时刻的全量数据和第一数据库日志信息;
日志获取模块,用于获取所述目标数据库的目标同步系统中已同步完成的第二数据库日志信息;
同步日志获取模块,用于基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志;
数据同步模块,用于将所述同步日志解析为SQL语句以在所述目标数据库执行;
第二数据获取模块,用于执行完毕后获取所述目标数据库的全量数据;
数据检测模块,用于基于所述目标数据库的全量数据与所述源数据库的全量数据进行数据一致性检测;
事务提交模块,用于数据一致性检测完成后提交数据检测事务。
在本公开的一些实施例中,还可包括:
第二连接处理模块,用于在所述获取源数据库的第一数据库连接之后,在所述第一数据库连接中开启数据检测事务之前,获取目标数据库的第二数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交;
保存点配置模块,用于在将所述同步日志解析为SQL语句以在所述目标数据库执行之前,在所述目标数据库的第二数据库连接中配置保存点;
所述事务提交模块,还用于数据一致性检测完成后将所述第二数据库连接回滚至所述保存点,并关闭所述第一数据库连接和第二数据库连接以提交数据检测事务。
第三方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例述数据库数据一致性检测方法的步骤。
第四方面,本公开实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任一实施例所述数据库数据一致性检测方法的步骤。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例中,进行数据一致性检测时,获取源数据库的第一数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交,在所述第一数据库连接中开启数据检测事务,获取所述源数据库当前时刻的全量数据和第一数据库日志信息,再获取目标数据库的目标同步系统中已同步完成的第二数据库日志信息,基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志,将所述同步日志解析为SQL语句以在所述目标数据库执行,执行完毕后获取所述目标数据库的全量数据,基于所述目标数据库的全量数据与所述源数据库的全量数据进行数据一致性检测,数据一致性检测完成后提交数据检测事务。这样,本实施例的实施方案基于事务进行数据同步时的数据一致性检测,检测过程中无需对数据库中的数据表进行加锁,节省数据库因为加锁带来的开销,保证数据库运行的性能,也可避免加锁对用户业务的影响,保证了用户业务的连续稳定的运行。同时可避免因为加锁带来的数据库死锁风险,提高了系统的可靠性。另外,本实施例中也无需停止数据同步系统如源端同步系统和/或目标同步系统,保证用户源端或目标端业务的正常运行,使得对现有数据库系统冲击小,用户无感知,业务影响小,进而整体上大大提高数据库系统性能,同时可以最大限度的保持了源端和目标端数据库的数据一致性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例数据库数据一致性检测方法流程图;
图2为本公开实施例数据库数据一致性检测方法流程图;
图3为本公开实施例数据库同步系统架构示意图;
图4为本公开实施例数据库数据一致性检测装置示意图;
图5为本公开实施例实现数据库数据一致性检测方法的电子设备示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1为本公开实施例示出的一种数据库数据一致性检测方法流程图,该数据库数据一致性检测方法可以包括如下步骤:
步骤S101:获取源数据库的第一数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交。
具体的,在本公开的一些实施例中,第一数据库连接可以为会话级别的数据库连接。数据库连接可以是一个socket的连接,是客户端与数据库服务器之间一个可以上行可以下行的数据通道。串行化隔离级别是最严格的隔离级别。本实施例中获得源数据库的第一数据库连接,设置隔离级别的为串行化隔离级别(即会话级别),关闭自动提交,这样使得在该数据库连接中,其他用户对源数据库的操作不会对本次数据一致性检测过程造成影响。
步骤S102:在所述第一数据库连接中开启数据检测事务。
示例性的,在获取上述第一数据库连接之后,可以基于该第一数据库连接开启数据检测事务。
步骤S103:获取所述源数据库当前时刻的全量数据和第一数据库日志信息。
示例性的,开启数据检测事务后,即可获取源数据库当前时刻的全量数据D1和第一数据库日志信息如日志号。
具体的,可以基于源数据库的该第一数据库连接获取源数据库当前时刻的全量数据D1。
可选的,在本公开的一些实施例中,步骤S103中获取所述源数据库当前时刻的第一数据库日志信息,具体可以包括以下步骤:
步骤1):获取所述源数据库的第三数据库连接,基于该第三数据库连接获取所述源数据库当前时刻的第一数据库日志信息。
步骤2):在所述第三数据库连接获取所述源数据库当前时刻的第一数据库日志信息之后,关闭所述第三数据库连接。
示例性的,该第三数据库连接即是源数据库的一个新的连接,此连接不设置串行化隔离级别,不关闭自动提交,表示的是源数据库的实时状态,然后从源数据库中获取当前时刻即最新日志信息如日志号,这个日志号表示对源数据库的最新操作所在的日志位置。通过该第三数据库连接获取该数据库日志信息,可以减少对当前数据检测事务中数据检测过程的影响。
步骤S104:获取目标数据库的目标同步系统中已同步完成的第二数据库日志信息。
示例性的,例如可以使用目标数据库的数据库连接获取目标数据库端的目标同步系统中的第二数据库日志信息如旧日志号,该旧日志号表示的是在开启串行化隔离级别,关闭自动提交时,此时目标数据库端数据操作所在的日志位置。
步骤S105:基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志。
示例性的,基于上述第一数据库日志信息和第二数据库日志信息可从所述源数据库的源端同步系统中获取对应的同步日志,该同步日志的记录至少包含在开启串行化隔离级别的期间,源数据库进行了多少新数据操作,这些操作的数据可能进入数据同步系统中但还未被同步进入目标数据库。作为示例,具体可以从源端同步系统的中间文件中获取第一数据库日志信息如日志号和第二数据库日志信息如日志号之间的日志信息作为同步日志。
步骤S106:将所述同步日志解析为SQL语句以在所述目标数据库执行。
具体的,获取上述同步日志后,可以解析为SQL语句,在所述目标数据库执行SQL语句。这样可以将开启串行化隔离级别的期间中源数据库新产生的数据通过该方式同步到目标数据库,从而使得目标库和源数据库处在相同的数据操作位置。
步骤S107:执行完毕后获取所述目标数据库的全量数据。
示例性的,将上述新产生的数据同步到目标数据库,使得目标库和源数据库处在相同的数据操作位置之后,即可获取当前目标数据库的全量数据D2。
步骤S108:基于所述目标数据库的全量数据与所述源数据库的全量数据进行数据一致性检测。
具体的,可以基于目标数据库的全量数据D2与源数据库的全量数据D1进行数据一致性检测,得到检测结果。
步骤S109:数据一致性检测完成后提交数据检测事务。
本实施例的数据库数据一致性检测方法,基于事务进行数据同步时的数据一致性检测,检测过程中无需对数据库中的数据表进行加锁,节省数据库因为加锁带来的开销,保证数据库运行的性能,也可避免加锁对用户业务的影响,保证了用户业务的连续稳定的运行。同时可避免因为加锁带来的数据库死锁风险,提高了系统的可靠性。
另外,本实施例中也无需停止数据同步系统如源端同步系统和/或目标同步系统,保证源端或目标端业务的正常运行,使得对现有数据库系统冲击小,用户无感知,业务影响小,进而整体上大大提高数据库系统性能。同时,将所述同步日志解析为SQL语句以在目标数据库执行,避免了数据同步系统中的时延导致的数据不一致,后续可以检测出真正不一致的数据,从而可以最大限度的保持源端和目标端数据库的数据一致性。
在上述例如图1所示实施例的基础上,本公开的一些实施例中,结合图1~2所示,该方法还可以包括以下步骤:
步骤S201:获取目标数据库的第二数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交。
具体的,该步骤S201在所述步骤S101之后,且在所述步骤S102之前执行。本实施例中,获得目标数据库的数据库连接,该数据库连接即为会话级别的数据库连接,设置为串行化隔离级别(即会话级别),关闭自动提交。这样就使得在该连接中看不到其他用户对目标数据库的操作。同时这样可保证在开启数据检测事务中若获取到当前时刻T目标数据库端的数据,该数据一定是比源数据库端要旧的,即源数据库端的数据操作还没有同步到达目标数据库端执行,该数据还未被例如更新操作。
步骤S202:在将所述同步日志解析为SQL语句以在所述目标数据库执行之前,在所述目标数据库的第二数据库连接中配置保存点。
具体的,在步骤S106之前,即在将开启串行化隔离级别的期间中源数据库新产生的数据同步到目标数据库之前,可以在目标数据库的第二数据库连接中设置保存点(SavePoint)。
步骤S203:数据一致性检测完成后将所述第二数据库连接回滚至所述保存点,并关闭所述第一数据库连接和第二数据库连接以提交数据检测事务。
具体的,保存点设置完成后可执行步骤S106~S108。在完成步骤S108的数据一致性检测之后,可将第二数据库连接回滚至保存点SavePoint,并关闭第一数据库连接和第二数据库连接以提交数据检测事务。
这样,在执行前设置保存点SavePoint,执行结束后,将事务又回滚至保存点SavePoint,可以保证上述操作不对目标数据库的其他正常业务造成较大影响。因此,本实施例的实施方案还可以保证用户目标端业务的正常运行,使得对现有数据库系统的冲击进一步减小,进而整体上进一步提高数据库系统性能。
在上述各实施例的基础上,本公开的一些实施例中,所述第一数据库日志信息和第二数据库日志信息均可以为数据库日志号,即携带时间戳信息。相应的,步骤S105中基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志,具体可以包括:从所述源端同步系统中获取大于第二数据库日志号而小于第一数据库日志号的所有同步日志。
具体的,作为示例,获取源数据库当前时刻T的数据库日志号,记为A。获取目标数据库端的目标同步系统中已经同步完成的数据日志号,记为B。那么可以从源数据库的源端同步系统中取出大于B而小于A的所有同步日志。之后即可执行步骤S106及后续步骤。
在上述各实施例的基础上,本公开的一些实施例中,步骤S106中将所述同步日志解析为SQL语句以在所述目标数据库执行,具体可以包括以下步骤:
步骤i):基于用户输入的选择操作,确定所述目标数据库中待执行的预设数据表。
示例性的,例如可以在数据检测用户界面中显示同步日志相关的一个或多个数据表信息,用户可在该用户界面上例如点击选择要执行的数据表,即预设数据表。
步骤ii):在所述预设数据表中执行所述SQL语句已完成相应数据操作。具体的,用户选择后可以执行SQL语句已完成相应数据操作。
这样,在本实施例中,用户可以选择要执行检测数据一致性的数据表,从而可以根据用户需求进行检测,在一些情况下,可以减少处理的数据量,提高处理效率,也减少了对数据库系统的影响,进而可提高数据库的系统性能。
为了进一步说明本公开实施例方案的技术优点,参考图3中所示,可以看出当前现有数据库数据一致性检测存在的问题。具体的,由于数据同步系统如源端同步系统和目标同步系统的存在,数据同步过程中至少存在如图所示的P1~P5的处理过程产生时间延迟,导致用户时刻T1在E1处插入的数据(如插入1、2、3)会经过一定时间后才会到达E6,例如一个时刻T2(T1早于T2)收到了数据1、2,而还没接收到数据3。但是进行数据一致性检测时,是例如在当前的时刻T2直接从E1和E6处获取数据进行检测,这就导致了用户检测的数据差异由于延迟而较大。且现有技术中需要对数据库的数据表进行加锁进行数据一致性检测。而本发明实施例的方案在整个数据一致性检测过程中不需要加锁,带来的技术优点至少包括以下各方面:
1)节省数据库因为加锁带来的开销,保证数据库运行的性能。
2)避免了加锁对用户业务的影响,保证了用户业务的连续稳定的运行。
3)避免了因为加锁带来的数据库死锁风险,提高了系统的可靠性。
4)在数据一致性检测时,将现有技术中由于数据同步系统的时间延迟导致的差异数据自动同步至目标数据库之后,再进行数据一致性检测,避免了数据同步系统中的时延导致的数据不一致,后续可以检测出真正不一致的数据,从而可以最大限度的保持源数据库端和目标数据库端的数据一致性。
另外,现有技术在数据一致性检测时会暂停数据同步系统运行,而本发明实施例的方案则可不需要进行此操作,带来的技术优点至少可包括:保证用户源数据库端和/或目标数据库端业务的正常运行,对现有数据库系统冲击小,用户无感知,对数据库其他正常业务影响小,进而提高数据库系统性能。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。另外,也易于理解的是,这些步骤可以是例如在多个模块/进程/线程中同步或异步执行。
参考图4中所示,本公开实施例提供一种数据库数据一致性检测装置,该数据库数据一致性检测装置可以包括如下各模块:
第一连接处理模块401,用于获取源数据库的第一数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交。
事务开启模块402,用于在所述第一数据库连接中开启数据检测事务。
第一数据获取模块403,用于获取所述源数据库当前时刻的全量数据和第一数据库日志信息。
日志获取模块404,用于获取所述目标数据库的目标同步系统中已同步完成的第二数据库日志信息。
同步日志获取模块405,用于基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志。
数据同步模块406,用于将所述同步日志解析为SQL语句以在所述目标数据库执行。
第二数据获取模块407,用于执行完毕后获取所述目标数据库的全量数据。
数据检测模块408,用于基于所述目标数据库的全量数据与所述源数据库的全量数据进行数据一致性检测。
事务提交模块409,用于数据一致性检测完成后提交数据检测事务。
本实施例的数据库数据一致性检测装置,基于事务进行数据同步时的数据一致性检测,检测过程中无需对数据库中的数据表进行加锁,节省数据库因为加锁带来的开销,保证数据库运行的性能,也可避免加锁对用户业务的影响,保证了用户业务的连续稳定的运行。同时可避免因为加锁带来的数据库死锁风险,提高了系统的可靠性。另外,本实施例中也无需停止数据同步系统如源端同步系统和/或目标同步系统,保证用户源端或目标端业务的正常运行,使得对现有数据库系统冲击小,用户无感知,业务影响小,进而整体上大大提高数据库系统性能,同时可以最大限度的保持源端和目标端数据库的数据一致性。
在上述实施例基础上,本公开的一些实施例中,还可以包括第二连接处理模块和保存点配置模块,其中,第二连接处理模块用于在所述获取源数据库的第一数据库连接之后,在所述第一数据库连接中开启数据检测事务之前,获取目标数据库的第二数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交。保存点配置模块用于在将所述同步日志解析为SQL语句以在所述目标数据库执行之前,在所述目标数据库的第二数据库连接中配置保存点。所述事务提交模块,还用于数据一致性检测完成后将所述第二数据库连接回滚至所述保存点,并关闭所述第一数据库连接和第二数据库连接以提交数据检测事务。
在本公开的一些实施例中,所述第一数据库日志信息和第二数据库日志信息均为数据库日志号;所述同步日志获取模块基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志,具体可包括:从所述源端同步系统中获取大于第二数据库日志号而小于第一数据库日志号的所有同步日志。
在本公开的一些实施例中,所述数据同步模块将所述同步日志解析为SQL语句以在所述目标数据库执行,具体可包括:基于用户输入的选择操作,确定所述目标数据库中待执行的预设数据表;在所述预设数据表中执行所述SQL语句已完成相应数据操作。
在本公开的一些实施例中,获取所述源数据库当前时刻的第一数据库日志信息,包括:
获取所述源数据库的第三数据库连接,基于该第三数据库连接获取所述源数据库当前时刻的第一数据库日志信息;
在所述第三数据库连接获取所述源数据库当前时刻的第一数据库日志信息之后,关闭所述第三数据库连接。
在本公开的一些实施例中,所述第一数据获取模块获取所述源数据库当前时刻的全量数据,具体可包括:基于所述源数据库的所述第一数据库连接获取所述源数据库当前时刻的的全量数据。
在本公开的一些实施例中,所述日志获取模块获取所述目标数据库的目标同步系统中已同步完成的第二数据库日志信息,具体可包括:基于所述目标数据库的第二数据库连接获取所述目标同步系统中已同步完成的第二数据库日志信息。
关于上述实施例中的装置,其中各个模块执行操作的具体方式以及带来的相应技术效果已经在有关该方法的实施例中进行了对应的详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项实施例所述数据库数据一致性检测方法的步骤。
示例性的,该可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
本公开实施例还提供一种电子设备,包括处理器以及存储器,存储器用于存储所述处理器的可执行指令。其中,所述处理器配置为经由执行所述可执行指令来执行上述任一项实施例中所述数据库数据一致性检测方法的步骤。
下面参照图5来描述根据本发明的这种实施方式的电子设备600。图5显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述数据库数据一致性检测方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示方法的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述数据库数据一致性检测方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据库数据一致性检测方法,其特征在于,包括:
获取源数据库的第一数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交;
在所述第一数据库连接中开启数据检测事务;
获取所述源数据库当前时刻的全量数据和第一数据库日志信息;
获取目标数据库的目标同步系统中已同步完成的第二数据库日志信息;
基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志;
将所述同步日志解析为SQL语句以在所述目标数据库执行;
执行完毕后获取所述目标数据库的全量数据;
基于所述目标数据库的全量数据与所述源数据库的全量数据进行数据一致性检测;
数据一致性检测完成后提交数据检测事务。
2.根据权利要求1所述的数据库数据一致性检测方法,其特征在于,还包括:
在获取源数据库的第一数据库连接之后,在所述第一数据库连接中开启数据检测事务之前,获取目标数据库的第二数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交;
在将所述同步日志解析为SQL语句以在所述目标数据库执行之前,在所述目标数据库的第二数据库连接中配置保存点;
数据一致性检测完成后将所述第二数据库连接回滚至所述保存点,并关闭所述第一数据库连接和第二数据库连接以提交数据检测事务。
3.根据权利要求2所述的数据库数据一致性检测方法,其特征在于,所述第一数据库日志信息和第二数据库日志信息均为数据库日志号;所述基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志,包括:
从所述源端同步系统中获取大于第二数据库日志号而小于第一数据库日志号的所有同步日志。
4.根据权利要求2所述的数据库数据一致性检测方法,其特征在于,所述将所述同步日志解析为SQL语句以在所述目标数据库执行,包括:
基于用户输入的选择操作,确定所述目标数据库中待执行的预设数据表;
在所述预设数据表中执行所述SQL语句已完成相应数据操作。
5.根据权利要求1~4任一项所述的数据库数据一致性检测方法,其特征在于,获取所述源数据库当前时刻的第一数据库日志信息,包括:
获取所述源数据库的第三数据库连接,基于该第三数据库连接获取所述源数据库当前时刻的第一数据库日志信息;
在所述第三数据库连接获取所述源数据库当前时刻的第一数据库日志信息之后,关闭所述第三数据库连接。
6.根据权利要求1~4任一项所述的数据库数据一致性检测方法,其特征在于,所述获取所述源数据库当前时刻的全量数据,包括:
基于所述源数据库的所述第一数据库连接获取所述源数据库当前时刻的的全量数据。
7.一种数据库数据一致性检测装置,其特征在于,包括:
第一连接处理模块,用于获取源数据库的第一数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交;
事务开启模块,用于在所述第一数据库连接中开启数据检测事务;
第一数据获取模块,用于获取所述源数据库当前时刻的全量数据和第一数据库日志信息;
日志获取模块,用于获取所述目标数据库的目标同步系统中已同步完成的第二数据库日志信息;
同步日志获取模块,用于基于所述第一数据库日志信息和第二数据库日志信息,从所述源数据库的源端同步系统中获取对应的同步日志;
数据同步模块,用于将所述同步日志解析为SQL语句以在所述目标数据库执行;
第二数据获取模块,用于执行完毕后获取所述目标数据库的全量数据;
数据检测模块,用于基于所述目标数据库的全量数据与所述源数据库的全量数据进行数据一致性检测;
事务提交模块,用于数据一致性检测完成后提交数据检测事务。
8.根据权利要求7所述的数据库数据一致性检测装置,其特征在于,还包括:
第二连接处理模块,用于在所述获取源数据库的第一数据库连接之后,在所述第一数据库连接中开启数据检测事务之前,获取目标数据库的第二数据库连接,配置隔离级别为串行化隔离级别,并关闭自动提交;
保存点配置模块,用于在将所述同步日志解析为SQL语句以在所述目标数据库执行之前,在所述目标数据库的第二数据库连接中配置保存点;
所述事务提交模块,还用于数据一致性检测完成后将所述第二数据库连接回滚至所述保存点,并关闭所述第一数据库连接和第二数据库连接以提交数据检测事务。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~6任一项所述数据库数据一致性检测方法的步骤。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~6任一项所述数据库数据一致性检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011017249.5A CN112162989B (zh) | 2020-09-24 | 2020-09-24 | 数据库数据一致性检测方法、装置、介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011017249.5A CN112162989B (zh) | 2020-09-24 | 2020-09-24 | 数据库数据一致性检测方法、装置、介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112162989A CN112162989A (zh) | 2021-01-01 |
CN112162989B true CN112162989B (zh) | 2023-09-15 |
Family
ID=73863829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011017249.5A Active CN112162989B (zh) | 2020-09-24 | 2020-09-24 | 数据库数据一致性检测方法、装置、介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112162989B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114510495B (zh) * | 2022-04-21 | 2022-07-08 | 北京安华金和科技有限公司 | 一种数据库业务数据一致性处理方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009134665A (ja) * | 2007-12-03 | 2009-06-18 | Nippon Telegr & Teleph Corp <Ntt> | データベースシステム,データ管理方法,データベースプログラム及びそのプログラムを記録する記録媒体 |
GB201418665D0 (en) * | 2014-10-21 | 2014-12-03 | Ibm | Database Management system and method of operation |
CN109033186A (zh) * | 2018-06-27 | 2018-12-18 | 东软集团股份有限公司 | 数据一致性检测方法、装置、存储介质及电子设备 |
CN109656934A (zh) * | 2018-11-19 | 2019-04-19 | 武汉达梦数据库有限公司 | 基于日志解析的源端Oracle数据库DDL同步方法及设备 |
-
2020
- 2020-09-24 CN CN202011017249.5A patent/CN112162989B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009134665A (ja) * | 2007-12-03 | 2009-06-18 | Nippon Telegr & Teleph Corp <Ntt> | データベースシステム,データ管理方法,データベースプログラム及びそのプログラムを記録する記録媒体 |
GB201418665D0 (en) * | 2014-10-21 | 2014-12-03 | Ibm | Database Management system and method of operation |
CN109033186A (zh) * | 2018-06-27 | 2018-12-18 | 东软集团股份有限公司 | 数据一致性检测方法、装置、存储介质及电子设备 |
CN109656934A (zh) * | 2018-11-19 | 2019-04-19 | 武汉达梦数据库有限公司 | 基于日志解析的源端Oracle数据库DDL同步方法及设备 |
Non-Patent Citations (1)
Title |
---|
分布式数据库同步更新的实现方法;杨跃武, 王宪生;佛山科学技术学院学报(自然科学版)(02);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112162989A (zh) | 2021-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9336262B2 (en) | Accelerated transactions with precommit-time early lock release | |
CN104572689B (zh) | 数据同步方法、装置及系统 | |
US8694305B1 (en) | Natural language processing (NLP) portal for third party applications | |
US20100192006A1 (en) | Database change verifier | |
WO2012034440A1 (zh) | 一种数据库升级脚本的生成方法和装置 | |
US7353225B2 (en) | Mechanism for comparing content in data structures | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN108205560B (zh) | 一种数据同步方法以及装置 | |
US10474185B2 (en) | Timestamp alignment across a plurality of computing devices | |
CN112764792B (zh) | 一种关联服务器版本应用升级方法、装置和电子设备 | |
US9170837B2 (en) | Transaction concurrent execution control system, method and program for carrying out a control of concurrently executing a transaction, including measuring execution time from starting to ending of transaction execution | |
CN112162989B (zh) | 数据库数据一致性检测方法、装置、介质和电子设备 | |
CN113626416A (zh) | 数据校验的方法、装置、计算设备和存储介质 | |
CN111538659B (zh) | 业务场景的接口测试方法、系统、电子设备和存储介质 | |
CN110647421B (zh) | 数据库处理方法、装置、系统以及电子设备 | |
CN111444199A (zh) | 数据处理方法及装置、存储介质和处理器 | |
CN115391457B (zh) | 跨数据库的数据同步方法、装置及存储介质 | |
CN112612647B (zh) | 日志并行重演方法、装置、设备及存储介质 | |
CN114116325A (zh) | 配置一致性检查装置及方法 | |
US11392574B2 (en) | Mitigating race conditions across two live datastores | |
CN108509455B (zh) | 数据表处理方法和装置 | |
CN108322492A (zh) | 医疗数据同步方法及装置 | |
CN108733704B (zh) | 多数据库数据处理方法、装置及存储介质和电子设备 | |
US7974945B2 (en) | System and method for synchronizing a BlackBerry with a Macintosh | |
CN115145831A (zh) | 无侵入式测试数据恢复方法及系统 |
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 |