数据同步异常时数据一致性校验方法、设备及存储介质转让专利

申请号 : CN201910436428.3

文献号 : CN110427422B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 付铨孙峰余院兰赵家威

申请人 : 武汉达梦数据库有限公司

摘要 :

本发明公开了一种数据同步异常时数据一致性校验方法、设备及存储介质,所述方法包括:首先将同步事务的事务ID插入目标端数据库中辅助表中;然后当接收到报错通知时,判断当前的同步事务处于何种操作;在为事务变更操作时,判断报错通知是否属于预设的错误类型,并在属于时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作,在为事务提交操作时,查询辅助表中是否包含该同步事务的事务ID,并在不包含时将该事务的事务ID插入辅助表中并重新进行同步操作。本发明在同步过程中,同步事务开始时先在辅助表中登记事务标签,如果同步过程中出错,则通过根据当前的操作来做不同的判断处理,以保证同步数据的一致性。

权利要求 :

1.一种数据同步异常时数据一致性校验方法,其特征在于,包括如下步骤:接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作;

当接收到目标端数据库的报错通知时,判断当前的同步事务处于何种操作,其中所述操作包括依次执行的事务变更操作和事务提交操作;

在当前操作为事务变更操作时,判断报错通知是否属于预设的错误类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作;其中,所述预设的错误类型包括网络异常错误和数据库系统级错误;

在当前操作为事务提交操作时,重新连接目标端数据库,查询辅助表中登记的该同步事务的事务ID后,查询所述事务ID对应的结果集,在未查询到所述事务ID的结果集时,将该同步事务的事务ID重新插入辅助表中并重新进行事务同步操作;

其中,所述接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作的步骤包括:解析当前同步事务所在的日志消息包并获取日志消息包中的同步事务的事务ID;

在目标端数据库中创建的辅助表中执行插入操作以将所述事务ID插入辅助表中;

所述在当前操作为事务提交操作时,重新连接目标端数据库,查询辅助表中登记的该同步事务的事务ID后,查询所述事务ID对应的结果集,在未查询到所述事务ID的结果集时,将该同步事务的事务ID重新插入辅助表中并重新进行事务同步操作的步骤包括:在当前操作为事务提交操作时,断开与目标端数据库的连接并重新连接目标端数据库;

调用目标端数据库中的辅助表,查询所述辅助表中所述同步事务开始时登记的事务ID后,查询所述事务ID对应的结果集;

在未查询到所述事务ID的结果集时,将该同步事务的事务ID重新插入辅助表中并重新进行事务同步操作。

2.根据权利要求1所述的数据同步异常时数据一致性校验方法,其特征在于,所述在当前操作为事务变更操作时,判断报错通知是否属于预设的报错类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作的步骤包括:在当前操作为事务变更操作时,根据目标端数据库返回的错误码识别错误的类型;

判断该错误类型是否属于预设的错误类型;

在该错误类型为预设的错误类型时,断开与目标端数据库的连接并回滚已进行的同步操作,并在回滚完成后重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。

3.根据权利要求2所述的数据同步异常时数据一致性校验方法,其特征在于,所述在该错误类型为预设的错误类型时,断开与目标端数据库的连接并回滚已进行的同步操作,并在回滚完成后重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作的步骤还包括:在该错误类型不是预设的错误类型时,执行预设的同步事务出错处理流程。

4.根据权利要求1所述的数据同步异常时数据一致性校验方法,其特征在于,所述在未查询到所述事务ID的结果集时,将该同步事务的事务ID重新插入辅助表中并重新进行事务同步操作的步骤还包括:在查询到所述事务ID的结果集时,执行下一个同步事务。

5.根据权利要求1所述的数据同步异常时数据一致性校验方法,其特征在于,所述事务变更操作包括插入操作、更新操作和删除操作。

6.一种数据同步异常时数据一致性校验设备,其特征在于,包括:处理器、存储器和通信总线;

所述存储器上存储有可被所述处理器执行的计算机可读程序;

所述通信总线实现处理器和存储器之间的连接通信;

所述处理器执行所述计算机可读程序时实现如权利要求1-5任意一项所述的数据同步异常时数据一致性校验方法中的步骤。

7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1-5任意一项所述的数据同步异常时数据一致性校验方法中的步骤。

说明书 :

数据同步异常时数据一致性校验方法、设备及存储介质

