CN106970921B - 一种数据迁移方法及装置 - Google Patents

一种数据迁移方法及装置 Download PDF

Info

Publication number
CN106970921B
CN106970921B CN201610023934.6A CN201610023934A CN106970921B CN 106970921 B CN106970921 B CN 106970921B CN 201610023934 A CN201610023934 A CN 201610023934A CN 106970921 B CN106970921 B CN 106970921B
Authority
CN
China
Prior art keywords
migration
time
data
task
data record
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610023934.6A
Other languages
English (en)
Other versions
CN106970921A (zh
Inventor
汤鑫斌
肖凌
翟习文
刘雍阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610023934.6A priority Critical patent/CN106970921B/zh
Publication of CN106970921A publication Critical patent/CN106970921A/zh
Application granted granted Critical
Publication of CN106970921B publication Critical patent/CN106970921B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support

Abstract

本申请公开了一种数据迁移方法及装置,用以解决现有技术中的数据迁移方式迁移效率较低,而且会对用户业务造成不良影响的问题。该方法包括:按照预定定时间隔,周期性地定时执行以下步骤:确定当前迁移游标值,以及从当前迁移游标值开始,划分出连续的多个时间区间,将当前迁移游标值更新为多个时间区间内的最大时间,迁移游标值初始时为源数据库中的各数据记录的最新修改时间中的最小时间;针对划分出的每个时间区间,分别生成对应于该时间区间的迁移任务,该迁移任务用于将源数据库中的各数据记录中,当前最新修改时间属于该时间区间的数据记录向目标数据库迁移;并发执行生成的各迁移任务。

Description

一种数据迁移方法及装置
技术领域
本申请涉及数据处理领域,尤其涉及一种数据迁移方法及装置。
背景技术
随着互联网和计算机技术的迅速发展,越来越多的业务可以在网上进行。
用户可以通过互联网向业务系统提交业务请求,业务系统根据接收的业务请求进行相应的业务处理,并向用户返回业务处理结果,在此过程中,业务系统会生成相应的业务数据,并将这些业务数据以数据记录的形式存储在该业务系统的数据库中。
在实际应用中,为了提高业务处理能力,经常需要对业务系统进行更新。当要将原业务系统升级为新业务系统时,若新业务系统使用的数据库(称为:目标数据库)与原业务系统使用的数据库(称为:源数据库)不相同,则需要相应地将源数据库中的数据向目标数据库中迁移,以便于新业务系统能够正常地为用户服务。
在现有技术中,有两种常用的数据迁移方式。第一种数据迁移方式,采用数据泵技术从源数据库中导出数据并转换为中间文件,再通过中间文件向目标数据库中导入从源数据库导出的数据。第二种数据迁移方式,是将原业务系统停止服务,然后,将根据源数据库中各数据记录的数据主键,将各数据记录向目标数据库迁移。
但是,第一种数据迁移方式仅适用于于待迁移数据量较小的场景,而当待迁移数据量较大时,迁移效率较低,而且,在迁移过程中由于原业务系统未停止服务,因此,源数据库中数据仍在变化,从而会影响用户业务的数据准确性。而第二种数据迁移方式需要将原业务系统停止服务,当待迁移数据量较大时,迁移效率较低,也会严重影响用户业务的处理及时性。
综上所述,现有技术中的数据迁移方式当待迁移数据量较大时,迁移效率较低,而且会对用户业务造成不良影响。
发明内容
本申请实施例提供一种数据迁移方法及装置,用以解决现有技术中的数据迁移方式当待迁移数据量较大时,迁移效率较低,而且会对用户业务造成不良影响的问题。
本申请实施例提供的一种数据迁移方法,所述方法用于基于迁移游标值,将源数据库中的数据向目标数据库迁移,所述迁移游标值初始时为所述源数据库中的各数据记录的最新修改时间中的最小时间,所述方法包括:
按照预定定时间隔,周期性地定时执行以下步骤:
确定当前迁移游标值,以及从当前迁移游标值开始,按照时间前进方向,划分出连续的多个时间区间,将当前迁移游标值更新为所述多个时间区间内的最大时间,所述最大时间不超过当前时间;
针对划分出的每个时间区间,分别生成对应于该时间区间的迁移任务,该迁移任务用于将所述源数据库中的各数据记录中,当前最新修改时间属于该时间区间的数据记录向所述目标数据库迁移;
并发执行生成的各迁移任务。
本申请实施例提供的一种数据迁移装置,所述装置用于基于迁移游标值,将源数据库中的数据向目标数据库迁移,所述迁移游标值初始时为所述源数据库中的各数据记录的最新修改时间中的最小时间,所述装置包括:
游标值更新模块,用于确定当前迁移游标值,以及从当前迁移游标值开始,按照时间前进方向,划分出连续的多个时间区间,将当前迁移游标值更新为所述多个时间区间内的最大时间,所述最大时间不超过当前时间;
任务生成模块,用于针对划分出的每个时间区间,分别生成对应于该时间区间的迁移任务,该迁移任务用于将所述源数据库中的各数据记录中,当前最新修改时间属于该时间区间的数据记录向所述目标数据库迁移;
迁移模块,用于并发执行生成的各迁移任务。
本申请实施例通过上述至少一种技术方案,无需将源数据库对应的原业务系统停止服务,就可以将源数据库中的数据向目标数据库迁移,而且即使在迁移过程中,源数据库中的数据发生变化,也可以在迁移游标值向前推移的过程中对变化后的数据再次迁移(也即,支持对增量数据的迁移),因此,可以保证数据迁移的准确性,不会对用户业务造成不良影响;不仅如此,由于是通过生成多个迁移任务并行执行的方式进行数据迁移,因此,可以提高数据迁移效率。从而解决了现有技术中的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的数据迁移方法的过程;
图2为本申请实施例提供的在实际应用场景下,本申请的方案的一种具体实施过程的简略示意图;
图3为本申请实施例提供的对迁移任务和单条数据记录的补偿示意图;
图4为本申请实施例提供的在实际应用场景下,一种执行迁移任务的过程;
图5为本申请实施例提供的数据迁移装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的数据迁移方法的过程,该方法用于基于迁移游标值,将源数据库中的数据向目标数据库迁移,迁移游标值初始时为源数据库中的各数据记录的最新修改时间中的最小时间。当然,在实际应用中,迁移游标值初始时也可以为该最小时间之前的任意时间,该最小时间只是初始时的迁移游标值的一个示例。
为了便于理解,首先对该方法的总体思路说明如下:将整个迁移过程分为多个周期执行,在每个周期分别将迁移游标值向时间前进方向推移一段距离,并将源数据库中与这段距离对应的数据(具体为源数据库中最新修改时间属于这段距离表示的时间区间内的各数据记录)向目标数据库迁移,以使迁移游标值与当前时间越来越接近(需要说明的是,由于当前时间也会不断前进,因此,应当使迁移游标值的推移速度大于当前时间的前进速度),从而,使得目标数据库与源数据库中的数据越来越接近。
当迁移游标值追上当前时间后,可以一边继续执行下一个周期,一边根据源数据库对应的原业务系统涉及的实时用户业务情况,以确定何时(如业务空闲时)将实时用户业务切换至目标数据库对应的新业务系统上,且在切换业务后源数据库上不存在尚未迁移的数据。
在本申请实施例中,对何时切换业务并不做限定。在上述的周期较短时(如当周期可以为秒级时),可以使目标数据库与源数据库中的数据尽量接近,因此,有利于尽快切换业务。
下面对本申请的方案进行具体说明。
图1中的方法的执行主体可以是具有数据迁移功能的终端或服务器,所述数据迁移功能可以以模块、装置或系统等形式实现。所述终端包括但不限于:个人计算机、手机、平板电脑、智能手表、车载移动台等;所述服务器包括但不限于:作为服务器的个人计算机、大中型计算机、计算机集群等。执行主体并不构成对本申请的限定。
图1中的方法的过程具体可以包括以下步骤:
S101:按照预定定时间隔,周期性地定时执行步骤S102~S104。
在本申请实施例中,一个周期即为一个预定定时间隔。在单节点的环境下,可以通过普通的定时器预先设定定时间隔,并周期性地自动触发步骤S102~S104的执行;而在分布式的环境下,可以通过相应的分布式定时调度框架预先设定定时间隔,并周期性地自动触发步骤S102~S104的执行。本申请对定时间隔的长度并不做限定。一般可以将定时间隔的长度设定在秒级程度。
需要说明的是,在本申请的方案的实施过程中,预定定时间隔也可以被修改,在这种情况下,所述的周期性对应的各个周期的长度也可能相应的发生变化。
S102:确定当前迁移游标值,以及从当前迁移游标值开始,按照时间前进方向,划分出连续的多个时间区间,将当前迁移游标值更新为所述多个时间区间内的最大时间,所述最大时间不超过当前时间。
在本申请实施例中,是基于迁移游标值,控制整个数据迁移过程的进度的,而迁移游标值则是基于源数据库中的数据记录的最新修改时间进行更新的。
由于在实施本申请的方案的过程中,并未停止源数据库对应的原业务系统的服务,因此,源数据库中的任一条数据记录都可能会更新,当某条数据记录更新时,该数据记录的最新修改时间会相应地更新为该数据记录更新时的时间。其中,数据记录的最新修改时间一般可以用数据记录中的特定字段自动记录,本申请对所述特定字段的名称和格式并不做限定。
根据上面的说明可知,源数据库中的每条数据记录的最新修改时间只可能向时间前进方向推进(也即,最新修改时间只可能不变或者变大),而不可能变小。因此,在初始时(也即,第一个周期开始时),可以将迁移游标值确定为源数据库中的各数据记录的最新修改时间中的最小时间,该最小时间对应的数据记录可以作为第一条被迁移的数据记录。
在本申请实施例中,在每一个周期内,可以将迁移游标值按照时间前进方向,推移一段距离。需要说明的是,所述距离是指两个时间之间的距离,而不是指两个地点之间的距离,比如,假定所述两个时间分别为:同一天的3点、5点,则所述两个时间之间的距离为2个小时。
在步骤S102中,所述两个时间分别为:所述当前迁移游标值、更新后的所述当前迁移游标值。相应地,这个周期对应的任务可以为:将源数据库中最新修改时间属于这两个时间之间的区间的各数据记录向目标数据库迁移。
进一步地,为了提高数据迁移速度,在步骤S102中,可以将上述的距离划分为连续的多个时间区间,以便于后续对应地生成多个迁移任务并发地执行。需要说明的是,本申请对划分出的时间区间的数量和每个时间区间的长度并不做限定。一般地,时间区间的长度可以设定在分钟级别或小时级别。
在本申请实施例中,在任意时刻,迁移游标值都是不大于当前时间的。
S103:针对划分出的每个时间区间,分别生成对应于该时间区间的迁移任务,该迁移任务用于将所述源数据库中的各数据记录中,当前最新修改时间属于该时间区间的数据记录向所述目标数据库迁移。
在本申请实施例中,对迁移任务的表示方法并不做限定。一般的,可以采用特定格式对迁移任务进行表示,特定格式中可以包括若干字段,用于描述迁移任务的相关信息,比如迁移任务对应的时间区间、迁移任务对应的时间区间在各时间区间中的顺序、迁移任务的状态(执行成功或执行失败等)、源数据库地址等信息。
在本申请实施例中,可以在执行迁移任务时,再实时地获取迁移任务对应的各数据记录,也可以在生成迁移任务时,就获取迁移任务对应的各数据记录。
S104:并发执行生成的各迁移任务。
在本申请实施例中,生成的各迁移任务可以由执行主体采用多线程的方式并发执行,或者,也可以将生成的各迁移任务分发给分布式集群,由分布式集群采用多机器和/多线程的方式并发执行,等等。
需要说明的是,“并发执行”指的是各迁移任务可以分别由不同的机器或者不同的线程独立执行,这些独立执行的过程在时间上可以发生重叠,这些独立执行的过程可以同步地进行,也可以不同步地进行。
通过图1中的方法,无需将源数据库对应的原业务系统停止服务,就可以将源数据库中的数据向目标数据库迁移,而且即使在迁移过程中,源数据库中的数据发生变化,也可以在迁移游标值向前推移的过程中对变化后的数据再次迁移,因此,可以保证数据迁移的准确性,不会对用户业务造成不良影响;不仅如此,由于是通过生成多个迁移任务并行执行的方式进行数据迁移,因此,可以提高数据迁移效率。从而解决了现有技术中的问题。
为了便于理解,下面对图1中的步骤以及本申请提供了其他扩展方案进一步地说明。
在本申请实施例中,对于步骤S104,在执行迁移任务前以及执行迁移任务的过程中,可能会发生异常导致迁移任务无法被成功执行,异常包括但不限于:设备断电停机、执行迁移任务的进程或线程被杀死、程序异常退出,等等。为了防止异常导致的迁移数据遗漏的问题,可以分别对每个迁移任务的状态进行维护,迁移任务的状态至少可以包括:失败状态、成功状态;每个迁移任务在任一时刻只能被标记其中一种状态。
进而,对于步骤S104,在生成迁移任务后,执行迁移任务前,可以将迁移任务默认地标记为失败状态,相应地,在执行迁移任务后,当确定迁移任务执行成功时,可以对迁移任务的状态由失败状态修改为成功状态,也即,将迁移任务标记为成功状态。这样的话,由于迁移任务在被执行成功之前,都是被标记为失败状态的,因此,即使有一些迁移任务由于上述异常的原因,导致未开始执行或者未能成功执行,也可以根据这些迁移任务被标记的失败状态,实时地或者定时地触发这些迁移任务重新执行。
以“定时地重新执行这些迁移任务”这种处理方式为例。具体地,可以按照预定定时间隔,周期性地定时执行:确定被标记为失败状态的迁移任务,以及执行确定的迁移任务。需要说明的是,该段中的“预定定时间隔”与步骤S101中的“预定定时间隔”可以不同,也可以相同,本申请对此并不做限定。本段中的“定时地重新执行这些迁移任务”的过程可以提高数据迁移的可靠性、容错性,该过程与图1中的过程可以是相对独立地并行执行的。
进一步地,由于并非每个处于失败状态的迁移任务都是执行失败的,因此,在实际应用中,还可以为每个迁移任务设定超时门限用于进行超时检查。具体地,在确定被标记为失败状态的迁移任务后,可以判断该迁移任务自生成时的时间与当前时间之间的时间间隔是否大于超时门限,若是,则可以认为该迁移任务是异常的,进而可以重新执行该迁移任务,否则,可以认为该迁移任务上还没有来得及被执行,而并非是异常的,进而可以暂时不重新执行该迁移任务。
需要说明的是,上面提到的“失败状态”、“成功状态”只是迁移任务的状态的示例。在实际应用中,迁移任务的状态还可以进一步地细分为更多数量的状态。
例如,迁移任务的状态可以包括:尚未执行状态、首次执行中状态、执行失败状态、重试执行中状态、执行成功状态等。在这种情况下,迁移任务在首次执行前,可以被默认地标记为尚未执行状态,在执行步骤S104的同时,可以按照预定定时间隔,周期性地定时执行:确定被标记为尚未执行状态或执行失败状态的迁移任务,以及执行确定的迁移任务。类似地,在该段的过程中也可以进行超时检查。
在本申请实施例中,对于步骤S104中并发执行的各迁移任务,每个迁移任务可以按照如下方式执行:根据迁移任务对应的时间区间,从源数据库中获取当前最新修改时间属于该时间区间的数据记录;将获取的数据记录向目标数据库迁移。在实际应用中,迁移任务的执行可以有不同的具体实施过程,下面进行说明。
在步骤S104中通过并发执行各迁移任务的方式提高了数据迁移效率,在此基础上还可以进一步地提高数据迁移效率,通过本申请提供的迁移任务的执行的一种具体实施过程可以实现。这种具体实施过程的总体思路是:将每个迁移任务进一步地拆分为多个子任务,采用多线程并发执行拆分出的多个子任务。
对于这种具体实施过程,根据所述迁移任务对应的时间区间,从所述源数据库中获取当前最新修改时间属于该时间区间的数据记录,可以包括:根据所述迁移任务对应的时间区间,将所述迁移任务拆分为具有先后顺序的多个子任务,其中,每个子任务分别用于将所述源数据库中的各数据记录中当前最新修改时间属于该时间区间的、不大于预定数量的数据记录向所述目标数据库迁移;根据所述源数据库中数据记录的主键值和所述多个子任务的顺序,依次获取每个子任务对应的各数据记录,以使每个子任务对应的各数据记录的最小主键值大于这个子任务的前一个子任务对应的各数据记录的最大主键值。
其中,迁移任务对应的数据记录的数量,与该迁移任务拆分出的各子任务对应的数据记录的总数量相等。
可以看到,在上一段获取数据记录的过程中,基于相邻的子任务对应的数据记录的主键值,对各子任务进行了限定。作此限定的原因是为了防止在拆分出各子任务以及获取各子任务对应的数据记录的过程中,由于各数据记录可能会发生更新,进而导致数据遗漏的问题。下面举例进行说明。
假定未基于主键值获取由迁移任务拆分出的各子任务对应的数据记录。则可以采用诸如以下结构化查询语言(Structured Query Language,SQL)语句获取各子任务对应的数据记录:
“select * from source_table where#start#<=gmt_modified and gmt_modified<#end#order by gmt_modified limit n*100,100;”。
其中,“start”为该迁移任务对应的时间区间的起始时间,“end”为该迁移任务对应的时间区间的结束时间;“gmt_modified”为数据记录的最新修改时间。
但是,在上述SQL语句的情况下,在已获取某个子任务对应的数据记录(假定为第1~100条)后,若这个子任务对应的某条数据(假定为第99条)记录发生更新(则第99条将不属于该时间区间),更新后若再获取下一个子任务对应的数据记录(会获取到第102~201条、),将会遗漏1条数据记录(即为第101条)。
为了解决以上问题,可以基于主键值获取由迁移任务拆分出的各子任务对应的数据记录,具体地,可以采用诸如以下SQL语句获取各子任务对应的数据记录:
“select * from source_table where#start#<=gmt_modified and gmt_modified<#end#and id>#last_max_id#order by gmt_modified,id limit n*100,100;”。
其中,“id”为数据记录的主键值,“last_max_id”为上一个子任务的对应的各数据记录的最大主键值。
进一步地,对于这种具体实施过程,将获取的数据记录向所述目标数据库迁移,可以包括:基于多线程并发执行所述多个子任务,其中,按照如下方式执行每个子任务:将获取的这个子任务对应的各数据记录向所述目标数据库迁移。
在本申请实施例中,新业务系统可能对原业务系统的业务涉及的数据结构进行了修改,使得新业务系统和原业务系统的业务互为异构业务。在这种情况下,将源数据库中的数据向目标数据库进行迁移时,也需要对这些数据进行相应的数据结构转换,再写入目标数据库中,否则,可能会导致迁移的数据无法正常使用。因此,上面提到的“将获取的数据记录向所述目标数据库迁移”,可以包括:根据预定数据结构转换规则,对获取的数据记录进行数据结构转换;将数据结构转换后的数据记录写入所述目标数据库中。其中,预定数据结构转换规则可以根据新业务系统和原业务系统的业务确定,本申请对此并不做限定。
进一步地,为了减少提高本申请的方案的实施成本,可以将“获取数据记录”、“对获取的数据记录进行数据结构转换”、“将转换后的数据记录写入目标数据库”等通用性较高的步骤的抽象为业务逻辑模板,以便于在各种应用场景下复用。
在本申请实施例中,根据上面的说明可知,执行任一迁移任务的过程即为将这个迁移任务对应的各数据记录进行迁移的过程。对数据记录的迁移可能会失败,为了防止少数的数据记录迁移失败导致对应的迁移任务执行失败,还可以实时地或定时地对迁移失败的数据记录重新进行迁移。
以“定时地对迁移失败的数据记录重新进行迁移”这种处理方式为例。具体地,可以按照预定定时间隔,周期性地定时执行:确定迁移失败的数据记录,以及重新迁移确定的数据记录。需要说明的是,该段中的“预定定时间隔”与步骤S101中的“预定定时间隔”可以不同,也可以相同,本申请对此并不做限定。
根据上面的说明,本申请针对迁移过程中可能出现的异常,提供有两种解决方案,一种是对标记为失败状态的迁移任务的重试,一种是对迁移失败的数据记录的重试。这两种解决方案提高了数据迁移的可靠性、容错性。
在本申请实施例中,由于数据迁移需要花费一定的时间,因此,源数据库中的数据的最新修改时间与将该数据迁移至目标数据库中的生效时间之间会有延迟,可以会根据延迟大小,调整各迁移任务的并发执行数和/或各子任务的并发执行数,从而将后续迁移数据的延迟控制在可以接受的范围内。
具体地,迁移数据记录后,可以执行:确定迁移成功的数据记录在所述目标数据库中的生效时间,以及所述数据记录在迁移前的最新修改时间;根据确定的所述生效时间和所述最新修改时间,确定所述数据记录的迁移延迟时间;根据所述迁移延迟时间,对所述各迁移任务的并发执行数和/或所述多个子任务的并发执行数进行调整。例如,当迁移延迟时间较大时,可以增加并发执行数,当迁移延迟时间足够小时,也可以适当地减少并发执行数。
以上对图1中的步骤以及本申请提供了其他扩展方案进一步地进行了说明。基于这些说明,对比于现有技术,对本申请的方案的优点进行总结。
相比于背景技术中提到的第一种数据迁移方式,第一种数据迁移方式只适用于待迁移数据量较小的场景。本申请的方案则不受待迁移数据量多少的限制,无需中间文件来暂存要迁移的数据,提高了数据迁移的效率;而且可以将迁移过程中的很多步骤抽象为容易复用的业务逻辑模板,以及针对容易产生瓶颈的读取和写入数据的步骤(包含在迁移任务的过程中),设计了分布式、多线程的扩展方案,从而实现了数据迁移在效率上的高效性和扩展性。
相比于背景技术中提到的第二种数据迁移方式,第二种数据迁移方式需要停止原业务系统的服务,这对于诸如互联网应用等有持续用户访问需求的系统是不可接受的。本申请的方案则无需停止原业务系统的服务,而且由于源数据库最新被修改的数据记录的最新修改时间总是会大于迁移游标值,因此,可以保证最新被修改的数据记录随着迁移游标值的向前推移总是能够被向目标数据库中迁移,从而实现了增量数据的迁移,避免了对用户业务造成不良影响。
需要说明的是,现有技术中除了有上述的两种数据迁移方式以外,常用的还有另一种数据迁移方式。另一种数据迁移方式为:基于源数据库的操作日志,在目标数据库上回放源数据库上的所有操作,也即,将源数据库中的每条数据记录的每个操作记录都同步到目标数据库上。其缺点是不支持数据结构的变更。而本申请的方案通过在迁移过程中对数据记录进行数据结构转换,可以解决这个问题。
在本申请实施例中,还提供了在实际应用场景中,本申请的方案的一种具体实施过程的简略示意图。如图2所示。
在图2中,一共涉及五个设备或功能模块,即:分布式定时调度、迁移系统、迁移系统存储、源数据库、目标数据库。
图2中的过程主要包括三部分。
第一部分,周期性地定时生成迁移任务,以及执行迁移任务;
第二部分,周期性地定时进行失败补偿,这里的失败补偿是指对单条数据记录执行失败时的补偿(简称为:单条补偿);
第三部分,周期性地定时进行迁移任务补偿,这里的迁移任务补偿是指对迁移任务执行失败或超时的补偿;
其中,上述的补偿的具体方式可以是重试。具体地,对于单条数据记录,是重新进行迁移,对于迁移任务,是重新执行。
在本申请实施例中,通过单条补偿和迁移任务补偿,提高了数据迁移的可靠性、容错性,采用图3进行说明。
在图3中,示出了在某个周期内生成的n个迁移任务,其中,“min_modify”是n个迁移任务对应的数据记录的最新修改时间中的最小时间,“max_modify”是n个迁移任务对应的数据记录的最新修改时间中的最大时间。其中,n为不小于2的整数。
将迁移任务的执行状况分为三种。
第一种是由于系统异常导致迁移任务异常,针对这种状况,可以通过迁移任务补偿应对;
第二种是迁移任务执行成功。
第三种是迁移任务对应的各数据记录中,至少有一条数据记录迁移失败(执行异常),针对这种状况,可以通过针对迁移失败的数据记录分别进行单条补偿应对。
在本申请实施例中,还提供了在实际应用场景中,一种执行迁移任务的过程,该过程如图4所示。
在图4中,任务分片即为上述的迁移任务。通过两次分片(物理分片、内部分片)以及并发执行提高了数据迁移的效率。
由加载器(Loader)在每个周期内根据迁移游标值,将这个周期对应的任务进行物理分片,对应地生成多个任务分片,每个任务分片包含有这个任务分片相关信息,比如描述这个任务分片对应的数据记录的最新修改时间中的最小时间的“ST_GMT”字段信息、描述这个任务分片对应的时间区间长度(也可以成为:时间步长)的“STEP”字段信息、描述这个任务分片的状态的“STATUS”字段信息,等等。
加载器可以将各任务分片分发给多个执行器(Executor)并发执行,执行器可以进一步地对任务分片进行内部分片,生成多个子任务(比如,每个子任务可以对应于100条数据记录),并采用多线程的方式并发执行各子任务。
以上为本申请实施例提供的数据迁移方法,基于同样的思路,本申请实施例还提供相应的数据迁移装置,如图5所示。
图5为本申请实施例提供的数据迁移装置结构示意图,所述装置用于基于迁移游标值,将源数据库中的数据向目标数据库迁移,所述迁移游标值初始时为所述源数据库中的各数据记录的最新修改时间中的最小时间,所述装置包括:
游标值更新模块501,用于确定当前迁移游标值,以及从当前迁移游标值开始,按照时间前进方向,划分出连续的多个时间区间,将当前迁移游标值更新为所述多个时间区间内的最大时间,所述最大时间不超过当前时间;
任务生成模块502,用于针对划分出的每个时间区间,分别生成对应于该时间区间的迁移任务,该迁移任务用于将所述源数据库中的各数据记录中,当前最新修改时间属于该时间区间的数据记录向所述目标数据库迁移;
迁移模块503,用于并发执行生成的各迁移任务。
通过图5中的装置,无需将源数据库对应的原业务系统停止服务,就可以将源数据库中的数据向目标数据库迁移,而且即使在迁移过程中,源数据库中的数据发生变化,也可以在迁移游标值向前推移的过程中对变化后的数据再次迁移,因此,可以保证数据迁移的准确性,不会对用户业务造成不良影响;不仅如此,由于是通过生成多个迁移任务并行执行的方式进行数据迁移,因此,可以提高数据迁移效率。从而解决了现有技术中的问题
可选地,所述装置还包括:
状态标记模块504,用于在迁移模块503并发执行生成的各迁移任务前,将所述迁移任务默认地标记为失败状态;以及
用于在迁移模块503并发执行生成的各迁移任务后,当确定所述迁移任务执行成功时,将所述迁移任务标记为成功状态。
可选地,所述装置还包括:
任务补偿模块505,用于按照预定定时间隔,周期性地定时执行:确定被标记为失败状态的迁移任务,以及执行确定的迁移任务。
可选地,迁移模块503具体用于按照如下方式执行生成的每个迁移任务:根据所述迁移任务对应的时间区间,从所述源数据库中获取当前最新修改时间属于该时间区间的数据记录;将获取的数据记录向所述目标数据库迁移。
可选地,迁移模块503具体用于:根据所述迁移任务对应的时间区间,将所述迁移任务拆分为具有先后顺序的多个子任务,其中,每个子任务分别用于将所述源数据库中的各数据记录中当前最新修改时间属于该时间区间的、不大于预定数量的数据记录向所述目标数据库迁移;根据所述源数据库中数据记录的主键值和所述多个子任务的顺序,依次获取每个子任务对应的各数据记录,以使每个子任务对应的各数据记录的最小主键值大于这个子任务的前一个子任务对应的各数据记录的最大主键值。
可选地,迁移模块503具体用于:基于多线程并发执行所述多个子任务,其中,按照如下方式执行每个子任务:将获取的这个子任务对应的各数据记录向所述目标数据库迁移。
可选地,迁移模块503具体用于:根据预定数据结构转换规则,对获取的数据记录进行数据结构转换;将数据结构转换后的数据记录写入所述目标数据库中。
可选地,所述装置还包括:
记录补偿模块506,用于按照预定定时间隔,周期性地定时执行:确定迁移失败的数据记录,以及重新迁移确定的数据记录。
可选地,所述装置还包括:
并发数调整模块507,用于确定迁移成功的数据记录在所述目标数据库中的生效时间,以及所述数据记录在迁移前的最新修改时间;根据确定的所述生效时间和所述最新修改时间,确定所述数据记录的迁移延迟时间;根据所述迁移延迟时间,对所述各迁移任务的并发执行数和/或所述多个子任务的并发执行数进行调整。
具体的上述如图5所示的装置可以位于具有数据迁移功能的终端或服务器上。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (14)

1.一种数据迁移方法,其特征在于,所述方法用于基于迁移游标值,将源数据库中的数据向目标数据库迁移,所述迁移游标值初始时为所述源数据库中的各数据记录的最新修改时间中的最小时间,所述方法包括:
按照预定定时间隔,周期性地定时执行以下步骤:
确定当前迁移游标值,以及从当前迁移游标值开始,按照时间前进方向,划分出连续的多个时间区间,将当前迁移游标值更新为所述多个时间区间内的最大时间,所述最大时间不超过当前时间;
针对划分出的每个时间区间,分别生成对应于该时间区间的迁移任务,该迁移任务用于将所述源数据库中的各数据记录中,当前最新修改时间属于该时间区间的数据记录向所述目标数据库迁移;
并发执行生成的各迁移任务;
其中,按照如下方式执行生成的每个迁移任务:
根据所述迁移任务对应的时间区间,从所述源数据库中获取当前最新修改时间属于该时间区间的数据记录;
将获取的数据记录向所述目标数据库迁移;
根据所述迁移任务对应的时间区间,从所述源数据库中获取当前最新修改时间属于该时间区间的数据记录,具体包括:
根据所述迁移任务对应的时间区间,将所述迁移任务拆分为具有先后顺序的多个子任务,其中,每个子任务分别用于将所述源数据库中的各数据记录中当前最新修改时间属于该时间区间的、不大于预定数量的数据记录向所述目标数据库迁移;
根据所述源数据库中数据记录的主键值和所述多个子任务的顺序,依次获取每个子任务对应的各数据记录,以使每个子任务对应的各数据记录的最小主键值大于这个子任务的前一个子任务对应的各数据记录的最大主键值。
2.如权利要求1所述的方法,其特征在于,并发执行生成的各迁移任务前,所述方法还包括:
将所述迁移任务默认地标记为失败状态;
并发执行生成的各迁移任务后,所述方法还包括:
当确定所述迁移任务执行成功时,将所述迁移任务标记为成功状态。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
按照预定定时间隔,周期性地定时执行:确定被标记为失败状态的迁移任务,以及执行确定的迁移任务。
4.如权利要求1所述的方法,其特征在于,将获取的数据记录向所述目标数据库迁移,具体包括:
基于多线程并发执行所述多个子任务,其中,按照如下方式执行每个子任务:将获取的这个子任务对应的各数据记录向所述目标数据库迁移。
5.如权利要求1或4所述的方法,其特征在于,将获取的数据记录向所述目标数据库迁移,具体包括:
根据预定数据结构转换规则,对获取的数据记录进行数据结构转换;
将数据结构转换后的数据记录写入所述目标数据库中。
6.如权利要求1或4所述的方法,其特征在于,所述方法还包括:
按照预定定时间隔,周期性地定时执行:确定迁移失败的数据记录,以及重新迁移确定的数据记录。
7.如权利要求4所述的方法,其特征在于,所述方法还包括:
确定迁移成功的数据记录在所述目标数据库中的生效时间,以及所述数据记录在迁移前的最新修改时间;
根据确定的所述生效时间和所述最新修改时间,确定所述数据记录的迁移延迟时间;
根据所述迁移延迟时间,对所述各迁移任务的并发执行数和/或所述多个子任务的并发执行数进行调整。
8.一种数据迁移装置,其特征在于,所述装置用于基于迁移游标值,将源数据库中的数据向目标数据库迁移,所述迁移游标值初始时为所述源数据库中的各数据记录的最新修改时间中的最小时间,所述装置包括:
游标值更新模块,用于确定当前迁移游标值,以及从当前迁移游标值开始,按照时间前进方向,划分出连续的多个时间区间,将当前迁移游标值更新为所述多个时间区间内的最大时间,所述最大时间不超过当前时间;
任务生成模块,用于针对划分出的每个时间区间,分别生成对应于该时间区间的迁移任务,该迁移任务用于将所述源数据库中的各数据记录中,当前最新修改时间属于该时间区间的数据记录向所述目标数据库迁移;
迁移模块,用于并发执行生成的各迁移任务;
其中,所述迁移模块具体用于按照如下方式执行生成的每个迁移任务:根据所述迁移任务对应的时间区间,从所述源数据库中获取当前最新修改时间属于该时间区间的数据记录;将获取的数据记录向所述目标数据库迁移;
所述迁移模块具体用于:根据所述迁移任务对应的时间区间,将所述迁移任务拆分为具有先后顺序的多个子任务,其中,每个子任务分别用于将所述源数据库中的各数据记录中当前最新修改时间属于该时间区间的、不大于预定数量的数据记录向所述目标数据库迁移;根据所述源数据库中数据记录的主键值和所述多个子任务的顺序,依次获取每个子任务对应的各数据记录,以使每个子任务对应的各数据记录的最小主键值大于这个子任务的前一个子任务对应的各数据记录的最大主键值。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
状态标记模块,用于在所述迁移模块并发执行生成的各迁移任务前,将所述迁移任务默认地标记为失败状态;以及
用于在所述迁移模块并发执行生成的各迁移任务后,当所述迁移任务执行成功时,当确定所述迁移任务执行成功时,将所述迁移任务标记为成功状态。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
任务补偿模块,用于按照预定定时间隔,周期性地定时执行:确定被标记为失败状态的迁移任务,以及执行确定的迁移任务。
11.如权利要求8所述的装置,其特征在于,所述迁移模块具体用于:基于多线程并发执行所述多个子任务,其中,按照如下方式执行每个子任务:将获取的这个子任务对应的各数据记录向所述目标数据库迁移。
12.如权利要求8或11所述的装置,其特征在于,所述迁移模块具体用于:根据预定数据结构转换规则,对获取的数据记录进行数据结构转换;将数据结构转换后的数据记录写入所述目标数据库中。
13.如权利要求8或11所述的装置,其特征在于,所述装置还包括:
记录补偿模块,用于按照预定定时间隔,周期性地定时执行:确定迁移失败的数据记录,以及重新迁移确定的数据记录。
14.如权利要求11所述的装置,其特征在于,所述装置还包括:
并发数调整模块,用于确定迁移成功的数据记录在所述目标数据库中的生效时间,以及所述数据记录在迁移前的最新修改时间;根据确定的所述生效时间和所述最新修改时间,确定所述数据记录的迁移延迟时间;根据所述迁移延迟时间,对所述各迁移任务的并发执行数和/或所述多个子任务的并发执行数进行调整。
CN201610023934.6A 2016-01-14 2016-01-14 一种数据迁移方法及装置 Active CN106970921B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610023934.6A CN106970921B (zh) 2016-01-14 2016-01-14 一种数据迁移方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610023934.6A CN106970921B (zh) 2016-01-14 2016-01-14 一种数据迁移方法及装置

Publications (2)

Publication Number Publication Date
CN106970921A CN106970921A (zh) 2017-07-21
CN106970921B true CN106970921B (zh) 2020-10-16

Family

ID=59335034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610023934.6A Active CN106970921B (zh) 2016-01-14 2016-01-14 一种数据迁移方法及装置

Country Status (1)

Country Link
CN (1) CN106970921B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688634A (zh) * 2017-08-22 2018-02-13 阿里巴巴集团控股有限公司 数据写入方法及装置、电子设备
CN107577427B (zh) * 2017-08-31 2019-12-13 上海保险交易所股份有限公司 用于区块链系统的数据迁移方法、设备和存储介质
CN108038126B (zh) * 2017-11-08 2021-03-02 中国平安人寿保险股份有限公司 一种数据导出的方法、装置、终端设备及存储介质
CN108446315B (zh) * 2018-02-07 2021-11-05 中国平安人寿保险股份有限公司 大数据迁移方法、装置、设备及存储介质
CN110389856B (zh) * 2018-04-20 2023-07-11 伊姆西Ip控股有限责任公司 用于迁移数据的方法、设备和计算机可读介质
CN108829779B (zh) * 2018-05-30 2022-06-17 郑州云海信息技术有限公司 一种数据处理的方法以及相关设备
CN109376141B (zh) * 2018-08-31 2021-09-14 创新先进技术有限公司 一种数据迁移方法和装置
CN110674152B (zh) * 2019-09-24 2023-06-23 京东科技控股股份有限公司 数据同步方法与装置、存储介质、电子设备
CN111008188B (zh) * 2019-10-29 2023-08-15 平安科技(深圳)有限公司 数据迁移方法、装置、计算机设备和存储介质
CN111198868B (zh) * 2019-12-12 2023-09-05 北京淇瑀信息科技有限公司 一种智能分库实时数据迁移方法和装置
CN111142802B (zh) * 2019-12-27 2023-03-31 南京壹进制信息科技有限公司 一种基于虚拟块设备存储的回迁卷级数据的方法及系统
CN112035444B (zh) * 2020-09-03 2023-09-19 中国银行股份有限公司 异构系统间影像数据不停机迁移方法及装置
CN113407544A (zh) * 2021-07-13 2021-09-17 南方电网数字电网研究院有限公司 一种多模型数据的同步方法及装置
CN113704186B (zh) * 2021-11-01 2022-02-08 云账户技术(天津)有限公司 告警事件生成方法、装置、电子设备和可读存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7483943B2 (en) * 2004-09-21 2009-01-27 Microsoft Corporation Reliable messaging using clocks with synchronized rates
CN101192229B (zh) * 2006-12-01 2010-09-22 阿里巴巴集团控股有限公司 一种同步数据的方法及系统
CN102202072B (zh) * 2010-03-23 2015-07-29 盛霆信息技术(上海)有限公司 互联网站数据的单向同步方法
CN102495906A (zh) * 2011-12-23 2012-06-13 天津神舟通用数据技术有限公司 一种实现断点续传的增量式数据迁移方法
CN103186624B (zh) * 2011-12-31 2017-10-20 亿阳信通股份有限公司 一种数据同步方法和数据同步装置
CN103530290B (zh) * 2012-07-03 2017-12-12 深圳市腾讯计算机系统有限公司 数据库间的数据迁移方法和系统
CN103440273B (zh) * 2013-08-06 2016-08-24 北京航空航天大学 一种数据跨平台迁移方法及装置
US9226253B2 (en) * 2013-12-04 2015-12-29 Mitsubishi Electric Research Laboratories, Inc. Passive synchronization in wireless networks

Also Published As

Publication number Publication date
CN106970921A (zh) 2017-07-21

Similar Documents

Publication Publication Date Title
CN106970921B (zh) 一种数据迁移方法及装置
US20190324648A1 (en) Fast restart of applications using shared memory
US10509585B2 (en) Data synchronization method, apparatus, and system
US10521268B2 (en) Job scheduling method, device, and distributed system
CN107451172B (zh) 用于版本管理系统的数据同步方法及设备
CN107273195B (zh) 一种大数据的批处理方法、装置及计算机系统
CN106325984B (zh) 一种大数据任务调度装置
CN109684304B (zh) 数据迁移方法及装置
CN106899654B (zh) 一种序列值生成方法、装置及系统
CN107016016B (zh) 一种数据处理的方法及装置
US11068482B2 (en) Computation reuse in analytics job service
CN105279261A (zh) 动态可扩展数据库归档方法和系统
CN112748993A (zh) 任务执行方法、装置、存储介质及电子设备
CN109885642B (zh) 面向全文检索的分级存储方法及装置
CN106294205B (zh) 缓存数据处理方法及装置
CN110597614A (zh) 一种资源调整方法及装置
US10824641B1 (en) Deterministic query-based replication
CN112486639A (zh) 任务的数据保存及恢复方法、装置、服务器及存储介质
WO2017028705A1 (zh) 计算机系统任务备份方法、系统状态恢复方法及其装置
US10303558B2 (en) Checkpointing higher order query operators
US10261718B1 (en) Adaptively controlling data copy operations that copy data in an electronic environment
CN108196934B (zh) 一种定时器的定时设置方法、装置和虚拟化设备
CN109446271B (zh) 一种数据同步方法、装置、设备及介质
US10409651B2 (en) Incremental workflow execution
CN113377424B (zh) 一种安装包处理方法、装置以及设备

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TA01 Transfer of patent application right

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right