数据迁移方法、设备及存储介质与流程
本技术涉及数据处理与数据库,尤其涉及一种数据迁移方法、设备及存储介质。
背景技术:
1、随着企业数字化转型的深入推进,数据库机房迁移、云化改造等场景日益增多,mongodb(mongo database,芒果数据库)作为非关系型数据库,凭借其灵活的数据模型和高并发处理能力,被广泛应用于各类核心业务系统。
2、目前,常见的mongodb数据迁移方式通常在存量数据迁移过程中,将写入请求同时下发至源数据库与目标数据库执行,以此实现迁移过程中的业务零停机。然而,该方案在存量数据与增量数据并行写入的复杂场景下,当同一主键的数据在存量同步任务处理期间被实时业务更新时,两路写入的完成顺序存在不确定性:若存量数据的写入操作晚于实时增量数据的写入操作完成,则存量数据会覆盖目标库中已写入的新数据,导致源库数据与目标库数据不一致的问题,无法有效保障全量迁移数据的最终一致性。
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、基于所述差异数据集合确定数据修复策略,其中,所述数据修复策略包括数据写入、数据删除和数据更新中的至少一种;
34、遍历所述差异数据集合,基于所述数据修复策略对所述已写入数据执行自动修复操作。
35、此外,为实现上述目的,本技术还提供一种数据迁移装置,所述数据迁移装置包括:
36、响应模块,用于响应于数据迁移指令,获取源数据库中的第一存量数据及所述第一存量数据的初始标识信息;
37、获取模块,用于在目标数据库中存在所述初始标识信息的情况下,获取所述第一存量数据的第一版本信息,并获取所述目标数据库中已写入数据的第二版本信息;
38、写入模块,用于在所述第一版本信息所表征的数据更新时序晚于所述第二版本信息所表征的数据更新时序时,将所述第一存量数据写入至所述目标数据库。
39、此外,为实现上述目的,本技术还提出一种数据迁移设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序配置为实现如上文所述的数据迁移方法的步骤。
40、此外,为实现上述目的,本技术还提供一种存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有实现数据迁移方法的程序,所述实现数据迁移方法的程序被处理器执行以实现如上所述数据迁移方法的步骤。
41、此外,为实现上述目的,本技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的数据迁移方法的步骤。
42、本技术提供了一种数据迁移方法,本技术响应于数据迁移指令,获取源数据库中的第一存量数据及所述第一存量数据的初始标识信息;在目标数据库中存在所述初始标识信息的情况下,获取所述第一存量数据的第一版本信息,并获取所述目标数据库中已写入数据的第二版本信息;在所述第一版本信息所表征的数据更新时序晚于所述第二版本信息所表征的数据更新时序时,将所述第一存量数据写入至所述目标数据库。
43、综上可知,本技术通过在接收到数据迁移指令后,获取源库中待迁移的第一存量数据及该第一存量数据的标识信息;在目标库中存在该标识信息的情况下,比较第一存量数据的第一版本信息及目标库中已写入数据的第二版本信息,并在第一版本信息所表征的数据更新时序晚于第二版本信息所表征的数据更新时序时,将第一存量数据写入目标数据库。如此,相较于采用双写机制导致新数据被旧数据覆盖的传统迁移方式,本技术在存量数据写入阶段引入了基于版本信息的时序判断机制,保证目标数据库中的数据为较新版本的数据,从而避免了旧的存量数据覆盖目标库中已写入的新数据,进而提升在源数据库和目标数据库之间进行全量迁移数据的最终一致性。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com