数据迁移方法、设备及可读存储介质与流程

未命名 07-15 阅读:73 评论:0


1.本技术实施例涉及云存储技术领域,特别涉及一种数据迁移方法、设备及可读存储介质。


背景技术:

2.目前,主流的存储类型有三种:块存储、文件存储和对象存储。其中,对象存储有着块存储的高速直接访问磁盘的优点,同时兼具文件存储的分布式共享特点。因此,对象存储正逐渐在云计算存储服务领域占据越来越重要的地位。
3.随着技术的发展,能提供对象存储服务的云厂商日益增多,客户可灵活选择使用哪个云厂商的对象存储服务。与此同时,不同云厂商之间的数据迁移需求日益增长。迁移过程中,数据源端的云厂商和目的端的云厂商匹配双方的应用程序接口(application programming interface,api),进而进行数据迁移。
4.然而,匹配api接口的方式耗时长、成本高。匹配好api接口后,倘若需要支持一个新的云厂商,则又得重新配置api接口,过程繁琐、耗时长。


技术实现要素:

5.本技术实施例提供一种数据迁移方法、设备及可读存储介质,迁移服务器将迁移任务分成多个子任务,打通每个子任务的迁移通道,利用各子任务的迁移通道迁移子任务的数据区段对应的数据,无需匹配api接口,支持流式传输的同时,提高数据迁移速度并降低成本。
6.第一方面,本技术实施例提供一种数据迁移方法,应用于迁移服务器,所述方法包括:
7.创建迁移任务,所述迁移任务指示待迁移数据,以及所述待迁移数据的数据源端和目的端;
8.根据所述迁移任务,依次创建至少一个子任务,所述至少一个子任务中的不同子任务对应不同的数据区段,所述待迁移数据是各子任务的数据区段对应的数据的总和;
9.针对每个子任务,利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端。
10.第二方面,本技术实施例提供一种数据迁移装置,包括:
11.创建模块,用于创建迁移任务,所述迁移任务指示待迁移数据,以及所述待迁移数据的数据源端和目的端;
12.处理模块,用于根据所述迁移任务,依次创建至少一个子任务,所述至少一个子任务中的不同子任务对应不同的数据区段,所述待迁移数据是各子任务的数据区段对应的数据的总和;
13.迁移模块,用于针对每个子任务,利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端。
14.第三方面,本技术实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面各种可能的实现方式所述的方法。
15.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令在被处理器执行时用于实现如上第一方面各种可能的实现方式所述的方法。
16.第五方面,本技术实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面各种可能的实现方式所述的方法。
17.本技术实施例提供的数据迁移方法、设备及可读存储介质,迁移服务器创建迁移任务后,根据迁移任务依次创建多个子任务。针对每个子任务,利用子任务的迁移通道,将子任务的数据区段对应的数据从数据源端迁移至目的端。采用该种方案,迁移服务器将迁移任务分成多个子任务,打通每个子任务的迁移通道,利用各子任务的迁移通道迁移子任务的数据区段对应的数据,无需匹配api接口,支持流式传输的同时,提高数据迁移速度并降低成本。
附图说明
18.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1是本技术实施例所述的数据迁移方法所适用的一个网络架构示意图;
20.图2是本技术实施例提供的数据迁移方法的另一个网络架构示意图;
21.图3是本技术实施例提供的数据迁移方法的流程图;
22.图4是本技术实施例提供的数据迁移方法中创建子任务的流程图
23.图5是本技术实施例提供的数据迁移方法中子任务的执行流程图;
24.图6为本技术实施例提供的一种数据迁移装置的示意图;
25.图7为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
26.对象存储是一种分布式存储技术,广泛应用于云计算领域。理论上,对象存储支持无限量的非结构化数据的存储,基于简易存储服务(simple storage service,s3)或swift协议等进行访问。对象存储中的基本概念包括存储桶(bucket)、对象(object)等。存储桶是用来管理存储对象的存储空间,类似于文件存储里面的根目录或磁盘分区,对象存储通过存储桶来管理对象。对象可以是任何类型的文件。
27.用户根据需求灵活选择云厂商提供的对象存储服务,不可避免的产生数据迁移需求。例如,初始时,用户选择云厂商a提供的对象存储服务,数据存储在云厂商a的存储系统。一段时间后,用户选择云厂商b提供的对象存储服务,此时,需要将之前存储在云厂商a的数据迁移到云厂商b的存储系统。
28.一般情况系下,每个云厂商有自己的迁移方案,迁移方案和自己的产品绑定,支持
将其他云厂商的数据迁移到自己的存储系统中,但是不支持数据迁出。
29.而且,大部分云厂商的迁移方案极其简单,或者,需要单独的硬件支持,且不支持多机器多任务加速,不支持流式传输等。迁移过程中,需要先将待迁移数据下载到本地后再上传,导致迁移周期非常漫长。
30.另外,现有的迁移方案仅仅是对rsync等工具进行一个简单的包装,缺少业务模型的支持。无法对整个迁移过程进行监控,无法记录迁移的内容,也不支持导出迁移报表。
31.基于此,本技术实施例提供一种数据迁移方法、设备及可读存储介质,迁移服务器将迁移任务分成多个子任务,打通每个子任务的迁移通道,利用各子任务的迁移通道迁移子任务的数据区段对应的数据,无需匹配api接口,支持流式传输的同时,提高数据迁移速度并降低成本。
32.图1是本技术实施例所述的数据迁移方法所适用的一个网络架构示意图。请参照图1,该网络架构包括迁移服务器11、数据源端12、目的端13和终端设备14。迁移服务器11与数据源端12之间、迁移服务器11与目的端13之间、迁移服务器11与终端设备14之间均建立网络连接。
33.数据源端12和目的端13对应不同云厂商的存储系统;或者,对应同一个云厂商的不同存储系统。当客户需求将原本存储在数据源端12的数据迁移至目的端13时,通过终端设备14向迁移服务器11发送迁移请求。迁移服务器11接收到迁移请求后,根据迁移请求携带的参数创建迁移任务,并根据迁移任务依次创建多个子任务,每个子任务对应不同的数据区段。迁移服务器11并发执行每个子任务,将数据区段对应的数据从数据源端12迁移到目的端13。
34.迁移服务器11可以是硬件也可以是软件。当迁移服务器11为硬件时,该迁移服务器11为单个服务器或多个服务器组成的分布式服务器集群。当迁移服务器11为软件时,可以为多个软件模块或单个软件模块等,本技术实施例并不限制。
35.当迁移服务器11服务于少数云厂商、数据量比较少的场景时,迁移服务器11为单个服务器,其上运行多种进程,如多个网关进程、代理进程、迁移通道进程等。网关进程用于接收迁移请求,根据迁移请求生成迁移任务,根据迁移任务依次创建多个子任务。每次创建子任务后,从多个代理进程中确定出目标进程,并将子任务发送给目标进程。目标进程用于启动迁移通道进程,通过迁移通道进程把子任务对应的数据从数据源端12迁移到目的端13。
36.当迁移服务器11服务于多个云厂商、数据量比较大时,迁移服务器11为分布式服务器集群,该分布式服务器集群包含多种服务器,例如,网关服务器、代理服务器和迁移通道服务器,代理服务器和迁移通道服务器一一对应。网关服务器用于接收迁移请求,根据迁移请求生成迁移任务,根据迁移任务依次创建多个子任务。每次创建子任务后,从多个代理服务器中确定出目标服务器,并将子任务发送给目标服务器。目标服务器启动迁移通道,通过迁移通道把子任务对应的数据从数据源端12迁移到目的端13。
37.本技术实施例中,数据源端12和目的端13是相对的,一个云厂商的存储系统可以是数据源端12,也可以是目的端13。例如,云厂商a的数据迁移到云厂商b的存储系统时,云厂商a是数据源端12,云厂商b是目的端13;云厂商b的数据迁移到云厂商a的存储系统时,云厂商b是数据源端12,云厂商a是目的端13。
38.终端设备14是客户的设备,客户通过终端设备14向迁移服务器11下发迁移请求、监控请求、请求获取迁移报表的获取等。终端设备14可以是硬件也可以是软件。当终端设备14为硬件时,终端设备14例如为手机、平板电脑、电子书阅读器、膝上型便携电脑、台式计算机、服务器等。当终端设备14为软件时,其可以安装在上述列举的硬件设备中,此时,终端设备14例如为多个软件模块或单个软件模块等,本技术实施例并不限制。其中,客户又称作使用者等,是使用云厂商提供的各种存储服务的个人或者企业等,本技术实施例并不限制。
39.应当理解的是,图1中迁移服务器11、数据源端12、目的端13和终端设备14的数量仅仅是示意性的。实际实现中,根据实际需求部署任意数量的迁移服务器11、数据源端12、目的端13和终端设备14。
40.图2是本技术实施例提供的数据迁移方法的另一个网络架构示意图。请参照图2,该网络架构中,数据源端存储的数据包括对象、文件等。文件例如是文件系统(file system)中的文件、网络文件系统(network file system,nfs)中的文件等。目的端为一个存储系统,部署多个存储桶(bucket)。数据迁移是指将数据源端以文件存储方式存储的文件或以对象存储方式存储的对象迁移至目的端。
41.迁移服务器包含多个迁移网关、代理节点和迁移通道rclone。客户通过终端设备向迁移网关发送迁移请求。迁移网关根据迁移请求创建迁移任务,根据迁移任务依次创建多个子任务,把子任务发送给负载较轻的代理节点。由代理节点开启迁移通道rclone,利用rclone将数据从数据源端迁移到目的端。
42.当迁移服务器是一个独立的服务器时,每个迁移网关是一个独立运行的服务进程,代理节点也是独立运行的服务进程。同理,rclone也是独立运行的进程。以下为清楚起见,将迁移网关对应的服务进程称之为网关进程,将代理节点对应的服务进程称之为代理进程,将rclone对应的进程称之为rclone进程。
43.图2中,数据库用来记录迁移列表、区段列表等,可以是关系型数据库,如mysql等。
44.请参照图2,迁移服务器包含多个迁移网关,客户可向任意一个迁移网关发送迁移请求。另外,还可以设置多个迁移网关的主从关系,即将多个迁移网关中的一个迁移网关作为主迁移网关,其余为从迁移网关。客户向任意一个从迁移网关发送迁移请求,从迁移网关接收到迁移请求后,将该迁移请求发送给主迁移网关,由主迁移网关根据迁移任务依次创建多个子任务、依次下发子任务等。
45.请参照图2,迁移网关可通过rest等向代理节点发送子任务,代理节点通过fork等启动迁移通道等。
46.本技术实施例提供的数据迁移方法具有如下特征,从而满足对象存储等数据迁移的需求:
47.1)主流提供对象存储服务的云厂商支持rclone等迁移通道,相互之间能够无缝对接;
48.2)支持大文件分片上传;
49.3)支持增量传输;
50.4)支持并发和带宽控制;
51.5)支持流式传输(对内存消耗可控);
52.6)简单、易用;
53.7)代码开源、社区活跃。
54.上述网络架构中,迁移通道例如是rclone等,本技术实施例并不限制。可以将图2所示架构作为一个业务模型,数据源端和目的端分别为任意云厂商的存储系统,从而满足不同云厂商之间的数据迁移需求。
55.下面,基于图1和图2所示网络架构,对本技术实施例提供的数据迁移方法进行详细说明。示例性的,请参照图3。
56.图3是本技术实施例提供的数据迁移方法的流程图。本实施例是从迁移服务器的角度进行说明。本实施例包括:
57.301、创建迁移任务,所述迁移任务指示待迁移数据,以及所述待迁移数据的数据源端和目的端。
58.本技术实施例中,待迁移数据为数据源端的数据,如数据源端以文件存储方式存储的文件、以对象存储方式存储的对象(object)等。
59.迁移服务器被触发后创建迁移任务。一种方式中,迁移服务器接收到来自终端设备的迁移请求后,创建迁移任务。使用者通过命令行或rest api等向迁移服务器发送迁移请求。迁移请求用于指示迁移时间、数据源端、目的端、待迁移数据等。例如,迁移请求指示迁移服务器12:00开始,将云厂商a的存储系统中,存储桶1中的数据迁移到云厂商b的存储系统中。再如,迁移请求指示迁移服务器12:00开始,将云厂商a的存储系统中的数据全量迁移到云厂商b的存储系统中。又如,迁移指令指示迁移服务器12:00开始,将云厂商a的存储桶1中目录a、目录b和目录c下的数据,迁移至云厂商b的存储系统中。
60.另一种方式中,迁移服务器定期创建迁移任务。例如,迁移服务器每天中午12:00自动创建迁移任务,将云厂商a的存储系统中,存储桶1中的数据迁移到云厂商b的存储系统中。
61.迁移服务器创建的迁移任务指示哪些数据是待迁移数据、数据源端是哪个云厂商的存储系统、目的端是哪个云厂商的存储系统等。另外,迁移任务还指示迁移时间、执行该迁移任务需满足的条件等,本技术实施例并不限制。
62.302、根据所述迁移任务,依次创建至少一个子任务,所述至少一个子任务中的不同子任务对应不同的数据区段,所述待迁移数据是各子任务的数据区段对应的数据的总和。
63.本技术实施例中,待迁移数据的数据量往往很大,倘若一个接一个串行迁移,则耗费大量的时间。为避免该问题,迁移服务器依次创建多个子任务,每个子任务对应不同的数据区段,每个子任务仅需迁移自身的数据区段对应的数据,多个子任务并行执行,从而加快迁移速度。
64.例如,一共有100万条待迁移数据,迁移服务器依次创建100个子任务,每个子任务对应1万条数据。
65.303、针对每个子任务,利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端。
66.请参照图2,不同代理节点对应不同的迁移通道。一个代理节点接收到子任务后,启动该子任务所在的代理节点的迁移通道,利用该迁移通道将子任务的数据区段对应的数据从数据源端迁移至目的端。
67.本技术实施例提供的数据迁移方法,迁移服务器创建迁移任务后,根据迁移任务依次创建多个子任务。针对每个子任务,利用子任务的迁移通道,将子任务的数据区段对应的数据从数据源端迁移至目的端。采用该种方案,迁移服务器将迁移任务分成多个子任务,打通每个子任务的迁移通道,利用各子任务的迁移通道迁移子任务的数据区段对应的数据,无需匹配api接口,具有高可靠、高并发、简单易用等特点,支持流式传输的同时,提高数据迁移速度并降低成本。
68.传统的对象存储迁移方案中,由于s3 api的限制,当待迁移数据的数据量比较大时,例如,需要迁移存储桶中的全部数据,存储桶中有数千条甚至上万条数据,采用多线程加生产消费者模式,即一个线程读取属性信息并写入消息队列中,线程池中的线程从消息队列中获取属性信息并进行下一步的迁移,从而实现对多个待迁移数据的串行迁移,迁移效率极低。
69.而本技术实施例中,迁移服务器的迁移网关每次加载一定量的属性信息后,即可创建一个子任务,从而依次创建多个子任务,直到加载完所有待迁移数据的属性信息。每次创建好子任务后,把子任务下发给负载较轻的目标进程,由目标进程执行各子任务。由于代理进程的数量很多,因此,每次创建子任务后选中的目标进程可能不同,多个目标进程并行执行各子任务,实现提高数据迁移速度的目的。下面,对子任务的创建过程进行详细说明。
70.图4是本技术实施例提供的数据迁移方法中创建子任务的流程图。本实施例包括:
71.401、创建迁移任务并启动。
72.迁移服务器的迁移网关接收到迁移请求后,根据迁移请求携带的请求参数创建迁移任务。请求参数包括但不限于用户标识等,用户标识例如为访问密钥(access key,ak)、密码访问密钥(secret access key,sk)和接入地址(endpoint)的组合等。
73.402、判断是否加载完所有待迁移数据的属性信息,若还有至少一个待迁移数据的属性信息未加载,则执行步骤403;若已加载完所有待迁移数据的属性信息,则执行步骤405。
74.示例性的,当待迁移数据的数据量庞大时,迁移服务器每次加载待迁移数据的属性信息之前,先判断是否已加载完所有待迁移数据的属性信息。若还有一个或一些迁移数据的属性信息未加载,则继续执行步骤403;若已经加载完所有待迁移数据的属性信息,则不论当前已加载多少待迁移数据的属性信息,均生成一个子任务。例如,一共有1000008条待迁移数据,一个子任务对应1万条数据,每次加载1000条,需加载10次。第1000次加载后生成第100个子任务,还剩8条待迁移数据的属性信息未加载。
75.创建第100个子任务后,迁移网关发现还有8条待迁移数据的属性信息未加载,因此继续第1001的加载,由于不够1000条,因此,迁移网关只加载8条,最终生成的第101个子任务对应的待迁移数据为8条。
76.403、分批次从所述数据源端加载每批数据的属性信息。
77.本技术实施例中,待迁移数据位于数据源端,迁移服务器的迁移网关加载待迁移数据的属性信息,加载到一定量的属性信息后,创建一个子任务。之后,继续加载属性信息并创建新的子任务,直到加载完所有待迁移数据的属性信息。其中,属性信息例如为待迁移数据的标识、大小(size)等。
78.标准的s3 api默认一次只能导出1000条待迁移数据的属性信息。每个子任务的数
据区段对应的数据量可能大于1000条,因此,迁移服务器的迁移网关需多次调用s3 api才能从数据源端获得子任务对应的数据的属性信息。例如,一共有100万条待迁移数据,需要分成100个子任务,每个子任务对应1万条数据,而迁移网关的s3 api一次只能从数据源端导出1000条待迁移数据的属性信息。因此,一个批次的属性信息是1000条待迁移数据的属性信息,迁移网关调用10次s3 api,才能获得1万条数据的属性信息。
79.404、每加载一批数据的属性信息后,判断已加载的属性信息指示的数据量是否大于或等于预设阈值。若已加载的属性信息指示的数据量大于或等于预设阈值,则执行步骤405;若已加载的属性信息指示的数据量小于预设阈值,则执行步骤403。
80.继续沿用上述的例子,每个子任务对应1万条数据,则预设阈值例如是1万条、8千条等,本技术实施例并不限制。迁移服务器的迁移网关调用s3 api从数据源端加载待迁移数据的属性信息,每次加载1000条,即每个批次是1000条待迁移数据的属性信息。假设加载了10批次的属性信息,则已加载的属性信息指示的数据量等于预设阈值,迁移服务器的迁移网关执行步骤405;假设加载了4个批次的属性信息,则已加载的属性信息指示的数据量小于预设阈值,迁移服务器的迁移网关执行步骤403。
81.405、创建一个子任务,之后,执行步骤402与步骤406。
82.当已加载的属性信息指示的数据量大于或等于预设阈值时,迁移服务器的迁移网关创建一个子任务,并将已加载的属性信息写入数据库中的迁移列表。
83.采用该种方案,迁移服务器每次加载一定量待迁移数据的属性信息后,创建子任务,从而依次创建出多个子任务,为实现多任务并发做好准备工作,进而实现提高数据迁移速度的目的。
84.406、选择每次创建新的子任务后,从多个代理进程中确定出目标进程,所述目标进程是多个代理进程中负载小于预设负载的进程。
85.本技术实施例中,迁移服务器上运行多个代理进程,如图2中的多个代理节点所示。迁移服务器的迁移网关每次创建好子任务后,可随机的从多个代进程中的某个代理进程发送子任务;或者,迁移网关从多个代理进程中选择出负载最小的目标进程,将子任务发送给目标进程;或者,迁移网关从多个代理进程中选择出负载小于预设负载的进程,当存在至少两个代理进程的负载小于预设负载时,迁移网关从中随机选择一个代理进程作为目标进程,并将子任务下发给目标进程。
86.407、触发所述目标进程执行所述子任务,以利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端。
87.目标进程接收到子任务后,启动子任务的迁移通道,从而打通数据源端和目的端的通道,将子任务对应的待迁移数据通过迁移通道进行迁移,子任务的待迁移数据的数据量例如是1万条等。
88.采用该种方案,迁移服务器的迁移网关每次生成子任务后,从多个代理进程中选择负载较轻的进程作为目标进程,并进行数据迁移,实现各代理进程负载均衡的同时,提高数据迁移效率。
89.可选的,上述实施例中,迁移服务器还根据各批数据的属性信息生成迁移列表并存储在数据库中。而且,迁移服务器每次创建子任务后,根据所述子任务对应的已加载的属性信息,生成所述子任务的数据区段,并将所述子任务和所述数据区段的对应关系写入所
述数据库中。
90.示例性的,迁移网关每次加载一批待迁移数据的属性信息后,将该些属性信息写入迁移列表。当加载完所有待迁移数据的属性信息后,迁移列表记录了所有待迁移数据的属性信息。例如,一共有100万条待迁移数据,每次加载1000条待迁移数据的属性信息,每加载10次创建一个子任务。那么,初识时迁移列表为空,第一次加载1000条待迁移数据的属性信息,迁移网关在迁移列表中写入该写属性信息
……
,第1000次加载后,迁移网关在迁移列表中写入最后1000条待迁移数据的属性信息,并将迁移列表保存在数据库中。之所以把迁移列表保存在数据库中,是为了便于各代理进程从数据库读取子任务的待迁移数据的属性信息。
91.迁移网关每次生成新的子任务后,根据子任务对应的待迁移数据的属性信息,生成区段标识。例如,一共有100万条待迁移数据,标识分别为1~100万,迁移网关加载10001~20000条待迁移数据的属性信息后,创建第二个子任务,该子任务的数据区段的标识为表示b,迁移网关在数据库中记录数据区段b对应的数据的标识为10001~20000。迁移网关向目标进程下发子任务的同时,向目标进程发送数据区段的标识,即数据区段b。目标进程接收到子任务后,确定出子任务为:将10000条待迁移数据从数据源端迁移至目的端,根据数据区段b读取数据库,确定出数据区段b指示的数据的标识为10001~20000。因此,目标进程从数据源端获取标识为10001~20000的待迁移数据,并将这些待迁移数据通过迁移通道迁移至目的端。
92.采用该种方案,迁移服务器将用于指示所有待迁移数据的迁移列表、子任务和数据区段的对应关系写入数据库,便于各目标进程快速、准确确定出一个子任务的待迁移数据,实现提高数据迁移速率的目的。
93.下面,对目标进程如何执行子任务进行详细说明。示例性的,请参照图5。图5是本技术实施例提供的数据迁移方法中子任务的执行流程图。本实施例包括:
94.501、读取数据库中的迁移列表。
95.迁移服务器具有多个代理进程,当迁移网关为一个子任务选中目标进程,并将子任务分配给该目标进程后,触发该目标进程执行子任务。执行过程中,目标进程根据子任务对应的数据区段,读取数据库中的迁移列表,从而确定出由目标进程迁移的数据。例如,子任务对应的数据区段b,目标进程读取数据库,确定出数据区段b指示的数据的标识为10001~20000。
96.502、生成区段列表。
97.区段列表用于指示子任务对应的待迁移数据,不同子任务的待迁移数据不同。区别列表相当于从迁移列表中截取的一段内容。例如,迁移列表指示标识为1~100万的待迁移数据的属性信息,一个区段列表指示标识为10001~20000的待迁移数据的属性信息。
98.503、根据所述区段列表,从所述数据源端读取所述子任务的待迁移数据。
99.504、利用所述子任务的迁移通道,将所述子任务的待迁移数据从所述数据源端迁移至所述目的端。
100.创建好区段列表后,目标进程根据区段列表确定出要将数据源端的哪些待迁移数据迁移至目的端。同时,启动迁移通道,执行复制(copy)命令,将区段列表指示的数据从数据源端迁移至目的端,从而完成子任务。
101.另外,执行子任务的过程中,目标进程将已完成的数据的属性信息,如标识、大小、迁移时间等写入数据库。
102.采用该种方案,目标进程从数据库加载区段列表,从而准确确定出子任务对应的待迁移数据,实现提高数据迁移准确率的目的。
103.可选的,上述实施例中,迁移服务器触发目标进程执行子任务的过程中,根据目标进程的资源消耗状况,确定分配给子任务的目标资源。之后,利用目标资源执行子任务。
104.示例性的,请参照图2,目标进程例如是一个代理节点,该代理节点具有cpu、带宽等资源。代理节点执行子任务的同时,还执行其他任务。为了避免相互目标进程的各任务相互干扰,目标进程根据当前cpu、带宽等的消耗情况,为该子任务分配一定的目标资源。基于分配的目标资源,设置子任务启动迁移通道时的并发数量和带宽限制等。之后,启动迁移通道进行数据迁移。
105.采用该种方案,通过为子任务分配目标资源,设置迁移通道启动时,目标进程上执行的任务的并发数量和带宽限制,确保子任务的执行不受干扰等,实现提高数据迁移质量的目的。
106.可选的,上述实施例中,迁移服务器还接收来自终端设备的监控请求。之后,响应于监控请求生成监控信息,并向终端设备反馈监控信息。其中,监控信息用于指示所述迁移任务的执行状况,所述执行状况至少包括每个子任务的进度、各子任务对目标资源的消耗。
107.示例性的,数据迁移过程中,终端设备可通过命令行、rest api等向迁移服务器发送监控请求,以请求查看迁移进度、各子任务的执行状况、迁移通道的启动对cpu、内存等的消耗等,从而及时了解迁移状况,及时发现问题并解决。例如,通过监控信息发现某个子任务执行缓慢,则将该子任务调到其他代理进程;或者,暂停目标进程上的其他任务,优先执行该子任务。
108.采用该种方案,通过支持迁移过程中的监控,便于及时了解数据迁移进度等,实现提高数据迁移速度和质量的目的。
109.可选的,上述实施例中,各子任务执行完毕后,迁移服务器生成迁移报表,并将迁移报表发送给终端设备。其中,所述迁移报表记录下述信息中的至少一个:所述迁移任务的标识、所述迁移任务的起止时间、所述迁移任务的待迁移数据,以及所述待迁移数据的数据源端和目的端。
110.示例性的,迁移服务器监控各个子任务,当子任务结束后,针对迁移任务生成迁移报表,迁移报表记录迁移任务的详细信息,如起止时间、数据源端、目的端、待迁移数据所在的存储桶等。生成迁移报表后,迁移服务器将迁移报表发送给终端设备,供使用者追踪等,实现提高数据迁移质量的目的。
111.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
112.图6为本技术实施例提供的一种数据迁移装置的示意图。该数据迁移装置600包括:创建模块61、处理模块62、迁移模块63。
113.创建模块61,用于创建迁移任务,所述迁移任务指示待迁移数据,以及所述待迁移数据的数据源端和目的端;
114.处理模块62,用于根据所述迁移任务,依次创建至少一个子任务,所述至少一个子
任务中的不同子任务对应不同的数据区段,所述待迁移数据是各子任务的数据区段对应的数据的总和;
115.迁移模块63,用于针对每个子任务,利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端。
116.一种可行的实现方式中,所述处理模块62,用于当所述待迁移数据包含多个数据时,分批次从所述数据源端加载每批数据的属性信息;每加载一批数据的属性信息后,判断已加载的属性信息指示的数据量是否大于或等于预设阈值;当已加载的属性信息指示的数据量大于或等于预设阈值时,创建一个子任务,并启动下一个子任务的创建。
117.一种可行的实现方式中,所述处理模块62,还用于根据各批数据的属性信息生成迁移列表并存储在数据库中;每次创建子任务后,根据所述子任务对应的已加载的属性信息,生成所述子任务的数据区段;将所述子任务和所述数据区段的对应关系写入所述数据库中。
118.一种可行的实现方式中,所述迁移模块63,用于每次创建新的子任务后,从多个代理进程中确定出目标进程,所述目标进程是多个代理进程中负载小于预设负载的进程;触发所述目标进程执行所述子任务,以利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端。
119.一种可行的实现方式中,所述迁移模块63,用于根据所述目标进程的资源消耗状况,确定分配给所述子任务的目标资源;利用所述目标资源执行所述子任务。
120.一种可行的实现方式中,所述迁移模块63,用于触发所述目标进程根据所述子任务对应的数据区段,读取数据库中的迁移列表,以建立区段列表,所述迁移列表用于指示所述迁移任务对应的待迁移数据,所述区段列表用于指示所述子任务对应的待迁移数据;根据所述区段列表,从所述数据源端读取所述子任务的待迁移数据;利用所述子任务的迁移通道,将所述子任务的待迁移数据从所述数据源端迁移至所述目的端。
121.一种可行的实现方式中,再请参照图6,可选的,上述的数据迁移装置600还包括:
122.收发模块64,用于接收来自终端设备的监控请求;
123.所述处理模块62,还用于响应于所述监控请求,生成监控信息,所述监控信息用于指示所述迁移任务的执行状况,所述执行状况至少包括每个子任务的进度、各子任务对目标资源的消耗;
124.所述收发模块64,还用于向所述终端设备发送所述监控信息。
125.一种可行的实现方式中,所述处理模块62,还用于各子任务执行完毕后,生成迁移报表,所述迁移报表记录下述信息中的至少一个:所述迁移任务的标识、所述迁移任务的起止时间、所述迁移任务的待迁移数据,以及所述待迁移数据的数据源端和目的端;
126.所述收发模块64,还用于向终端设备发送所述迁移报表。
127.一种可行的实现方式中,所述创建模块61,用于利用多个网关进程中的任意一个网关进程接收创建指令,以使得所述网关进程响应于所述创建指令创建所述迁移任务,所述多个网关进程运行在所述迁移服务器上,所述网关进程用于创建所述迁移任务,并根据所述迁移任务生成至少一个子任务;所述迁移服务器还运行多个代理进程,所述代理进程用于执行所述子任务。
128.本技术实施例提供的数据迁移装置,可以执行上述实施例中迁移服务器的动作,
其实现原理和技术效果类似,在此不再赘述。
129.图7为本技术实施例提供的一种电子设备的结构示意图。该电子设备700例如为上述的迁移服务器,该电子设备700包括:
130.处理器71和存储器72;
131.所述存储器72存储计算机指令;
132.所述处理器71执行所述存储器72存储的计算机指令,使得所述处理器71执行如上迁移服务器实施的数据迁移方法。
133.处理器71的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
134.可选地,该电子设备700还包括通信部件73。其中,处理器71、存储器72以及通信部件73可以通过总线74连接。
135.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如上迁移服务器实施的数据迁移方法。
136.本技术实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上迁移服务器实施的数据迁移方法。
137.本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
138.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。

