一种非同源数据库同步方法及装置与流程

文档序号:30786234发布日期:2022-07-16 08:08阅读:154来源:国知局
一种非同源数据库同步方法及装置与流程

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.在一实施例中,加载导出单元包括:
34.比对记录模块,用于调用数据比对工具对新旧环境的数据进行数据比对验证并记录验证结果;
35.批量加载模块,用于如果验证结果一致,则放开原数据库中数据的批量加载;
36.更新模块,用于更新目标数据库的批量任务状态以确保原数据库和目标数据库可以同时开始加载相同日期的数据。
37.在一实施例中,加载导出单元包括:
38.加载完成判断模块,用于根据批量任务信息中的任务状态字段判断任务是否处于完成加载的状态;
39.延时判断模块,用于如果否,则继续执行加载并在延时指定时间后再次判定是否处于完成加载的状态。
40.在一实施例中,加载导出单元包括:
41.日期记录模块,用于如果判断任务处于已完成加载的状态,则将该任务暂停并记录该任务的执行日期;
42.导出模块,用于将加载完成后的数据进行导出。
43.在一实施例中,目标数据库导入单元包括:
44.对导出的数据进行逐行转码操作;
45.判断转码后的数据长度是否和之前一致;
46.判断是否存在特殊字符;
47.根据数据长度一致性判断结果和特殊字符判断结果采用对应的方式对数据进行预处理。
48.本技术通过采取有针对性地暂停正在迁移的数据服务的方式需要迁移哪些数据表就暂停哪些数据表的批量任务,迁移比对完成后再放开该批量任务的加载,相比于现有的将全部批量任务暂停于某个指定时间点,然后对所有数据进行迁移比对,迁移完成后放开批量这种方式,能够保证在数据迁移过程中系统依然能够正常提供服务。克服了当待迁移的数据体量过大时,数据迁移将导致系统长时间内无法正常提供服务的问题。
附图说明
49.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
50.图1为本技术提供的一种非同源数据库同步方法流程图。
51.图2为本技术实施例中根据验证结果确定是否进行数据批量加载的方法流程图。
52.图3为本技术实施例中根据批量任务信息对数据表进行加载的方法流程图。
53.图4为本技术实施例中在加载完成后记录加载任务执行日期后进行数据导出的方法流程图。
54.图5为本技术实施例中特殊字符判断和预处理方法流程图。
55.图6为本技术实施例中数据转换流程图。
56.图7为本技术提供的一种非同源数据库同步装置的结构框图。
57.图8为本技术实施例中加载导出单元的结构框图。
58.图9为本技术另一实施例中加载导出单元的结构框图。
59.图10为本技术实施例中加载导出单元的结构框图。
60.图11为本技术实施例中目标数据库导入单元的结构框图。
61.图12为本技术实施例中一种电子设备的具体实施方式。
具体实施方式
62.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.在进行非同源数据库迁移时,如何将旧库中的存量数据无损迁移到新库中是其中最基础的一项工作。非同源数据库在进行数据同步时将面临非常多的操作步骤,包括暂停批量任务、生成导出导入脚本、数据导出、数据导入、数据核对、放开批量任务等,并且每个操作都需要确保正确完成以后才能进入下一步操作,因此如果要求人工按照以上步骤逐步核对、逐步操作,逐步完成不但工作量极大且极易出现纰漏,甚至可能导致整个数据同步工作的失败。
64.通过使用脚本自动生成的方法,生成新旧环境的导出导入脚本,来解决非同源数据库语句的兼容性问题。
65.在导出过程中,对导出的数据进行特殊字符转换;在导入完成后,调用数据比对工具对迁移完成的数据进行比对,利用这两个步骤来解决数据完整性的问题。
66.数据同步性问题和数据服务影响问题会相互影响,如果只考虑其中一个问题,另一个问题将被进一步放大。比如,将全部批量任务暂停于某个指定时间点,然后对所有数据进行迁移比对,迁移完成后放开批量,这种方法虽然可以非常好的解决数据同步性问题,但是如果待迁移的数据体量过大,那么无论是导出导入数据所需要的时间,还是数据核对所需要的时间都是非常巨大的,这将导致系统长时间内无法正常提供服务。
67.为了解决数据迁移和数据对外提供服务互相影响的问题,本技术提供了一种非同源数据库同步方法,如图1所示,包括:
68.s101:根据预存的映射关系表,查找获取的数据表对应的批量任务信息。
69.s102:根据批量任务信息对数据表进行加载,并在加载完成后记录加载任务执行日期后进行数据导出。
70.s103:对导出的数据进行格式转换处理,并在格式转换处理后判断在导出的数据中是否存在特殊字符并对数据进行预处理。
71.s104:使用脚本自动生成方法生成数据导入脚本将预处理后的数据导入至目标数据库中。
72.在一具体实施例中,在进行数据同步之前,利用元数据管理工具将批量任务与数据表的对应关系以参数表的方式维护到数据库中;根据脚本自动生成方法的要求将生成导出导入脚本所需要的参数信息维护到数据库中。
73.然后开始数据同步,首先以文件方式接收输入待迁移的数据表信息,根据准备工作中维护的对应关系参数表,找出该数据表对应的批量任务信息,如果未找到批量任务信息则在日志中进行记录并跳过该数据表迁移;其次对数据表进行加载并导出,对导出的数据进行格式转换处理变成统一格式后再对数据中的特殊字符进行处理,最后使用脚本自动生成方法生成数据导入脚本将预处理后的数据导入至目标数据库中。
74.在一实施例中,非同源数据库同步方法还包括:
75.在数据导入目标数据库后,对数据进行比对验证并根据验证结果确定是否进行数据批量加载。
76.在一实施例中,对数据进行比对验证并根据验证结果确定是否进行数据批量加载,如图2所示,包括:
77.s201:调用数据比对工具对新旧环境的数据进行数据比对验证并记录验证结果。
78.s202:如果验证结果一致,则放开原数据库中数据的批量加载。
79.s203:更新目标数据库的批量任务状态以确保原数据库和目标数据库可以同事开始加载相同日期的数据。
80.在一具体实施例中,数据导入完成后,读取导入日志的内容,判定导入操作是否成功并记录执行状态。如果成功则进行下一步操作,如果失败则跳过当前表的迁移;调用数据比对工具对新旧环境的数据进行数据比对验证,并将验证结果记录日志,如果验证失败则记录失败原因,如行数不一致、内容不一致等。根据数据比对验证结果采取如下步骤:如果数据比对验证通过,则放开旧环境的批量加载,同时更新新环境的批量任务状态,确保新旧环境可以同时开始加载同一日期的数据;如果数据比对验证不通过,则跳过当前表的迁移。数据同步操作人员可以根据数据同步工具提供的日志信息判断数据同步的完成情况,及时处理出现的报错问题。
81.在一实施例中,根据批量任务信息对数据表进行加载,如图3所示,包括:
82.s301:根据批量任务信息中的任务状态字段判断任务是否处于完成加载的状态。
83.s302:如果否,则继续执行加载并在延时指定时间后再次判定是否处于完成加载的状态。
84.在一具体实施例中,通过任务流程表的任务状态字段判定该任务是否处于完成加载的状态:如果未完成加载则延时指定时间后再次判定。
85.在一实施例中,在加载完成后记录加载任务执行日期后进行数据导出,如图4所示,包括:
86.s401:如果判断任务处于已完成加载的状态,则将该任务暂停并记录该任务的执行日期。
87.s402:将加载完成后的数据进行导出。
88.在一具体实施例中,如果已完成加载,则将该批量任务暂停,准备进行数据导出,同时将该任务的执行日期进行记录,待数据核对完成后将该日期更新到新环境的任务流程表中,确保新旧环境的数据同步。使用脚本自动生成的方法,读取事先维护好的数据表信息,自动生成旧环境的数据导出脚本,执行导出指令,导出旧环境的数据。数据导出完成后,监控模块读取导出日志的内容,对其中的关键信息进行模糊识别,判定导出操作是否成功完成,将导出状态记录到日志文件和日志表中。如果导出成功则进行下一步操作,如果失败则跳过当前表的迁移。
89.在一实施例中,对导出的数据进行格式转换处理并在格式转换处理后判断在导出的数据中是否存在特殊字符并对数据进行预处理,如图5所示,包括:
90.s501:对导出的数据进行逐行转码操作。
91.s502:判断转码后的数据长度是否和之前一致。
92.s503:判断是否存在特殊字符。
93.s504:根据数据长度一致性判断结果和特殊字符判断结果采用对应的方式对数据进行预处理。
94.在一具体实施例中,为了减少因为数据兼容性和脏数据对同步后的数据比对产生影响,因此针对导出的数据进行转换操作,数据转换流程图如图6所示。数据转换会将导出的文件重新生成多个文件进行存储。假定原始文件名称为original.txt,转换后会生成original_uncommon.txt、original_0x00.txt、original_both.txt、original_format.txt
四个新的数据文件。
95.数据转换操作逐行读取导出的数据文件,先将该行数据转换成bytes(字节)类型。再将bytes(字节)类型的文件转换成java内部字符串。如果该行数据中包含生僻字或者类似半个字符这种脏数据,此时数据的长度会比转换前的长度发生变化,否则数据长度不变。数据格式化完成后会将java内部字符串再转换成gbk文件进行输出。根据不同的判断情况,可以首先分成以下两大类情况。
96.情况一,如果转换前后数据长度不一致,说明该行数据存在生僻字、脏数据等问题。进而判断该行数据是否包含类似0x00(16进制)这类的特殊字符。此时又会出现以下两种情况。
97.(1)如果该行数据存在特殊字符,则说明该行数据同时出现了生僻字和特殊字符两种问题,因此我们将原始数据存入original_both.txt中以备后续确认,将格式化后的数据存入original_format.txt文件中。
98.(2)如果该行数据不存在特殊字符,则说明该行数据只出现了生僻字一种问题,因此我们将原始数据存入original_uncommon.txt中以备后续确认,将格式化后的数据存入original_format.txt文件中。
99.情况二,如果转换前后数据长度一致,说明该行数据不存在生僻字、脏数据等问题。此时只需要判断该行数据是否包含类似0x00(16进制)这类的特殊字符。根据判断结果会出现以下两种情况。
100.(1)如果该行数据存在特殊字符,则说明该行数据同时出现了特殊字符的问题,因此我们将原始数据存入original_0x00.txt中以备后续确认,将格式化后的数据存入original_format.txt文件中。
101.(2)如果该行数据不存在特殊字符,则说明该行数据未出现任何问题,因此我们只需要将原始数据存入original_format.txt文件中即可。
102.本技术通过采取有针对性地暂停正在迁移的数据服务的方式需要迁移哪些数据表就暂停哪些数据表的批量任务,迁移比对完成后再放开该批量任务的加载,相比于现有的将全部批量任务暂停于某个指定时间点,然后对所有数据进行迁移比对,迁移完成后放开批量这种方式,能够保证在数据迁移过程中系统依然能够正常提供服务。克服了当待迁移的数据体量过大时,数据迁移将导致系统长时间内无法正常提供服务的问题。
103.基于同一发明构思,本技术实施例还提供了一种非同源数据库同步装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该非同源数据库同步装置解决问题的原理与非同源数据库同步方法相似,因此非同源数据库同步装置的实施可以参考非同源数据库同步方法的实施。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
104.本技术提供的一种非同源数据库同步装置,如图7所示,包括:
105.查找单元701,用于根据预存的映射关系表,查找获取的数据表对应的批量任务信息;
106.加载导出单元702,用于根据批量任务信息对数据表进行加载,并在加载完成后记录加载任务执行日期后进行数据导出;
107.格式转换单元703,用于对导出的数据进行格式转换处理,并在格式转换处理后判断在导出的数据中是否存在特殊字符并对数据进行预处理;
108.目标数据库导入单元704,用于使用脚本自动生成方法生成数据导入脚本将预处理后的数据导入至目标数据库中。
109.在一实施例中,非同源数据库同步装置还包括:
110.比对验证单元,用于在数据导入目标数据库后,对数据进行比对验证并根据验证结果确定是否进行数据批量加载。
111.在一实施例中,如图8所示,加载导出单元702包括:
112.比对记录模块801,用于调用数据比对工具对新旧环境的数据进行数据比对验证并记录验证结果;
113.批量加载模块802,用于如果验证结果一致,则放开原数据库中数据的批量加载;
114.更新模块803,用于更新目标数据库的批量任务状态以确保原数据库和目标数据库可以同时开始加载相同日期的数据。
115.在一实施例中,如图9所示,加载导出单元702包括:
116.加载完成判断模块901,用于根据批量任务信息中的任务状态字段判断任务是否处于完成加载的状态;
117.延时判断模块902,用于如果否,则继续执行加载并在延时指定时间后再次判定是否处于完成加载的状态。
118.在一实施例中,如图10所示,加载导出单元702包括:
119.日期记录模块1001,用于如果判断任务处于已完成加载的状态,则将该任务暂停并记录该任务的执行日期;
120.导出模块1002,用于将加载完成后的数据进行导出。
121.在一实施例中,如图11所示,目标数据库导入单元704包括:
122.转码模块1101,用于对导出的数据进行逐行转码操作;
123.判断模块1102,用于判断转码后的数据长度是否和之前一致;
124.特殊字符判断模块1103,用于判断是否存在特殊字符;
125.判断预处理模块1104,用于根据数据长度一致性判断结果和特殊字符判断结果采用对应的方式对数据进行预处理。
126.本技术的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图12,所述电子设备具体包括如下内容:
127.处理器(processor)1201、内存1202、通信接口(communications interface)1203、总线1204和非易失性存储器1205;
128.其中,所述处理器1201、内存1202、通信接口1203通过所述总线1204完成相互间的通信;
129.所述处理器1201用于调用所述内存1202和非易失性存储器1205中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
130.s101:根据预存的映射关系表,查找获取的数据表对应的批量任务信息。
131.s102:根据批量任务信息对数据表进行加载,并在加载完成后记录加载任务执行
日期后进行数据导出。
132.s103:对导出的数据进行格式转换处理,并在格式转换处理后判断在导出的数据中是否存在特殊字符并对数据进行预处理。
133.s104:使用脚本自动生成方法生成数据导入脚本将预处理后的数据导入至目标数据库中。
134.本技术的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
135.s101:根据预存的映射关系表,查找获取的数据表对应的批量任务信息。
136.s102:根据批量任务信息对数据表进行加载,并在加载完成后记录加载任务执行日期后进行数据导出。
137.s103:对导出的数据进行格式转换处理,并在格式转换处理后判断在导出的数据中是否存在特殊字符并对数据进行预处理。
138.s104:使用脚本自动生成方法生成数据导入脚本将预处理后的数据导入至目标数据库中。
139.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理
设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1