技术领域

[0001] 本发明涉及数据库同步技术领域,具体涉及一种数据同步异常时数据一致性校验方法、设备及存储介质。

背景技术

[0002] 在数据库数据实时同步技术中,其中基于数据库日志分析的数据实时同步技术因其具备支持异构操作系统和数据库平台、对源端数据库系统侵入性较小、数据同步延时低等特点,而得到广泛研究和应用。异构数据库系统之间的日志格式及日志内容差异较大,因此数据同步源端数据库的日志内容并不能直接应用到目标数据库中。基于日志分析的数据实时同步技术,一般原理是捕获源端数据库的增量日志内容,然后通过网络发送至目标端,在目标端使用SQL逆向生成技术恢复源端数据库的事务操作SQL语句,再通过通用的数据库访问接口如ODBC、OCI等接口,执行恢复后的SQL语句,实现源和目标端的数据实时同步。
[0003] 进一步的,通过使用上述数据实时同步技术构建的数据库数据实时同步装置主要包括如下组成模块,在同步系统源端,同步软件日志读取模块实时读取源端数据库日志文件,捕获源端数据库上的事务增量日志内容;同步软件日志分析模块实时解析增量日志内容,提取日志中的事务ID、操作表ID、事务的操作类型如INSERT、UPDATE、 DELETE,事务操作时间戳、日志LSN值、操作数据等,然后将其组装成特定格式的消息,存放在发送队列中;同步软件日志发送模块,将发送队列中的消息通过TCP/IP网络发送到同步系统的目标端。
[0004] 在同步系统目标端,同步软件日志接收模块,接收源端发送的消息,并解析消息内容,根据事务ID将同属于一个事务的操作进行缓存,当接收到事务的COMMIT消息时,则交由日志执行模块进行同步执行;同步软件日志执行模块,根据事务操作内容,构建SQL语句,在目标数据库同步执行。
[0005] 上述数据库数据实时同步技术中,目标端数据同步服务在目标端数据库上进行数据入库时,存在目标端同步服务和目标端数据库之间网络异常或目标端数据库发生故障当机的情况,都有可能会造成同步事务的重复执行,影响同步数据的一致性。
[0006] 因而现有技术还有待于改进和提高。

发明内容

