一种数据迁移方法、装置和电子设备与流程

文档序号:27131666发布日期:2021-10-29 21:39阅读:168来源:国知局
一种数据迁移方法、装置和电子设备与流程

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.图1为本说明书实施例提供的一种数据迁移方法的原理示意图;
50.图2为本说明书实施例提供的一种数据迁移装置的结构示意图;
51.图3为本说明书实施例提供的一种电子设备的结构示意图;
52.图4为本说明书实施例提供的一种计算机可读介质的原理示意图。
具体实施方式
53.现在将参考附图更全面地描述本发明的示例性实施例。然而,示例性实施例能够以多种形式实施,且不应被理解为本发明仅限于在此阐述的实施例。相反,提供这些示例性实施例能够使得本发明更加全面和完整,更加便于将发明构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的元件、组件或部分,因而将省略对它们的重复描述。
54.在符合本发明的技术构思的前提下,在某个特定的实施例中描述的特征、结构、特性或其他细节不排除可以以合适的方式结合在一个或更多其他的实施例中。
55.在对于具体实施例的描述中,本发明描述的特征、结构、特性或其他细节是为了使本领域的技术人员对实施例进行充分理解。但是,并不排除本领域技术人员可以实践本发明的技术方案而没有特定特征、结构、特性或其他细节的一个或更多。
56.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
57.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
58.术语“和/或”或者“及/或”包括相关联的列出项目中的任一个或多者的所有组合。
59.图1为本说明书实施例提供的一种数据迁移方法的原理示意图,该方法可以包括:
60.s101:创建具有数据迁移任务和任务挂起规则的数据中转器。
61.数据迁移任务包括两个步骤,一步是从旧库读取待迁移的数据,我们可以称之为第一数据,旧库可以称为源数据库。
62.数据中转器可以是一个用来中转数据的存储空间,等到将第一数据写入到数据中转器中之后再从数据中转器读取第一数据写入新库。
63.为了提高迁移速度,我们可以采取多线程并发的方式执行任务。
64.因此,在本说明书实施例中,所述数据迁移任务为多线程并行的任务。
65.当然,在本说明书实施例中,该方法还可以包括:设置多线程并行任务的并行数。
66.具体的,为了实现对迁移状态的感知,对迁移过程中异常的感知,并对迁移任务进行调整和控制,在本说明书实施例中,所述数据中转器为阻塞队列。
67.阻塞队列的原理属于现有技术,在此不做具体阐述。
68.实施时,数据中转器可以是分布式阻塞队列。
69.s102:确定源数据库,对源数据库中的第一数据执行数据迁移任务,包括:
70.执行第一任务:从源数据库中获取第一数据,并写入所述数据中转器中;
71.执行第二任务:从所述数据中转器中获取第一数据,并写入到目的数据库中;
72.根据所述数据中转器的状态执行所述任务挂起规则:对所述第一任务和所述第二任务中的一者进行挂起。
73.该方法通过创建具有数据迁移任务和任务挂起规则的数据中转器,确定源数据库,对源数据库中的第一数据执行数据迁移任务,包括:执行第一任务:从源数据库中获取第一数据,并写入所述数据中转器中,执行第二任务:从所述数据中转器中获取第一数据,
并写入到目的数据库中,根据所述数据中转器的状态执行所述任务挂起规则:对所述第一任务和所述第二任务中的一者进行挂起。数据中转器的状态能够反映两种任务的相对进展,能够有效感知迁移异常,通过对获取数据的任务和写入数据的任务进行挂起,提高数据迁移过程的可靠性。
74.其中,数据中转器的状态可以是指数据中转器的存储空间空置率。
75.如果存储空间空置率过低,就说明如果接下来不挂起任务,很可能就会导致数据溢出,进而导致数据漏写。
76.这里的挂起任务,是指中止、暂停任务。
77.其中,数据中转器的状态可以是指数据中转器的存储空间空置率的变化状态。
78.比如,存储空间空置率一直保持在10%,是正常状态,而由30%突然降到10%,就说明迁移过程出现故障,因此,可以用其变化情况来识别迁移过程中的异常。
79.在本说明书实施例中,所述第一数据包括存量数据和增量数据。
80.在本说明书实施例中,还可以包括:
81.对源数据库中存量数据的日志位点进行记录;
82.所述对源数据库中的第一数据执行数据迁移任务,可以包括:
83.根据记录的日志位点确定存量数据和增量数据,分别对存量数据和增量数据进行迁移。
84.为了识别迁移过程中产生的错误,在本说明书实施例中,该方法还可以包括:
85.对目的数据库中的存量数据和增量数据进行一致性校验。
86.在本说明书实施例中,还可以包括:
87.唤醒挂起的任务。
88.具体唤醒的时机,也可以根据数据中转器的状态来判断。
89.在说明书实施例中,并行的各个线程可以分别具有一个或者多个阻塞队列,也可以是多个线程共用一个阻塞队列,在此不做具体阐述。
90.图2为本说明书实施例提供的一种数据迁移装置的结构示意图,该装置可以包括:
91.中转器创建模块201,用于创建具有数据迁移任务和任务挂起规则的数据中转器;
92.任务执行模块202,用于确定源数据库,对源数据库中的第一数据执行数据迁移任务,包括:
93.执行第一任务:从源数据库中获取第一数据,并写入所述数据中转器中;
94.执行第二任务:从所述数据中转器中获取第一数据,并写入到目的数据库中;
95.根据所述数据中转器的状态执行所述任务挂起规则:对所述第一任务和所述第二任务中的一者进行挂起。
96.在本说明书实施例中,所述数据迁移任务为多线程并行的任务。
97.在本说明书实施例中,所述第一数据包括存量数据和增量数据。
98.在本说明书实施例中,还包括:
99.对源数据库中存量数据的日志位点进行记录;
100.所述对源数据库中的第一数据执行数据迁移任务,包括:
101.根据记录的日志位点确定存量数据和增量数据,分别对存量数据和增量数据进行迁移。
102.在本说明书实施例中,还包括:
103.对目的数据库中的存量数据和增量数据进行一致性校验。
104.在本说明书实施例中,所述数据中转器为分布式阻塞队列。
105.在本说明书实施例中,还包括:设置多线程并行任务的并行数。
106.在本说明书实施例中,还包括:
107.唤醒挂起的任务。
108.其中,数据中转器的状态可以是指数据中转器的存储空间空置率。
109.如果存储空间空置率过低,就说明如果接下来不挂起任务,很可能就会导致数据溢出,进而导致数据漏写。
110.这里的挂起任务,是指中止、暂停任务。
111.其中,数据中转器的状态可以是指数据中转器的存储空间空置率的变化状态。
112.比如,存储空间空置率一直保持在10%,是正常状态,而由30%突然降到10%,就说明迁移过程出现故障,因此,可以用其变化情况来识别迁移过程中的异常。
113.该装置通过创建具有数据迁移任务和任务挂起规则的数据中转器,确定源数据库,对源数据库中的第一数据执行数据迁移任务,包括:执行第一任务:从源数据库中获取第一数据,并写入所述数据中转器中,执行第二任务:从所述数据中转器中获取第一数据,并写入到目的数据库中,根据所述数据中转器的状态执行所述任务挂起规则:对所述第一任务和所述第二任务中的一者进行挂起。数据中转器的状态能够反映两种任务的相对进展,能够有效感知迁移异常,通过对获取数据的任务和写入数据的任务进行挂起,提高数据迁移过程的可靠性。
114.基于同一发明构思,本说明书实施例还提供一种电子设备。
115.下面描述本发明的电子设备实施例,该电子设备可以视为对于上述本发明的方法和装置实施例的具体实体实施方式。对于本发明电子设备实施例中描述的细节,应视为对于上述方法或装置实施例的补充;对于在本发明电子设备实施例中未披露的细节,可以参照上述方法或装置实施例来实现。
116.图3为本说明书实施例提供的一种电子设备的结构示意图。下面参照图3来描述根据本发明该实施例的电子设备300。图3显示的电子设备300仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
117.如图3所示,电子设备300以通用计算设备的形式表现。电子设备300的组件可以包括但不限于:至少一个处理单元310、至少一个存储单元320、连接不同系统组件(包括存储单元320和处理单元310)的总线330、显示单元340等。
118.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元310执行,使得所述处理单元310执行本说明书上述处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元310可以执行如图1所示的步骤。
119.所述存储单元320可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)3201和/或高速缓存存储单元3202,还可以进一步包括只读存储单元(rom)3203。
120.所述存储单元320还可以包括具有一组(至少一个)程序模块3205的程序/实用工具3204,这样的程序模块3205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
121.总线330可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
122.电子设备300也可以与一个或多个外部设备400(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备300交互的设备通信,和/或与使得该电子设备300能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口350进行。并且,电子设备300还可以通过网络适配器360与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器360可以通过总线330与电子设备300的其它模块通信。应当明白,尽管图3中未示出,可以结合电子设备300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
123.通过以上的实施方式的描述,本领域的技术人员易于理解,本发明描述的示例性实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读的存储介质(可以是cd

rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明的上述方法。当所述计算机程序被一个数据处理设备执行时,使得该计算机可读介质能够实现本发明的上述方法,即:如图1所示的方法。
124.图4为本说明书实施例提供的一种计算机可读介质的原理示意图。
125.实现图1所示方法的计算机程序可以存储于一个或多个计算机可读介质上。计算机可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
126.所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
127.可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网
(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
128.综上所述,本发明可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)等通用数据处理设备来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
129.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
130.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
131.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1