技术特征:
1.一种数据迁移方法,其特征在于,应用于迁移服务器,所述方法包括:创建迁移任务,所述迁移任务指示待迁移数据,以及所述待迁移数据的数据源端和目的端;根据所述迁移任务,依次创建至少一个子任务,所述至少一个子任务中的不同子任务对应不同的数据区段,所述待迁移数据是各子任务的数据区段对应的数据的总和;针对每个子任务,利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端。2.根据权利要求1,其特征在于,所述根据所述迁移任务,依次创建至少一个子任务,包括:当所述待迁移数据包含多个数据时,分批次从所述数据源端加载每批数据的属性信息;每加载一批数据的属性信息后,判断已加载的属性信息指示的数据量是否大于或等于预设阈值;当已加载的属性信息指示的数据量大于或等于预设阈值时,创建一个子任务,并启动下一个子任务的创建。3.根据权利要求2所述的方法,其特征在于,还包括:根据各批数据的属性信息生成迁移列表并存储在数据库中;每次创建子任务后,根据所述子任务对应的已加载的属性信息,生成所述子任务的数据区段;将所述子任务和所述数据区段的对应关系写入所述数据库中。4.根据权利要求1所述的方法,其特征在于,所述针对每个子任务,利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端,包括:每次创建新的子任务后,从多个代理进程中确定出目标进程,所述目标进程是多个代理进程中负载小于预设负载的进程;触发所述目标进程执行所述子任务,以利用所述子任务的迁移通道,将所述子任务的数据区段对应的数据从所述数据源端迁移至所述目的端。5.根据权利要求4所述的方法,其特征在于,所述触发所述目标进程执行所述子任务,包括:根据所述目标进程的资源消耗状况,确定分配给所述子任务的目标资源;利用所述目标资源执行所述子任务。6.根据权利要求4所述的方法,其特征在于,所述触发所述目标进程执行所述子任务,包括:触发所述目标进程根据所述子任务对应的数据区段,读取数据库中的迁移列表,以建立区段列表,所述迁移列表用于指示所述迁移任务对应的待迁移数据,所述区段列表用于指示所述子任务对应的待迁移数据;根据所述区段列表,从所述数据源端读取所述子任务的待迁移数据;利用所述子任务的迁移通道,将所述子任务的待迁移数据从所述数据源端迁移至所述目的端。7.根据权利要求1-6任一项所述的方法,其特征在于,还包括:
接收来自终端设备的监控请求;响应于所述监控请求,生成监控信息,所述监控信息用于指示所述迁移任务的执行状况,所述执行状况至少包括每个子任务的进度、各子任务对目标资源的消耗;向所述终端设备发送所述监控信息。8.根据权利要求1-6任一项所述的方法,其特征在于,还包括:各子任务执行完毕后,生成迁移报表,所述迁移报表记录下述信息中的至少一个:所述迁移任务的标识、所述迁移任务的起止时间、所述迁移任务的待迁移数据,以及所述待迁移数据的数据源端和目的端;向终端设备发送所述迁移报表。9.根据权利要求1-6任一项所述的方法,其特征在于,所述创建迁移任务,包括:利用多个网关进程中的任意一个网关进程接收创建指令,以使得所述网关进程响应于所述创建指令创建所述迁移任务,所述多个网关进程运行在所述迁移服务器上,所述网关进程用于创建所述迁移任务,并根据所述迁移任务生成至少一个子任务;所述迁移服务器还运行多个代理进程,所述代理进程用于执行所述子任务。10.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时使得所述电子设备实现如权利要求1至9任一所述的方法。

技术总结
本申请公开了一种数据迁移方法、设备及可读存储介质,迁移服务器创建迁移任务后,根据迁移任务依次创建多个子任务。针对每个子任务,利用子任务的迁移通道,将子任务的数据区段对应的数据从数据源端迁移至目的端。采用该种方案,迁移服务器将迁移任务分成多个子任务,打通每个子任务的迁移通道,利用各子任务的迁移通道迁移子任务的数据区段对应的数据,无需匹配API接口,支持流式传输的同时,提高数据迁移速度并降低成本。据迁移速度并降低成本。据迁移速度并降低成本。


技术研发人员:范文 李东
受保护的技术使用者:深圳爱捷云科技有限公司
技术研发日:2023.03.17
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