1.本公开涉及数据同步技术领域,尤其涉及一种数据装载时的异常处理方法、装置及设备。
背景技术:
2.存量数据的初始化装载,是在利用数据同步工具进行数据实时同步时的一个重要阶段。存量数据的初始化装载主要包括:表结构的初始化装载和存量数据的初始化装载。其中,表数据的初始化装载阶段的主要性能指标为数据的最大吞吐量。想要实现这个指标,最主要的两个提升方向是:实际的数据装载的耗时和发生异常时的处理时间。
3.目前的数据装载方案往往只关注实际数据装载过程中的耗时,而忽视数据装载时出现异常的处理方法。实际上,数据装载过程中一旦发生异常就只能停止装载,需要手动处理异常后再重新装载。手动处理数据异常是一个比较繁杂和耗时的工作,先是找出异常数据就非常麻烦,接着处理完异常数据后再一遍又一遍的重复尝试装载,更加繁杂耗时。该手动处理过程浪费的时间短则数小时,长则以天计。因此,在面对数据装载发生异常时,目前的数据装载方法极为繁杂耗时,装载效率低。
技术实现要素:
4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种数据装载时的异常处理方法、装置及设备。
5.本公开提供了一种数据装载时的异常处理方法,包括:
6.将源端数据库中数据同步至目标端数据库;当数据同步的过程中发生数据提交异常时,将批量装载模式调整为单条装载模式,并执行如下写入操作:
7.判断是否存在第一文件;其中,所述第一文件是以异常数据所属数据表的表名称为文件名,且后缀为预设第一后缀的错误记录文件;如果不存在所述第一文件,则根据所述表名称和所述第一后缀新建第一文件,并在所述第一文件中写入所述数据表的结构定义信息;如果存在所述第一文件,则不做操作;
8.判断是否存在第二文件;其中,所述第二文件是以所述数据表的表名称为文件名,且后缀为预设第二后缀的错误记录文件;如果存在所述第二文件,则追加所述异常数据;如果不存在所述第二文件,则根据所述表名称和所述第二后缀新建第二文件,并在所述第二文件中写入所述异常数据;
9.根据以上写入操作,将所述异常数据写入外部的所述错误记录文件。
10.可选的,所述方法还包括:
11.通过初始化装载程序从所述错误记录文件中获取所述异常数据;按照修改和/或删除的方式对所述异常数据进行修订,得到修订后数据;将所述修订后数据写入目标端数据库。
12.可选的,所述将所述修订后数据写入目标端数据库,包括:
13.通过所述初始化装载程序将所述错误记录文件中的修订后数据加载为dbmsevent记录;将所述dbmsevent记录写入目标端数据库。
14.可选的,所述判断是否存在第一文件,包括:当调用写出错误记录的方法时,判断是否存在第一文件。
15.可选的,所述第一文件用于存储所述数据表的结构定义信息,所述第二文件用于存储所述异常数据。
16.可选的,所述数据表的结构定义信息包括:按照表格形式定义的所述异常数据的位置、名称和类型。
17.可选的,所述第一后缀为def,所述第二后缀为dat。
18.本公开还提供了一种数据装载时的异常处理装置,包括:
19.同步模块,用于将源端数据库中数据同步至目标端数据库;
20.异常处理模块,用于当数据同步的过程中发生数据提交异常时,将批量装载模式调整为单条装载模式,并执行如下写入操作:
21.第一判断模块,用于判断是否存在第一文件;其中,所述第一文件是以异常数据所属数据表的表名称为文件名,且后缀为预设第一后缀的错误记录文件;以及,在不存在所述第一文件的情况下,根据所述表名称和所述第一后缀新建第一文件,并在所述第一文件中写入所述数据表的结构定义信息;在存在所述第一文件的情况下,不做操作;
22.第二判断模块,用于判断是否存在第二文件;其中,所述第二文件是以所述数据表的表名称为文件名,且后缀为预设第二后缀的错误记录文件;在存在所述第二文件的情况下,追加所述异常数据;在不存在所述第二文件的情况下,根据所述表名称和所述第二后缀新建第二文件,并在所述第二文件中写入所述异常数据;
23.写入模块,用于根据以上写入操作,将所述异常数据写入外部的所述错误记录文件。
24.本公开还提供了一种电子设备,所述电子设备包括:
25.处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述方法。
26.本公开还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述方法。
27.本公开实施例提供的技术方案与现有技术相比具有如下优点:
28.本公开实施例提供的一种数据装载时的异常处理方法、装置及设备,该方法包括:将源端数据库中数据同步至目标端数据库;当数据同步的过程中发生数据提交异常时,将批量装载模式调整为单条装载模式,并执行如下写入操作:判断是否存在第一文件;如果不存在第一文件,则根据表名称和第一后缀新建第一文件,并在第一文件中写入数据表的结构定义信息;如果存在第一文件,则不做操作;判断是否存在第二文件;如果存在第二文件,则追加异常数据;如果不存在第二文件,则根据表名称和第二后缀新建第二文件,并在第二文件中写入异常数据;根据以上写入操作,将异常数据写入外部的错误记录文件。本公开实施例能够显著降低对原数据装载程序的性能影响,有效缩减整体的装载时间,提高整体的装载效率。
附图说明
29.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
30.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
31.图1为本公开实施例所述数据装载时的异常处理方法流程图;
32.图2为本公开实施例所述数据同步过程示意图;
33.图3为本公开实施例所述异常数据同步过程示意图;
34.图4为本公开实施例所述数据装载时的异常处理装置结构框图。
具体实施方式
35.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
36.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
37.图1为本公开实施例提供的一种数据装载时的异常处理方法流程图,该方法包括如下步骤:
38.步骤s102,将源端数据库中数据同步至目标端数据库。
39.参照如图2,在数据同步初始化装载时,先通过读线程从远端数据库读取待入库数据,将待入库数据加入缓存队列;而后写线程将缓存队列中的正常数据同步至目标数据库。
40.步骤s104,当数据同步的过程中发生数据提交异常时,将批量装载模式调整为单条装载模式,并执行写入操作。
41.在本实施例中,当数据同步的过程中发生数据提交异常时,也即写线程批量导入数据出现异常时,将批量装载模式调整为单条装载模式,并按照预设的写入操作将异常数据写入错误记录文件。批量装载模式下,可能每次装载1000条数据,但是实际上异常记录仅仅是其中的某几条。调整为单条装载模式后,对1000条数据进行逐条装载,在此情况下,可能有990条装载成功,只会对不成功、也即发生数据提交异常的10条数据执行写入操作。本实施例通过将批量装载模式调整为单条装载模式,可以有效缩减异常数据的范围。
42.上述错误记录文件包括第一文件和第二文件,第一文件用于存储异常数据所属的数据表的结构定义信息,第二文件用于存储异常数据。
43.本实施例的写入操作参照如下步骤s106至s116所示。
44.步骤s106,判断是否存在第一文件。其中,第一文件是以异常数据所属数据表的表名称为文件名,且后缀为预设第一后缀的错误记录文件;在实际应用中,该第一后缀为def。
45.具体的,当调用写出错误记录(write error record)的方法时,判断是否存在第一文件。如果不存在第一文件,则执行如下步骤s108;如果存在第一文件,则参照步骤s110,即不做操作。
46.步骤s108,根据表名称和第一后缀新建第一文件,并在第一文件中写入数据表的结构定义信息。具体的,在不存在第一文件的情况下,新建第一文件,并在该新建的第一文件中写入数据表的结构定义信息。
47.步骤s110,不做操作。具体的,在已经存在第一文件的情况下,不做操作。
48.在本实施例中,第一文件存储的数据表的结构定义信息包括:按照表格形式定义的异常数据的位置、名称和类型。第一文件的格式举例如下。
[0049][0050]
步骤s112,判断是否存在第二文件。其中,第二文件是以数据表的表名称为文件名,且后缀为预设第二后缀的错误记录文件;在实际应用中,该第二后缀为dat。如果存在第二文件,则执行如下步骤s114;如果不存在第二文件,则执行如下步骤s116。
[0051]
步骤s114,追加异常数据。具体的,在存在第二文件的情况下,在该第二文件中追加异常数据。
[0052]
步骤s116,根据表名称和第二后缀新建第二文件,并在第二文件中写入异常数据。具体的,在不存在第二文件的情况下,新建第二文件,并在该新建的第二文件中写入异常数据。
[0053]
步骤s118,根据以上写入操作,将异常数据写入外部的错误记录文件。
[0054]
至此,即完成了异常数据的写出。
[0055]
本实施例提供的上述数据装载时的异常处理方法,仅在数据同步的过程中出现异常数据时才执行写入操作,进入异常处理逻辑,并且,在出现异常数据时,基于写入操作仅记录异常数据,无需终止数据同步整体的装载过程;因此,本技术方案能够显著降低对原数据装载程序的性能影响,有效缩减整体的装载时间,提高整体的装载效率。
[0056]
此外,参照图3所示,本公开实施例还可以提供一种对错误数据修订后重新装载的方法。该方法包括如下步骤:
[0057]
步骤1,通过初始化装载程序从错误记录文件中获取异常数据。其中,初始化装载程序用于实现一种加载本地错误记录文件的读取模式,可以将本地的每个错误记录文件加载为一个dbmsevent记录。
[0058]
步骤2,按照修改和/或删除的方式对异常数据进行修订,得到修订后数据。
[0059]
在本实施例中,修改异常数据诸如将异常数据中错误的值修改成正确的值,或者,将异常数据设置为null,表示不要该异常数据了。删除异常数据表示当前出现异常的数据可以忽略。
[0060]
步骤3,将修订后数据写入目标端数据库。
[0061]
修订完错误记录文件中的异常数据后,重新运行初始化装载程序。通过初始化装载程序将错误记录文件中的修订后数据加载为dbmsevent记录;然后再将dbmsevent记录写入目标端数据库。
[0062]
如图3所示,将dbmsevent记录写入目标端数据库的过程与图2一致,在该过程中同样可以对出现异常的数据进行二次记录,将二次记录得到的异常数据写入到外部错误记录文件,以及对异常数据进行二次修订和写入;由此可以形成一个闭环,允许在数据同步初始化装载遇到异常数据时,不终止装载程序,并快速定位异常记录,还可以通过修订异常数据再次快速加载,可以有效的缩短数据同步初始化装载时因为异常数据的停机时间。
[0063]
综上,针对数据同步初始化装载过程中,存在异常数据导致数据装载终止的场景,本公开实施例提出一种异常处理方法,在数据装载异常时捕获异常数据,并动态调整装载策略,使用第一文件结合第二文件的错误记录文件对具体的异常数据进行记录。还结合异常数据的修订以及将修订后数据写入目标端数据库,进一步地有效缩短了在数据同步初始化装载时发生异常后的排错和恢复时间,达到缩减整体的装载时间,提高整体的装载效率。
[0064]
如图4所示,本公开实施例还提供一种数据装载时的异常处理装置,该装置包括如下模块:
[0065]
同步模块402,用于将源端数据库中数据同步至目标端数据库;
[0066]
异常处理模块404,用于当数据同步的过程中发生数据提交异常时,将批量装载模式调整为单条装载模式,并执行如下写入操作:
[0067]
第一判断模块406,用于判断是否存在第一文件;其中,第一文件是以异常数据所属数据表的表名称为文件名,且后缀为预设第一后缀的错误记录文件;以及,在不存在第一文件的情况下,根据表名称和第一后缀新建第一文件,并在第一文件中写入数据表的结构定义信息;在存在第一文件的情况下,不做操作;
[0068]
第二判断模块408,用于判断是否存在第二文件;其中,第二文件是以数据表的表名称为文件名,且后缀为预设第二后缀的错误记录文件;在存在第二文件的情况下,追加异常数据;在不存在第二文件的情况下,根据表名称和第二后缀新建第二文件,并在第二文件中写入异常数据;
[0069]
写入模块410,用于根据以上写入操作,将异常数据写入外部的错误记录文件。
[0070]
本实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0071]
进一步,本实施例还提供一种电子设备,电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述实施例提供的数据装载时的异常处理方法。
[0072]
进一步,本实施例还提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述实施例提供的数据装载时的异常处理方法。
[0073]
本公开实施例所提供的一种数据装载时的异常处理方法、装置、电子设备及介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0074]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之
间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0075]
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种数据装载时的异常处理方法,其特征在于,包括:将源端数据库中数据同步至目标端数据库;当数据同步的过程中发生数据提交异常时,将批量装载模式调整为单条装载模式,并执行如下写入操作:判断是否存在第一文件;其中,所述第一文件是以异常数据所属数据表的表名称为文件名,且后缀为预设第一后缀的错误记录文件;如果不存在所述第一文件,则根据所述表名称和所述第一后缀新建第一文件,并在所述第一文件中写入所述数据表的结构定义信息;如果存在所述第一文件,则不做操作;判断是否存在第二文件;其中,所述第二文件是以所述数据表的表名称为文件名,且后缀为预设第二后缀的错误记录文件;如果存在所述第二文件,则追加所述异常数据;如果不存在所述第二文件,则根据所述表名称和所述第二后缀新建第二文件,并在所述第二文件中写入所述异常数据;根据以上写入操作,将所述异常数据写入外部的所述错误记录文件。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:通过初始化装载程序从所述错误记录文件中获取所述异常数据;按照修改和/或删除的方式对所述异常数据进行修订,得到修订后数据;将所述修订后数据写入目标端数据库。3.根据权利要求2所述的方法,其特征在于,所述将所述修订后数据写入目标端数据库,包括:通过所述初始化装载程序将所述错误记录文件中的修订后数据加载为dbmsevent记录;将所述dbmsevent记录写入目标端数据库。4.根据权利要求1所述的方法,其特征在于,所述判断是否存在第一文件,包括:当调用写出错误记录的方法时,判断是否存在第一文件。5.根据权利要求1所述的方法,其特征在于,所述第一文件用于存储所述数据表的结构定义信息,所述第二文件用于存储所述异常数据。6.根据权利要求1所述的方法,其特征在于,所述数据表的结构定义信息包括:按照表格形式定义的所述异常数据的位置、名称和类型。7.根据权利要求1所述的方法,其特征在于,所述第一后缀为def,所述第二后缀为dat。8.一种数据装载时的异常处理装置,其特征在于,包括:同步模块,用于将源端数据库中数据同步至目标端数据库;异常处理模块,用于当数据同步的过程中发生数据提交异常时,将批量装载模式调整为单条装载模式,并执行如下写入操作:第一判断模块,用于判断是否存在第一文件;其中,所述第一文件是以异常数据所属数据表的表名称为文件名,且后缀为预设第一后缀的错误记录文件;以及,在不存在所述第一文件的情况下,根据所述表名称和所述第一后缀新建第一文件,并在所述第一文件中写入所述数据表的结构定义信息;在存在所述第一文件的情况下,不做操作;
第二判断模块,用于判断是否存在第二文件;其中,所述第二文件是以所述数据表的表名称为文件名,且后缀为预设第二后缀的错误记录文件;在存在所述第二文件的情况下,追加所述异常数据;在不存在所述第二文件的情况下,根据所述表名称和所述第二后缀新建第二文件,并在所述第二文件中写入所述异常数据;写入模块,用于根据以上写入操作,将所述异常数据写入外部的所述错误记录文件。9.一种电子设备,其特征在于,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-7中任一所述的方法。10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-7中任一所述的方法。
技术总结
本公开涉及一种数据装载时的异常处理方法、装置及设备,该方法包括:将源端数据库中数据同步至目标端数据库;当发生数据提交异常时,将批量装载模式调整为单条装载模式,执行如下写入操作:判断是否存在第一文件;如果不存在,则根据表名称和第一后缀新建第一文件,并在第一文件中写入数据表的结构定义信息;如果存在,则不做操作;判断是否存在第二文件;如果存在,则追加异常数据;如果不存在,则根据表名称和第二后缀新建第二文件,并在第二文件中写入异常数据;根据以上写入操作,将异常数据写入外部的错误记录文件。本公开能够显著降低对原数据装载程序的性能影响,有效缩减整体的装载时间,提高整体的装载效率。提高整体的装载效率。提高整体的装载效率。
技术研发人员:王凯龙
受保护的技术使用者:北京人大金仓信息技术股份有限公司
技术研发日:2021.11.29
技术公布日:2022/3/8