本发明涉及数据同步,特别是涉及一种数据同步方法、存储介质、设备及计算机程序产品。
背景技术:
1、数据实时同步可分为三个阶段,第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源端数据和目标数据进行比对校验,以确认在数据同步过程中没有丢失数据。
2、在第二阶段的增量同步过程中,某个事务的一个变更需要经过初次解析(解析出变更类型),经过重排序缓冲器对事务排序,再进行二次解析,最后提交保存到本地存储。
3、然而,当某个事务a开始(标记为startlsn)后,如果长时间未提交,会在源端产生大量的事务日志。这些日志记录了事务a的变更操作。当源端同步软件开始解析这些日志时,如果解析过程中遇到异常终止,那么最后解析完成的lsn(标记为flushlsn)将不完整。
4、这意味着,当源端软件需要恢复解析时,它需要从事务a的startlsn开始,重新解析startlsn到flushlsn之间的事务日志。这种重复解析不仅增加了性能损耗,而且会延长同步的延迟时间。
技术实现思路
1、鉴于上述问题,本发明提出了一种能够克服上述问题或者部分地解决上述问题的数据同步方法、存储介质、设备及计算机程序产品。
2、本发明第一方面的一个目的是要有效减少解析长事务时软件异常恢复的时间,降低性能损耗。
3、本发明第一方面的另一个目的是要合理确定异常恢复时的恢复起点,优化恢复流程。
4、本发明第一方面的又一个目的是要避免在快照期间对缓冲器中的事务数据进行修改,保障数据的一致性和完整性。
5、特别地,根据本发明的第一方面,本发明提供了一种数据同步方法,包括:
6、从初次解析的事务数据中提取事务id和日志序列号,并将提取的所述事务id和所述日志序列号存入缓冲器中;
7、定期检查当前时刻与所述缓冲器中当前缓存事务的最早摄入时刻的差值是否大于预设阈值;
8、若是,对所述缓冲器中的所有事务数据进行快照;
9、生成本次快照的元信息,并将生成所述快照时所述缓冲器中的所有事务的最大日志序列号记为快照序列号。
10、可选地,在事务的提交过程中,所述方法还包括:
11、从所述缓冲器中逐条读取所述事务的事务数据;
12、为每条所述事务数据添加所述缓冲器中的所有事务的最小日志序列号;
13、将所述事务完整地提交至本地存储中。
14、可选地,在事务的恢复过程中,所述方法还包括:
15、从本地存储中获取最后提交事务的最小日志序列号;
16、加载最后生成的快照元信息并从中读取快照序列号;
17、当所述最小日志序列号大于等于所述快照序列号时,从所述最小日志序列号继续解析事务数据;
18、当所述最小日志序列号小于所述快照序列号时,先加载快照中的事务数据,再从所述快照序列号继续解析事务数据。
19、可选地,在为每条事务数据添加所述缓冲器中的所有事务的最小日志序列号的步骤之后,还包括:
20、从所述缓冲器中清除所述事务的事务数据;
21、重置所述缓冲器中的所有事务的最小日志序列号和最早摄入时间。
22、可选地,所述缓冲器通过散列表缓存事务id和事务数据,将提取的所述事务id和所述日志序列号存入缓冲器中的步骤包括:
23、向所述散列表中对应追加所述事务id和所述日志序列号。
24、可选地,对缓冲器中的所有事务数据进行快照的步骤包括:
25、将所述散列表中的所有事务数据序列化到磁盘。
26、可选地,在对所述缓冲器中的所有事务数据进行快照的过程中,所述方法还包括:
27、暂停对所述缓冲器中事务数据的修改操作。
28、根据本发明的第二方面,本发明提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现上述中任意一种数据同步方法。
29、根据本发明的第三方面,本发明提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现上述中任意一种数据同步方法。
30、根据本发明的第四方面,本发明提供了一种计算机程序产品,包括机器可执行程序,所述机器可执行程序被处理器执行时用于实现上述中任意一种数据同步方法。
31、本发明的数据同步方法,首先从初次解析的事务数据中提取事务id和日志序列号,并将提取的事务id和日志序列号存入缓冲器中,若检查出当前时刻与缓冲器中当前缓存事务的最早摄入时刻的差值大于预设阈值,说明此时的事务为长事务,需要对缓冲器中的所有事务数据进行快照,然后生成本次快照的元信息,并将生成快照时缓冲器中的所有事务的最大日志序列号记为快照序列号。这样,如果后续的解析过程中遇到异常终止,可以依据快照元信息从快照序列号处继续解析,而无需从头重新解析,这可以有效降低同步延迟及性能损耗,实现高效且可靠的数据同步。
32、进一步地,本发明的数据同步方法,在事务提交的过程中,为每条事务数据添加缓冲器中的所有事务的最小日志序列号,这样,在事务的恢复过程中,可以从本地存储中获取最后提交事务的最小日志序列号,然后加载最后生成的快照元信息并从中读取快照序列号,当最小日志序列号大于等于快照序列号时,说明已解析完提交到本地存储的数据,恢复时不需要快照,可以从最小日志序列号继续解析;当最小日志序列号小于快照序列号时,先加载快照中的事务数据,再从快照序列号继续解析事务数据。如此,可以合理确定异常恢复时的恢复起点,优化恢复流程。
33、进一步地,本发明的数据同步方法,在对缓冲器中的所有事务数据进行快照的过程中,暂停对缓冲器中事务数据的修改操作。这是因为在进行快照时,需要确保数据的状态是一致的,以便在异常终止后能够准确地恢复数据。如果在进行快照时允许对数据进行修改,可能会导致数据的不一致性或丢失。通过暂停修改操作,可以确保快照时的数据状态是稳定的,并且与后续的解析和处理操作无关。这样可以避免因数据不一致而导致的同步错误或数据损坏。同时,暂停修改操作还可以提高快照操作的效率,因为这样可以减少在快照过程中需要处理的数据量。
34、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
1.一种数据同步方法,包括:
2.根据权利要求1所述的数据同步方法,其中,在事务的提交过程中,所述方法还包括:
3.根据权利要求2所述的数据同步方法,其中,在事务的恢复过程中,所述方法还包括:
4.根据权利要求2所述的数据同步方法,其中,在为每条事务数据添加所述缓冲器中的所有事务的最小日志序列号的步骤之后,还包括:
5.根据权利要求2所述的数据同步方法,其中,
6.根据权利要求5所述的数据同步方法,其中,对缓冲器中的所有事务数据进行快照的步骤包括:
7.根据权利要求1所述的数据同步方法,其中,在对所述缓冲器中的所有事务数据进行快照的过程中,所述方法还包括:
8.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1-7任一项所述的数据同步方法。
9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1-7任一项所述的数据同步方法。
10.一种计算机程序产品,包括机器可执行程序,所述机器可执行程序被处理器执行时用于实现权利要求1-7中任一项所述的数据同步方法。