本发明涉及数据同步,尤其涉及一种数据同步方法、装置、设备、介质和计算机程序产品。
背景技术:
1、源端数据库与目标端数据库进行数据同步时分为三个阶段,第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源端数据和目标数据进行比对校验,以确认在数据同步过程中没有丢失数据。
2、在第二阶段增量数据同步时,通过分析源端数据库日志获取增量数据,从而将增量数据同步至目标端数据库。此种方式是解析源端数据库在线日志或者归档日志,获得数据的增删变化,再将这些变化以事务的形式发送至目标端数据库。目标端数据库将事务恢复成语句并执行以实现增量数据的同步,保证源端数据库与目标端数据库的数据一致。
3、为了提高同步效率,会批量将各个事务传输至目标端数据库。但某个批次的事务在提交至目标端数据库时报错,会选定该批次中排序最后的事务作为出错的事务,但实际上不是排序最后的事务出错,因而需要将这个批次的各个事务进行单独提交以找到出错的事务,出错的事务查找效率较低。
技术实现思路
1、本发明提供一种数据同步方法、装置、设备、介质和计算机程序产品,用以解决出错的事务查找效率较低的问题。
2、一方面,本发明提供一种数据同步方法,包括:
3、接收目标端数据库反馈的第一集合的第一执行结果,所述第一执行结果用于指示所述目标端数据库批量执行所述第一集合中的各个事务是否出现执行错误;
4、在所述第一执行结果指示所述第一集合中的事务执行错误时,将所述第一集合中的各个事务划分为多个第二集合,并将各个所述第二集合发送至所述目标端数据库,以供所述目标端数据库分别批量执行所述第二集合中的各个事务;
5、接收目标端数据库反馈的每个所述第二集合的第二执行结果,并根据各个所述第二执行结果获取执行错误的第二集合,作为目标集合;
6、在所述目标集合中的各个事务的第一数量小于第一预设数量时,将所述目标集合的各个事务发送至所述目标端数据库,以供所述目标端数据库分别执行所述目标集合中的各个事务;
7、接收所述目标集合中的每个所述事务的第三执行结果,并根据各个所述第三执行结果,在所述目标集合中的各个事务中,确定出现执行错误的目标事务,且输出提示信息,所述提示信息用于指示所述目标事务出现执行错误。
8、在一实施例中,所述将所述第一集合中的各个事务划分为多个第二集合的步骤包括:
9、确定所述第一集合中各个所述事务的第二数量;
10、根据所述第二数量与第二预设数量的比对结果,对所述第一集合中的各个事务进行划分,得到多个第二集合。
11、在一实施例中,所述根据所述第二数量与第二预设数量的比对结果,对所述第一集合中的各个事务进行划分,得到多个第二集合的步骤包括:
12、在所述比对结果指示所述第二数量小于或等于第二预设数量时,将所述第一集合划分为两个第二集合,一个所述第二集合中事务的数量与另一个所述第二集合中事务的数量不相等。
13、在一实施例中,所述根据所述第二数量与第二预设数量的比对结果,对所述第一集合中的各个事务进行划分,得到多个第二集合的步骤包括:
14、在所述比对结果指示所述第二数量大于第二预设数量时,将所述第一集合中的各个事务进行划分,得到多个第二集合,各个所述第二集合中事务的数量大于或等于第三预设数量。
15、在一实施例中,所述根据各个所述第二执行结果获取执行错误的第二集合的步骤之后,还包括:
16、在所述目标集合中的各个事务的第一数量大于或等于第一预设数量时,将所述目标集合更新为第一集合;
17、将更新后的所述第一集合发送至所述目标端数据库,并返回执行所述接收目标端数据库反馈的第一集合的第一执行结果的步骤。
18、在一实施例中,所述接收目标端数据库反馈的第一集合的第一执行结果的步骤之前,还包括:
19、在检测到批量入库功能启动时,基于各个待执行的事务获取第一集合,并将所述第一集合发送至所述目标端数据库;
20、所述将所述目标集合的各个事务发送至所述目标端数据库的步骤包括:
21、关闭所述批量入库功能,并将所述目标集合的各个事务发送至所述目标端数据库。
22、另一方面,本发明还提供一种数据同步装置,包括:
23、第一接收模块,用于接收目标端数据库反馈的第一集合的第一执行结果,所述第一执行结果用于指示所述目标端数据库批量执行所述第一集合中的各个事务是否出现执行错误;
24、处理模块,用于在所述第一执行结果指示所述第一集合中的事务执行错误时,将所述第一集合中的各个事务划分为多个第二集合,并将各个所述第二集合发送至所述目标端数据库,以供所述目标端数据库分别批量执行所述第二集合中的各个事务;
25、第二接收模块,用于接收目标端数据库反馈的每个所述第二集合的第二执行结果,并根据各个所述第二执行结果获取执行错误的第二集合,作为目标集合;
26、发送模块,用于在所述目标集合中的各个事务的第一数量小于第一预设数量时,将所述目标集合的各个事务发送至所述目标端数据库,以供所述目标端数据库分别执行所述目标集合中的各个事务;
27、第三接收模块,用于接收所述目标集合中的每个所述事务的第三执行结果,并根据各个所述第三执行结果,在所述目标集合中的各个事务中,确定出现执行错误的目标事务,且输出提示信息,所述提示信息用于指示所述目标事务出现执行错误。
28、另一方面,本发明还提供一种数据同步设备,包括:存储器和处理器;
29、所述存储器存储计算机执行指令;
30、所述处理器执行存储器存储的计算机执行指令,使得数据同步设备执行如上所述的数据同步方法。
31、另一方面,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上所述的数据同步方法。
32、另一方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的数据同步方法。
33、本发明提供的数据同步方法、装置、设备、介质和计算机程序产品,当接收到目标端数据库反馈第一集合中的事务出错时,将第一集合中的各个事务划分为多个第二集合,再将各个第二集合发送至目标端数据库,且基于目标端数据库反馈的第二集合中事务的执行结果,在各个第二集合中确定执行出错的集合作为目标集合,若是目标集合中事务的数量少于预设数量,将目标集合中各个事务分别发送至目标端数据库进行单独执行,以确定出错的事务。本技术中,当批量发送的事务出错时,将批量的事务分为小批量的事务进行传输,从而在多个小批量事务中确定出现执行错误的小批量的事务,也即部分的事务仍然是以批量的形式传输至目标端数据库,目标端数据库无需单独执行每个事务,缩短了出错事务的查找时间,提高了出错事务的查找效率。