[0007] 鉴于上述现有技术的不足之处,本发明的目的在于提供一种数据同步异常时数据一致性校验方法、设备及存储介质,以解决目前数据同步过程中出现异常时而导致的同步数据不一致的问题。
[0008] 为了达到上述目的,本发明采取了以下技术方案:
[0009] 一种数据同步异常时数据一致性校验方法,包括如下步骤:
[0010] 接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作;
[0011] 当接收到目标端数据库的报错通知时,判断当前的同步事务处于何种操作,其中所述操作包括依次执行的事务变更操作和事务提交操作;
[0012] 在当前操作为事务变更操作时,判断报错通知是否属于预设的错误类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作;
[0013] 在当前操作为事务提交操作时,重新连接目标端数据库,并查询辅助表中是否包含该同步事务的事务ID,并在不包含时将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。
[0014] 优选的,所述的数据同步异常时数据一致性校验方法中,所述接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID 插入目标端数据库中创建的辅助表中后进行事务同步操作的步骤包括:
[0015] 解析当前同步事务所在的日志消息包并获取日志消息包中的同步事务的事务ID;
[0016] 在目标端数据库中创建的辅助表中执行插入操作以将所述事务 ID插入辅助表中。
[0017] 优选的,所述的数据同步异常时数据一致性校验方法中,所述在当前操作为事务变更操作时,判断报错通知是否属于预设的报错类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作的步骤包括:
[0018] 在当前操作为事务变更操作时,根据目标端数据库返回的错误码识别错误的类型;
[0019] 判断该错误类型是否属于预设的错误类型;
[0020] 在该错误类型为预设的错误类型时,断开与目标端数据库的连接并回滚已进行的同步操作,并在回滚完成后重新将该同步事务的事务 ID插入辅助表中并重新进行事务同步操作。
[0021] 优选的,所述的数据同步异常时数据一致性校验方法中,所述所述在该错误类型为预设的错误类型时,断开与目标端数据库的连接并回滚已进行的同步操作,并在回滚完成后重新将该同步事务的事务ID 插入辅助表中并重新进行事务同步操作的步骤还包括:
[0022] 在该错误类型不是预设的错误类型时,执行预设的同步事务出错处理流程。
[0023] 优选的,所述的数据同步异常时数据一致性校验方法中,所述预设的错误类型包括网络异常错误和数据库系统级错误。
[0024] 优选的,所述的数据同步异常时数据一致性校验方法中,所述在当前操作为事务提交操作时,重新连接目标端数据库,并查询辅助表中是否包含该同步事务的事务ID,并在不包含时将该同步事务的事务 ID插入辅助表中并重新进行事务同步操作的步骤包括:
[0025] 在当前操作为事务提交操作时,断开与目标端数据库的连接并重新连接目标端数据库;
[0026] 调用目标端数据库中的辅助表,并查询所述辅助表中是否存在所述同步事务开始时登记的事务ID;
[0027] 在所述辅助表中不存在该事务ID时,将该同步事务ID插入目标端数据库中的辅助表中并重新开始进行事务同步操作。
[0028] 优选的,所述的数据同步异常时数据一致性校验方法中,所述在所述辅助表中不存在该事务ID时,将该同步事务ID插入目标端数据库中的辅助表中并重新开始进行事务同步操作的步骤还包括:
[0029] 在所述辅助表中存在该事务ID时,执行下一个同步事务。
[0030] 优选的,所述的数据同步异常时数据一致性校验方法中,所述事务变更操作包括插入操作、更新操作和删除操作。
[0031] 一种数据同步异常时数据一致性校验设备,其包括:处理器、存储器和通信总线;
[0032] 所述存储器上存储有可被所述处理器执行的计算机可读程序;
[0033] 所述通信总线实现处理器和存储器之间的连接通信;
[0034] 所述处理器执行所述计算机可读程序时实现如上所述的数据同步异常时数据一致性校验方法中的步骤。
[0035] 一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上所述的数据同步异常时数据一致性校验方法中的步骤。
[0036] 本发明提供的数据同步异常时数据一致性校验方法、设备及存储介质中,所述方法包括:首先接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作;然后当接收到目标端数据库的报错通知时,判断当前的同步事务处于何种操作,其中所述操作包括依次执行的事务变更操作和事务提交操作;在当前操作为事务变更操作时,判断报错通知是否属于预设的错误类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作,在当前操作为事务提交操作时,重新连接目标端数据库,并查询辅助表中是否包含该同步事务的事务ID,并在不包含时将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。本发明在同步过程中,同步事务开始时先在辅助表中登记事务标签,如果同步过程中出错,则通过根据当前的操作来判断事务标签是否已登记,从而进一步判断出是否已同步完成,以保证同步数据的一致性。

附图说明

[0037] 图1为本发明提供的数据同步异常时数据一致性校验方法的流程图。
[0038] 图2为本发明提供的数据同步异常时数据一致性校验方法中,所述步骤S100的流程图。
[0039] 图3为本发明提供的数据同步异常时数据一致性校验方法中,所述步骤S300的流程图。
[0040] 图4为本发明提供的数据同步异常时数据一致性校验方法中,所述步骤S400的流程图。
[0041] 图5为本发明数据同步异常时数据一致性校验程序的较佳实施例的运行环境示意图。
[0042] 图6为本发明安装数据同步异常时数据一致性校验程序的系统较佳实施例的功能模块图。

具体实施方式

[0043] 鉴于现有技术中数据同步过程中发生异常时容易出现同步数据不一致的问题,本发明的目的在于提供一种数据同步异常时数据一致性校验方法、设备及存储介质,能保证在数据同步过程中出现异常时不会出现同步数据不一致的问题。
[0044] 为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0045] 请参阅图1,本发明提供的数据同步异常时数据一致性校验方法,包括如下步骤:
[0046] S100、接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作。
[0047] 具体来说,源端将需要进行数据同步的表以日志消息包的形式发送过去,故源端在进行日志消息包发送之前还需要进行日志消息包的生成,由于在异构数据库系统环境中,源端数据库所产生的增量日志信息并不能直接应用于目标端数据库,故需要通过对源端数据库的日志信息进行解析,然后生成同步服务内部特定格式的消息包,存储在发送队列中等待日志发送模块进行发送,具体实施时,源端数据同步服务的日志捕获模块基于日志捕获技术,实时捕获源端数据库系统的增量日志数据,然后将增量日志数据传递给日志分析模块进行解析,之后源端数据同步服务的日志解析模块,将增量日志解析为内部特定消息包格式,存储在发送队列中。优选的,所述日志消息包包括事务 ID、事务操作类型以及操作表名、列信息和数据值等。目标端在进行数据同步时,把接收到的同步事务根据事务ID来分类。之后,源端数据同步服务的日志发送模块,基于线程同步机制,将内部发送队列中的日志消息包通过TCP/IP网络发送给目标端数据同步服务系统中。优选的,为了保证数据传输的可靠性和数据完整性,源端日志发送模块采取了完备的消息应答机制,日志发送模块只有在得到目标端确认消息后才认为数据传输完成,否则将自动重新传输数据,目标端在接收到日志消息包后,对每个日志消息包进行序列编号同时需要返回确认信息。
[0048] 进一步来说,目标端数据同步服务通过数据库的驱动和目标端数据库进行交互,因此同步服务和数据库可以不在同一台机器上。分开布置以后,就需要考虑它们之间的网格发生故障的可能;另外,在同步过程中,目标端数据库有可能因为BUG发生当机或是其它原因导致数据库当机,在这些情况下,同步服务在目标端数据库上执行同步时,都需要考虑这些可能的故障,防止同步事务的重复执行或是少执行,故本发明首先在目标端数据库中创建了一个辅助表,该辅助表用于存储同步事务的事务标签,本实施例中,所述事务标签为事务ID,在同步事务开始时先在辅助表中登记当前同步事务的事务ID,然后在同步过程中出错时,根据当前的同步操作来做不同的判断处理,以保证同步数据的一致性;在将所述事务ID登记完成后,即开始进行同步事务,一个具体的同步事务如下所示:
[0049] BEGIN
[0050] INSERT INTO T VALUES(1);
[0051] COMMIT;
[0052] END;
[0053] 一个具体的辅助表的结构如下表所示:
[0054] 字段名 字段类型 字段说明TRXID NUMBER 登记数据同步过程中执行过的事务ID
[0055] 请参阅图2,其为所述步骤S100的流程图,包括如下步骤:
[0056] S101、解析当前同步事务所在的日志消息包并获取日志消息包中的同步事务的事务ID;
[0057] S102、在目标端数据库中创建的辅助表中执行插入操作以将所述事务ID插入辅助表中。
[0058] 针对上述具体操作事务来说,在执行同步事务操作前,在辅助表上先执行一个INSERT操作,将事务ID插入辅助表中,具体示例如下:
[0059] INSERT INTO DMHS_TRXID(TRXID)VALUES(12345);
[0060] S200、当接收到目标端数据库的报错通知时,判断当前的同步事务处于何种操作,其中所述操作包括依次执行的事务变更操作和事务提交操作。
[0061] 本实施例中,在没有接收到目标端数据库的报错通知时,按流程执行完该同步事务,然后再执行下一个同步事务,在接收到目标端数据库的报错通知时(即同步过程中发生错误),需要判断当前的同步事务处于何种操作,一般而言,在进行同步事务时,需要先进行事务变更操作来进行数据转换,然后在转换完成后执行事务提交操作将转换后的数据输送到目标端数据库中,故本发明需通过判断操作类型来具体给出出错后的处理方法,在不同的操作阶段,处理方法具有差异,事务变更操作阶段,数据转换还没完成,故需要重新来进行数据转换,在事务提交操作阶段,数据转换已完成但可能没有入库成功,故需要验证事务ID来保证同步数据的一致性,优选的,所述事务变更操作包括插入操作(INSERT操作)、更新操作(UPDATE操作)和删除操作(DELETE操作),在同步时可以进行数据插入、更新或者删除。
[0062] 此外,由于错误的类型很多,为了对错误进行区分,本发明设定了错误代码(error code)来表示错误的类型,在同步过程中如果发生错误,将通过它内部的原有的设定判断、识别而通过错误代码的显示方式现实错误,系统通过错误代码识别,快速找到错误的类型。
[0063] S300、在当前操作为事务变更操作时,判断报错通知是否属于预设的错误类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。
[0064] 本实施例中,首先根据报错通知(本实施例中为错误码)来识别错误的类型,如果错误类型属于预设的类型,则重新执行步骤S100,所述步骤S300的具体流程图如图3所示。
[0065] 请参阅图3,其为所述步骤S300的流程图,包括如下步骤:
[0066] S301、在当前操作为事务变更操作时,根据目标端数据库返回的错误码识别错误的类型;
[0067] S302、判断该错误类型是否属于预设的错误类型;
[0068] S303、在该错误类型为预设的错误类型时,断开与目标端数据库的连接并回滚已进行的同步操作,并在回滚完成后重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。
[0069] 本实施例中,预设的错误类型包括网络异常错误和数据库系统级错误,其在进行报错时以错误码的方式呈现,如果出现此类错误,表示在进行插入操作、更新操作或删除操作时,数据同步没有正确的完成,此时为了避免异常数据导入目标数据库,需要先断开与目标数据库的连接,然后重新来进行同步操作,本发明采用回滚的方式来实现同步操作的重新同步,回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为,通过回滚方式可使数据同步恢复到正确的状态,从而达到保证同步数据一致性的目的。
[0070] 进一步的,所述步骤S303还包括:
[0071] 在该错误类型不是预设的错误类型时,执行预设的同步事务出错处理流程。
[0072] 具体的,由于在同步过程中还可能出现其它的错误,故本发明对非预设性的错误设置了同步事务出错处理流程,此出错处理流程可根据实际需求来设定,本发明对具体的事务出错处理流程不做限定,例如在出现非预设错误时,直接取消当前事务的同步,进行下一事务的同步操作等等,从而能够保证系统在同步事务时,不会出现停滞状态,而影响同步的进程。
[0073] 针对上述具体实施例中的同步事务来说,在目标端数据库上同步事务操作INSERT INTO T VALUES(1)时,如果同步报错,则需要判断目标端数据库返回的错误码来识别错误的类型,如果是网络异常或是数据库系统级的错误,需要采用断开连接的方式来回滚前面的同步操作,然后重新同步该出错的事务。
[0074] S400、在当前操作为事务提交操作时,重新连接目标端数据库,并查询辅助表中是否包含该同步事务的事务ID,并在不包含时将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。
[0075] 具体的,当向目标端数据库执行提交操作时,在等待提交操作返回时发生网络故障导致执行出错,远端的目标端数据库有可能已经完成了提交操作却无法向目标端的同步服务返回,在这种情况下,目标端同步服务需要重新连接目标端数据库,在辅助表中查询登记的事务 ID来确认上次故障时事务是否已经成功提交,此外,向目标端数据库执行提交操作时,在等待提交操作返回时数据库异常当机导致执行出错,数据库在当机时,也有可能该提交操作已经完成却还没有来得及向目标端同步服务返回,在这种情况下,目标端同步服务需要重新连接目标端数据库,在辅助表中查询登记的事务ID来确认上次故障时事务是否已经成功提交,故本发明通过来查询辅助表中是否包含该事务ID,可以确认故障时同步事务是否已经提交成功,在不成功时重新进行事务同步,以保证同步数据的一致性。
[0076] 请参阅图4,其为所述步骤S400的流程图,包括如下步骤:
[0077] S401、在当前操作为事务提交操作时,断开与目标端数据库的连接并重新连接目标端数据库;
[0078] S402、调用目标端数据库中的辅助表,并查询所述辅助表中是否存在所述同步事务开始时登记的事务ID;
[0079] S403、在所述辅助表中不存在该事务ID时,将该同步事务ID插入目标端数据库中的辅助表中并重新开始进行事务同步操作。
[0080] 本发明通过查询事务ID的方式来确认同步数据是否已经成功提交,利用辅助表和待同步的表在同一个事务中时,利用事务的ACID 特性(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))来保证在网格或数据库故障时的情况下同步数据的一致性。
[0081] 优选的,所述步骤S403还包括:
[0082] 在所述辅助表中存在该事务ID时,执行下一个同步事务。
[0083] 换而言之,本发明在判断所述辅助表中存在该事务ID时,可以确认同步已经成功,从而结束当前事务的同步转到下一个事务的同步,以保证同步数据的一致性。
[0084] 针对上述具体实施例中的同步事务来说,在目标端数据库上执行事务提交操作时,如果执行报错,则需要断开连接并重新连接上目标端数据库,然后查询辅助表中是否包含了事务,执行查询SELECT TRXID FROM DMHS_TRXID WHERE TRXID=12345;如果找到事务ID为12345的结果集,那说明该事务已经同步成功,结束当前事务的同步转到下一个事务的同步;否则重新同步该事务。
[0085] 如图5所示,基于上述数据同步异常时数据一致性校验方法,本发明还相应提供了一种数据同步异常时数据一致性校验设备,所述数据同步异常时数据一致性校验设备可以是移动终端、桌上型计算机、笔记本、掌上电脑及服务器等计算设备。该数据同步异常时数据一致性校验设备包括处理器10、存储器20及显示器30。图5仅示出了数据同步异常时数据一致性校验设备的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
[0086] 所述存储器20在一些实施例中可以是所述数据同步异常时数据一致性校验设备的内部存储单元,例如数据同步异常时数据一致性校验设备的硬盘或内存。所述存储器20在另一些实施例中也可以是所述数据同步异常时数据一致性校验设备的外部存储设备,例如所述数据同步异常时数据一致性校验设备上配备的插接式硬盘,智能存储卡  (Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
[0087] 进一步地,所述存储器20还可以既包括数据同步异常时数据一致性校验设备的内部存储单元也包括外部存储设备。所述存储器20 用于存储安装于所述数据同步异常时数据一致性校验设备的应用软件及各类数据,例如所述安装数据同步异常时数据一致性校验设备的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有数据同步异常时数据一致性校验程序40,该数据同步异常时数据一致性校验程序40 可被处理器10所执行,从而实现本申请各实施例的数据同步异常时数据一致性校验方法。
[0088] 所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述数据同步异常时数据一致性校验方法等。
[0089] 所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述数据同步异常时数据一致性校验设备的信息以及用于显示可视化的用户界面。所述数据同步异常时数据一致性校验设备的部件10-30通过系统总线相互通信。
[0090] 在一实施例中,当处理器10执行所述存储器20中数据同步异常时数据一致性校验程序40时实现以下步骤:
[0091] 接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作;
[0092] 当接收到目标端数据库的报错通知时,判断当前的同步事务处于何种操作,其中所述操作包括依次执行的事务变更操作和事务提交操作;
[0093] 在当前操作为事务变更操作时,判断报错通知是否属于预设的错误类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作;
[0094] 在当前操作为事务提交操作时,重新连接目标端数据库,并查询辅助表中是否包含该同步事务的事务ID,并在不包含时将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。
[0095] 所述事务变更操作包括插入操作、更新操作和删除操作。
[0096] 进一步地,所述接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作的步骤包括:
[0097] 解析当前同步事务所在的日志消息包并获取日志消息包中的同步事务的事务ID;
[0098] 在目标端数据库中创建的辅助表中执行插入操作以将所述事务 ID插入辅助表中。
[0099] 进一步地,所述在当前操作为事务变更操作时,判断报错通知是否属于预设的报错类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作的步骤包括:
[0100] 在当前操作为事务变更操作时,根据目标端数据库返回的错误码识别错误的类型;
[0101] 判断该错误类型是否属于预设的错误类型;
[0102] 在该错误类型为预设的错误类型时,断开与目标端数据库的连接并回滚已进行的同步操作,并在回滚完成后重新将该同步事务的事务 ID插入辅助表中并重新进行事务同步操作。
[0103] 进一步地,所述在该错误类型为预设的错误类型时,断开与目标端数据库的连接并回滚已进行的同步操作,并在回滚完成后重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作的步骤还包括:
[0104] 在该错误类型不是预设的错误类型时,执行预设的同步事务出错处理流程。
[0105] 进一步地,所述预设的错误类型包括网络异常错误和数据库系统级错误。
[0106] 进一步地,所述在当前操作为事务提交操作时,重新连接目标端数据库,并查询辅助表中是否包含该同步事务的事务ID,并在不包含时将该同步事务的事务ID插入辅助表中并重新进行事务同步操作的步骤包括:
[0107] 在当前操作为事务提交操作时,断开与目标端数据库的连接并重新连接目标端数据库;
[0108] 调用目标端数据库中的辅助表,并查询所述辅助表中是否存在所述同步事务开始时登记的事务ID;
[0109] 在所述辅助表中不存在该事务ID时,将该同步事务ID插入目标端数据库中的辅助表中并重新开始进行事务同步操作。
[0110] 进一步的,所述在所述辅助表中不存在该事务ID时,将该同步事务ID插入目标端数据库中的辅助表中并重新开始进行事务同步操作的步骤还包括:
[0111] 在所述辅助表中存在该事务ID时,执行下一个同步事务。
[0112] 请参阅图6,其为本发明安装数据同步异常时数据一致性校验程序的系统较佳实施例的功能模块图。在本实施例中,安装数据同步异常时数据一致性校验程序的系统可以被分割成一个或多个模块,所述一个或者多个模块被存储于所述存储器20中,并由一个或多个处理器(本实施例为所述处理器10)所执行,以完成本发明。例如,在图6中,安装数据同步异常时数据一致性校验程序的系统可以被分割成事务标签插入模块21、操作判断模块22、变更操作错误处理模块 23和提交操作错误处理模块24。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述数据同步异常时数据一致性校验程序在所述数据同步异常时数据一致性校验设备中的执行过程。以下描述将具体介绍所述模块21-24的功能。
[0113] 事务标签插入模块21,用于接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作;
[0114] 操作判断模块22,用于当接收到目标端数据库的报错通知时,判断当前的同步事务处于何种操作,其中所述操作包括依次执行的事务变更操作和事务提交操作;
[0115] 变更操作错误处理模块23,用于在当前操作为事务变更操作时,判断报错通知是否属于预设的错误类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作;
[0116] 提交操作错误处理模块24,用于在当前操作为事务提交操作时,重新连接目标端数据库,并查询辅助表中是否包含该同步事务的事务 ID,并在不包含时将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。
[0117] 其中,所述事务变更操作包括插入操作、更新操作和删除操作。
[0118] 进一步的,事务标签插入模块21具体包括:
[0119] 事务标签获取单元,用于解析当前同步事务所在的日志消息包并获取日志消息包中的同步事务的事务ID;
[0120] 事务标签插入单元,用于在目标端数据库中创建的辅助表中执行插入操作以将所述事务ID插入辅助表中。
[0121] 变更操作错误处理模块23具体包括:
[0122] 错误接收单元,用于在当前操作为事务变更操作时,根据目标端数据库返回的错误码识别错误的类型;
[0123] 错误类型判断单元,用于判断该错误类型是否属于预设的错误类型;
[0124] 第一错误处理单元,用于在该错误类型为预设的错误类型时,断开与目标端数据库的连接并回滚已进行的同步操作,并在回滚完成后重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。
[0125] 优选的,所述第一错误处理单元还用于在该错误类型不是预设的错误类型时,执行预设的同步事务出错处理流程。
[0126] 优选的,所述预设的错误类型包括网络异常错误和数据库系统级错误。
[0127] 所述提交操作错误处理模块24具体包括:
[0128] 连接断开单元,用于在当前操作为事务提交操作时,断开与目标端数据库的连接并重新连接目标端数据库;
[0129] 查询单元,用于调用目标端数据库中的辅助表,并查询所述辅助表中是否存在所述同步事务开始时登记的事务ID;
[0130] 第二错误处理单元,在所述辅助表中不存在该事务ID时,将该同步事务ID插入目标端数据库中的辅助表中并重新开始进行事务同步操作。
[0131] 优选的,所述第二错误处理单元还用于在所述辅助表中存在该事务ID时,执行下一个同步事务。
[0132] 综上所述,本发明提供的数据同步异常时数据一致性校验方法、设备及存储介质中,所述方法包括:首先接收源端发送的日志消息包,并将日志消息包中的同步事务的事务ID插入目标端数据库中创建的辅助表中后进行事务同步操作;然后当接收到目标端数据库的报错通知时,判断当前的同步事务处于何种操作,其中所述操作包括依次执行的事务变更操作和事务提交操作;在当前操作为事务变更操作时,判断报错通知是否属于预设的错误类型,并在报错通知属于预设的错误类型时回滚已进行的同步操作并重新将该同步事务的事务ID插入辅助表中并重新进行事务同步操作,在当前操作为事务提交操作时,重新连接目标端数据库,并查询辅助表中是否包含该同步事务的事务 ID,并在不包含时将该同步事务的事务ID插入辅助表中并重新进行事务同步操作。本发明在同步过程中,同步事务开始时先在辅助表中登记事务标签,如果同步过程中出错,则通过根据当前的操作来判断事务标签是否已登记,从而进一步判断出是否已同步完成,以保证同步数据的一致性。
[0133] 当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。
[0134] 应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。