一种数据迁移方法和装置与流程

专利2022-05-09  196



1.本发明涉及计算机技术领域,尤其涉及一种数据迁移方法和装置。


背景技术:

2.对于服务框架下可提供的各种不同的服务,常采用同一存储系统存储服务的配置信息、域名等数据,以实现对服务框架下不同服务的统一管理和维护。
3.随着存储系统的开发及进展,为提高服务的管理和维护效率,需要对服务框架现用的存储系统进行切换或升级。由于不同的存储系统采用的数据存储结构不同,因而需要将存储系统中的数据进行迁移以后才能进行存储系统的切换或升级。但目前尚无法直接实现不同存储系统之间的数据迁移,故而也无法直接对服务框架的存储系统进行切换或升级。


技术实现要素:

4.有鉴于此,本发明实施例提供了一种数据迁移方法和装置,能够在不同的存储系统之间进行数据迁移,实现了服务框架存储系统的切换及升级。
5.为实现上述目的,根据本发明实施例的一个方面,提供了一种数据迁移方法,包括:
6.确定第一存储系统中待迁移数据对应的目录文件;
7.遍历所述目录文件,以获取从根目录至目录节点的一个或多个目录节点路径;
8.获取每一个所述目录节点路径下存储的待迁移数据;
9.根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据;
10.将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。
11.可选地,以key

value的形式组装所述目录节点路径、所述待迁移数据;其中,所述目录节点路径为key,所述待迁移数据为value。
12.可选地,还包括:
13.对每一个所述目录节点路径对应的目录节点进行监听,以根据所监听到的事件对存储至所述第二存储系统的所述目录节点路径、所述待迁移数据进行处理。
14.可选地,所述事件包括下述任意一种或多种:目录节点创建事件、目录节点删除事件、目录节点数据变更事件、目录节点下子目录节点删除事件。
15.可选地,在监听到目录节点数据变更事件的情况下,从所述第一存储系统中获取目录节点路径下存储的更新后的待迁移数据,以更新所述第二存储系统中所述目录节点路径对应的待迁移数据。
16.可选地,在监听到目录节点删除事件的情况下,取消对所述目录节点的监听,并将所述第二存储系统中所述目录节点对应的目录节点路径、待迁移数据删除。
17.可选地,在监听到目录节点创建事件的情况下,将所创建的目录节点对应的目录节点路径、待迁移数据存储至所述第二存储系统,并对所创建的目录节点进行监听。
18.可选地,在监听到目录节点下子目录节点删除事件的情况下,取消对所述目录节点、所述目录节点下子目录节点的监听;
19.将所述第二存储系统中的所有包含有所述目录节点的目录节点路径、所述目录节点路径对应的待迁移数据删除。
20.可选地,将所述目录节点路径存储至数组变量,以通过遍历所述数组变量的方式对每一个所述目录节点路径对应的目录节点进行监听。
21.可选地,所述第一存储系统为zookeeper,所述第二存储系统为etcd。
22.为实现上述目的,根据本发明实施例的另一个方面,提供了一种数据迁移装置,包括:目录文件确定模块、节点路径获取模块、迁移数据获取模块、数据组装模块、数据存储模块:其中,
23.所述目录文件确定模块,用于确定第一存储系统中待迁移数据对应的目录文件;
24.所述节点路径获取模块,用于遍历所述目录文件,以获取从根目录至目录节点的一个或多个目录节点路径;
25.所述迁移数据获取模块,用于获取每一个所述目录节点路径下存储的待迁移数据;
26.所述数据组装模块,用于根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据;
27.所述数据存储模块,用于将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。
28.可选地,所述数据组装模块,用于以key

value的形式组装所述目录节点路径、所述待迁移数据;其中,所述目录节点路径为key,所述待迁移数据为value。
29.可选地,所述数据存储模块,还用于,
30.对每一个所述目录节点路径对应的目录节点进行监听,以根据所监听到的事件对存储至所述第二存储系统的所述目录节点路径、所述待迁移数据进行处理。
31.可选地,所述事件包括下述任意一种或多种:目录节点创建事件、目录节点删除事件、目录节点数据变更事件、目录节点下子目录节点删除事件。
32.可选地,所述数据存储模块,还用于,
33.在监听到目录节点数据变更事件的情况下,从所述第一存储系统中获取目录节点路径下存储的更新后的待迁移数据,以更新所述第二存储系统中所述目录节点路径对应的待迁移数据。
34.可选地,所述数据存储模块,还用于,
35.在监听到目录节点删除事件的情况下,取消对所述目录节点的监听,并将所述第二存储系统中所述目录节点对应的目录节点路径、待迁移数据删除。
36.可选地,所述数据存储模块,还用于,
37.在监听到目录节点创建事件的情况下,将所创建的目录节点对应的目录节点路径、待迁移数据存储至所述第二存储系统,并对所创建的目录节点进行监听。
38.可选地,在监听到目录节点下子目录节点删除事件的情况下,取消对所述目录节点、所述目录节点下子目录节点的监听;
39.将所述第二存储系统中的所有包含有所述目录节点的目录节点路径、所述目录节
点路径对应的待迁移数据删除。
40.可选地,所述数据存储模块,用于将所述目录节点路径存储至数组变量,以通过遍历所述数组变量的方式对每一个所述目录节点路径对应的目录节点进行监听。
41.可选地,所述第一存储系统为zookeeper,所述第二存储系统为etcd。
42.为实现上述目的,根据本发明实施例的再一个方面,提供了一种用于数据迁移的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的数据迁移方法中任一所述的方法。
43.为实现上述目的,根据本发明实施例的又一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的数据迁移方法中任一所述的方法。
44.上述发明中的一个实施例具有如下优点或有益效果:通过遍历第一存储系统中的目录文件,获取从根据目至目录节点的目录节点路径及目录节点路径下存储的待迁移数据,并按照第二存储系统的数据格式组装目录节点路径、待迁移数据以存储至第二存储系统的方式,实现了具有不同数据存储结构的第一存储系统与第二存储系统之间的数据迁移,进而可将第一存储系统直接切换或为第二存储系统。
45.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
46.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
47.图1是根据本发明实施例的数据迁移方法的主要流程的示意图;
48.图2是根据本发明实施例的另一数据迁移方法的主要流程的示意图;
49.图3是根据本发明实施例的数据迁移装置的主要模块的示意图;
50.图4是本发明实施例可以应用于其中的示例性系统架构图;
51.图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
52.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
53.图1是根据本发明实施例的数据迁移方法的主要流程的示意图,如图1所示,该数据迁移方法具体可以包括的步骤如下:
54.步骤s101,确定第一存储系统中待迁移数据对应的目录文件。
55.也即是说,第一存储系统采用目录结构存储服务配置信息、服务端口号、服务域名等待迁移数据。具体地,以第一存储系统为zookeeper为例进行说明,zookeeper作为hadoop和hbase的重要组件,为多个应用服务提供配置维护、域名服务、分布式同步等服务,因而其
中存储的目录文件具有一个或多个目录节点,包括根目录节点、子目录节点、子孙目录节点等。更具体地,待迁移数据在zookeeper中对应的目录文件所指示的目录结构如下所示:
56./root_key:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//根目录
57.ꢀꢀ
/level_1_key1:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//第一层目录节点1
58.ꢀꢀꢀꢀ
/level_2_key1:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//第二层目录节点1
59.ꢀꢀꢀꢀꢀꢀ
/level_3_key1:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//第三层目录节点1
60.ꢀꢀꢀꢀꢀꢀꢀꢀ
/level_4_key1:
ꢀꢀꢀꢀꢀꢀꢀꢀ
//第四层目录节点1
61.ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
/level_5_key1:
ꢀꢀꢀꢀꢀꢀ
//第五层目录节点1
62.ꢀꢀꢀꢀꢀꢀꢀꢀ
/level_5_key2:
ꢀꢀꢀꢀꢀꢀꢀꢀ
//第五层目录节点2
63.ꢀꢀꢀꢀꢀꢀ
/level_4_key2:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//第四层目录节点2
64.ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
/level_3_key2:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//第三层目录节点2
65.ꢀꢀꢀꢀꢀꢀ
/level_2_key2:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//第二层目录节点2
66.ꢀꢀꢀꢀ
/level_1_key2:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//第一层目录节点2
67.其中,root_key、level_1_key1、level_1_key2等为目录节点;进一步地,root_key即为根目录节点,level_1_key1、level_1_key2即为根目录下的子目录节点,level_2_key1则为level_1_key1下的子目录节点,level_3_key1则为level_2_key1下的子目录节点或则level_1_key1下的子孙目录节点。由此可见,同一个目录节点既可以是另一目录节点的子目录节点,也可以是另一目录节点的子孙目录节点。也即是说,对于任意一个目录节点,其有可能具有下一级的子目录节点,也可能不具有下一级的子目录节点;此外,每一个目录节点下都可能存储有服务配置信息、服务端口号、服务域名等待迁移数据,也可能对应的待迁移数据为空。
68.步骤s102,遍历所述目录文件,以获取从根目录至目录节点的一个或多个目录节点路径。
69.具体地,仍以上述zookeeper中的目录文件为例进行说明,则可以获取从根目录节点遍历至任意一个目录节点的目录节点路径。如以目录节点level_1_key1为例进行说明,则对应的目录节点路径为/root_key/level_1_key1,以目录节点level_2_key1为例进行说明,则对应的目录节点路径为/root_key/level_1_key1/leve2_1_key1,进一步地,遍历目录文件以后所获取的一个或多个目录节点路径示例如下:
70./root_key
71./root_key/level_1_key1
72./root_key/level_1_key1/level_2_key1
73./root_key/level_1_key1/level_2_key1/level_3_key1
74./root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key1
75./root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key1/level_5_key1
76./root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key1/level_5_key2
77./root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key2
78./root_key/level_1_key1/level_2_key1/level_3_key2
79./root_key/level_1_key1/level_2_key2
80./root_key/level_1_key2
81.步骤s103,获取每一个所述目录节点路径下存储的待迁移数据。
82.具体地,可以通过直接读取目录节点路径下存储数据的方式获取对应的待迁移数据。由于每一个目录节点下可能存储有服务配置信息、服务端口号、服务域名等待迁移数据,也可能对应的待迁移数据为空,为保证迁移后对服务的正常管理和维护因此,在读取到待迁移数据为空情况下,仍保留对应的目录路径节点,且直接记录对应的待迁移数据为空或blank。
83.步骤s104,根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据。
84.具体地,以第二存储系统为etcd为例进行说明,相比于zookeeper而言,在功能实现方面,etcd只需要调用一次watch操作就可以捕捉所有的事件,大大简化了客户端开发者的工作量;在代码开发方面,etcd使用go语言及google的grpc协议,而zookeeper使用的是java语言及自己的tcp协议,因而开发者受限于zookeeper官方提供的sdk,仅可直接使用java和c语言进行开发,灵活性低,因此在一些业务场景下考虑采用etcd替代zookeeper存储配置信息等以对服务进行管理和维护。由于etcd采用分布式键值对(key

value)数据库存储配置信息等元数据,以对服务进行协调管理,因此,在采用etcd替代zookeeper的情况下,以key

value的形式组装所述目录节点路径、所述待迁移数据;其中,所述目录节点路径为key,所述待迁移数据为value。基于此,组装后的目录节点路径、待迁移数据示例如下:
85.(/root_key,root_key_value)
86.(/root_key/level_1_key1,level_1_key1_value)
87.(/root_key/level_1_key1/level_2_key1,level_2_key1_value)
88.(/root_key/level_1_key1/level_2_key1/level_3_key1,level_3_key1_value)
89.(/root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key1,level_4_key1_value)
90.(/root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key1/level_5_key1,level_5_key1_value)
91.(/root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key1/level_5_key2,level_5_key2_value)
92.步骤s105,将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。
93.也即是说,通过将组装后的具有key

value形式的目录节点路径、待迁移数据全量同步至第二存储系统etcd的方式,实现了第一存储系统zookeeper中存储的配置信息等数据向第二存储系统etcd的迁移,基于此可以采用etcd替代zookeeper对应用服务进行管理和维护。
94.可以理解的是,在一次性将第一存储系统中的数据迁移至第二存储系统的过程中,或者在将第一存储系统切换至第二存储系统之前,第一存储系统中的目录节点及待迁移数据仍可能会发生变化,因此,为保证第二存储系统的高可用性,在一种可选的实施方式中,还包括:对每一个所述目录节点路径对应的目录节点进行监听,以根据所监听到的事件
对存储至所述第二存储系统的所述目录节点路径、所述待迁移数据进行处理。
95.其中,所述事件包括下述任意一种或多种:目录节点创建事件、目录节点删除事件、目录节点数据变更、目录节点下子目录节点删除事件。具体地,zookeeper中可监听(watch)的事件共有以下几种:
96.eventnodecreated:目录节点创建事件
97.eventnodedeleted:目录节点删除事件
98.eventnodedatachanged:目录节点数据变更事件
99.eventnodechildrenchanged:目录节点下子目录节点变更事件
100.其中,目录节点下子目录节点变更事件又具体包括子目录节点创建、子目录节点删除、子目录节点数据变更。但由于本发明实施例中对于每一个目录节点包括但不限于根目录、子目录节点、子孙目录节点等均进行了上述目录节点创建事件、目录节点删除事件、目录节点数据变更事件的监听,为避免与目录节点下子目录节点变更事件重复,因而仅保留对目录节点下子目录节点删除事件的监听。
101.更具体地,可将遍历目录文件所获取的一个或多个目录节点路径存储至数组变量,以通过遍历所述数组变量的方式对每一个所述目录节点路径对应的目录节点进行监听。可以理解的是,还可以通过将目录节点路径写入文件或表格等方式进行监控。
102.在一种可选的实施方式中,在监听到目录节点数据变更事件的情况下,从所述第一存储系统中获取目录节点路径下存储的更新后的待迁移数据,以更新所述第二存储系统中所述目录节点路径对应的待迁移数据。
103.在一种可选的实施方式中,在监听到目录节点删除事件的情况下,取消对所述目录节点的监听,并将所述第二存储系统中所述目录节点对应的目录节点路径、待迁移数据删除。
104.在一种可选的实施方式中,在监听到目录节点创建事件的情况下,将所创建的目录节点对应的目录节点路径、待迁移数据存储至所述第二存储系统,并对所创建的目录节点进行监听。
105.在一种可选的实施方式中,在监听到目录节点下子目录节点删除事件的情况下,取消对所述目录节点、所述目录节点下子目录节点的监听;将所述第二存储系统中的所有包含有所述目录节点的目录节点路径、所述目录节点路径对应的待迁移数据删除。
106.基于上述实施例,通过遍历第一存储系统中的目录文件,获取从根据目至目录节点的目录节点路径及目录节点路径下存储的待迁移数据,并按照第二存储系统的数据格式组装目录节点路径、待迁移数据以存储至第二存储系统的方式,实现了具有不同数据存储结构的第一存储系统与第二存储系统之间的数据迁移,进而可将第一存储系统直接切换或为第二存储系统。
107.参见图2,在上述实施例的基础上,本发明实施例提供了另一种数据迁移方法,具体可以包括的步骤如下:
108.步骤s201,确定第一存储系统中待迁移数据对应的目录文件。
109.步骤s202,遍历所述目录文件,以获取从根目录至目录节点的一个或多个目录节点路径。
110.步骤s203,获取每一个所述目录节点路径下存储的待迁移数据。
111.步骤s204,根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据。
112.步骤s205,将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。
113.步骤s206,对每一个所述目录节点路径对应的目录节点进行监听。具体地,在监听到目录节点数据变更事件的情况下,继续执行下述步骤s207;在监听到目录节点删除事件的情况下,继续执行下述步骤s208;在监听到目录节点创建事件的情况下,继续执行下述步骤s209;在监听到目录节点下子目录节点删除事件的情况下,继续执行下述步骤s210。
114.步骤s207,从所述第一存储系统中获取目录节点路径下存储的更新后的待迁移数据,以更新所述第二存储系统中所述目录节点路径对应的待迁移数据。
115.具体地,在监控到目录节点路径/root_key/level_1_key1对应的目录节点level_1_key1数据变更为例进行说明,则从第一存储系统中获取目录节点路径/root_key/level_1_key1下存储的最新待迁移数据(如152),则将第二存储系统中存储的键值对(/root_key/level_1_key1,level_1_key1_value)中的value值更新为152。
116.步骤s208,取消对所述目录节点的监听,并将所述第二存储系统中所述目录节点对应的目录节点路径、待迁移数据删除。
117.具体地,以监听到目录节点level_2_key1对应的目录节点删除事件为例进行说明,则从第二存储系统中删除键值对(/root_key/level_1_key1/level_2_key1,level_2_key1_value)。
118.步骤s209,将所创建的目录节点对应的目录节点路径、待迁移数据存储至所述第二存储系统,并对所创建的目录节点进行监听。
119.以监听到在目录节点root_key下创建新的目录节点level_1_key3为例进行说明,则对目录节点level_1_key3进行目录节点创建事件、目录节点删除事件、目录节点数据变更、目录节点下子目录节点删除事件等事件的监控,同时,将目录节点level_1_key3对应的键值对(/root_key/level_1_key3,level_1_key3_value)存储至第二存储系统。
120.步骤s210,取消对所述目录节点、所述目录节点下子目录节点的监听,并将所述第二存储系统中的所有包含有所述目录节点的目录节点路径、所述目录节点路径对应的待迁移数据删除。
121.以监听到level_1_key1对应的目录节点下子目录节点删除事件为例进行说明,由于目录节点level_1_key1及其对应的子目录节点level_2_key1、level_3_key1、level_4_key1、level_5_key1等对应的目录节点路径中均包括有目录节点level_1_key1,因此,则取消对目录节点level_1_key1及其对应的子目录节点level_2_key1、level_3_key1、level_4_key1、level_5_key1等的监听;同时,在第二存储系统中删除目录节点level_1_key1、level_2_key1、level_3_key1、level_4_key1、level_5_key1等对应的键值对,即从第二存储系统中删除如下键值对:
122.(/root_key/level_1_key1,level_1_key1_value)
123.(/root_key/level_1_key1/level_2_key1,level_2_key1_value)
124.(/root_key/level_1_key1/level_2_key1/level_3_key1,level_3_key1_value)
125.(/root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key1,level_
4_key1_value)
126.(/root_key/level_1_key1/level_2_key1/level_3_key1/level_4_key1/level_5_key1,level_5_key1_value)
127.如此,在将第一存储系统中的数据一次性全量同步至第二存储系统之后,通过对目录节点的监听保证了对第二存储系统中目录节点路径、待迁移数据的实时性及有效性,提高了第二存储系统的高可用性。
128.参见图3,在上述实施例的基础上,本发明实施例提供了一种数据迁移装置300,包括:目录文件确定模块301、节点路径获取模块302、迁移数据获取模块303、数据组装模块304、数据存储模块305:其中,
129.所述目录文件确定模块301,用于确定第一存储系统中待迁移数据对应的目录文件;
130.所述节点路径获取模块302,用于遍历所述目录文件,以获取从根目录至目录节点的一个或多个目录节点路径;
131.所述迁移数据获取模块303,用于获取每一个所述目录节点路径下存储的待迁移数据;
132.所述数据组装模块304,用于根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据;
133.所述数据存储模块305,用于将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。
134.在一种可选的实施方式中,所述数据组装模块304,用于以key

value的形式组装所述目录节点路径、所述待迁移数据;其中,所述目录节点路径为key,所述待迁移数据为value。
135.在一种可选的实施方式中,所述数据存储模块305,还用于,
136.对每一个所述目录节点路径对应的目录节点进行监听,以根据所监听到的事件对存储至所述第二存储系统的所述目录节点路径、所述待迁移数据进行处理。
137.在一种可选的实施方式中,所述事件包括下述任意一种或多种:目录节点创建事件、目录节点删除事件、目录节点数据变更事件、目录节点下子目录节点删除事件。
138.在一种可选的实施方式中,所述数据存储模块305,还用于,
139.在监听到目录节点数据变更事件的情况下,从所述第一存储系统中获取目录节点路径下存储的更新后的待迁移数据,以更新所述第二存储系统中所述目录节点路径对应的待迁移数据。
140.在一种可选的实施方式中,所述数据存储模块305,还用于,
141.在监听到目录节点删除事件的情况下,取消对所述目录节点的监听,并将所述第二存储系统中所述目录节点对应的目录节点路径、待迁移数据删除。
142.在一种可选的实施方式中,所述数据存储模块305,还用于,
143.在监听到目录节点创建事件的情况下,将所创建的目录节点对应的目录节点路径、待迁移数据存储至所述第二存储系统,并对所创建的目录节点进行监听。
144.在一种可选的实施方式中,在监听到目录节点下子目录节点删除事件的情况下,取消对所述目录节点、所述目录节点下子目录节点的监听;将所述第二存储系统中的所有
包含有所述目录节点的目录节点路径、所述目录节点路径对应的待迁移数据删除。
145.在一种可选的实施方式中,所述数据存储模块305,用于将所述目录节点路径存储至数组变量,以通过遍历所述数组变量的方式对每一个所述目录节点路径对应的目录节点进行监听。
146.在一种可选的实施方式中,所述第一存储系统为zookeeper,所述第二存储系统为etcd。
147.图4示出了可以应用本发明实施例的数据迁移方法或数据迁移装置的示例性系统架构400。
148.如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
149.用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种应用,例如可视化应用等,以对数据迁移进度进行展示。
150.终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
151.服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所发送的数据迁移请求进行处理的后台管理服务器,以将数据迁移进度反馈给终端设备。
152.需要说明的是,本发明实施例所提供的数据迁移方法一般由服务器405执行,相应地,数据迁移装置一般设置于服务器405中。
153.应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
154.下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
155.如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram 503中,还存储有系统500操作所需的各种程序和数据。cpu 501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
156.以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
157.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在
这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(cpu)501执行时,执行本发明的系统中限定的上述功能。
158.需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
159.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
160.描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括目录文件确定模块、节点路径获取模块、迁移数据获取模块、数据组装模块、数据存储模块元。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,目录文件确定模块还可以被描述为“用于确定第一存储系统中待迁移数据对应的目录文件的模块”。
161.作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:确定第一存储系统中待迁移数据对应的目录文件;遍历所述目录文件,以获取从根目录至目录节点的一个或多个目录节点路径;获取每一个所述目录节点路径下存储的待迁移数据;根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据;将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。
162.根据本发明实施例的技术方案,通过遍历第一存储系统中的目录文件,获取从根据目至目录节点的目录节点路径及目录节点路径下存储的待迁移数据,并按照第二存储系统的数据格式组装目录节点路径、待迁移数据以存储至第二存储系统的方式,实现了具有不同数据存储结构的第一存储系统与第二存储系统之间的数据迁移,进而可将第一存储系统直接切换或为第二存储系统。
163.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

技术特征:
1.一种数据迁移方法,其特征在于,包括:确定第一存储系统中待迁移数据对应的目录文件;遍历所述目录文件,以获取从根目录至目录节点的一个或多个目录节点路径;获取每一个所述目录节点路径下存储的待迁移数据;根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据;将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。2.根据权利要求1所述的数据迁移方法,其特征在于,以key

value的形式组装所述目录节点路径、所述待迁移数据;其中,所述目录节点路径为key,所述待迁移数据为value。3.根据权利要求2所述的数据迁移方法,其特征在于,还包括:对每一个所述目录节点路径对应的目录节点进行监听,以根据所监听到的事件对存储至所述第二存储系统的所述目录节点路径、所述待迁移数据进行处理。4.根据权利要求3所述的数据迁移方法,其特征在于,所述事件包括下述任意一种或多种:目录节点创建事件、目录节点删除事件、目录节点数据变更事件、目录节点下子目录节点删除事件。5.根据权利要求4所述的数据迁移方法,其特征在于,在监听到目录节点数据变更事件的情况下,从所述第一存储系统中获取目录节点路径下存储的更新后的待迁移数据,以更新所述第二存储系统中所述目录节点路径对应的待迁移数据。6.根据权利要求4所述的数据迁移方法,其特征在于,在监听到目录节点删除事件的情况下,取消对所述目录节点的监听,并将所述第二存储系统中所述目录节点对应的目录节点路径、待迁移数据删除。7.根据权利要求4所述的数据迁移方法,其特征在于,在监听到目录节点创建事件的情况下,将所创建的目录节点对应的目录节点路径、待迁移数据存储至所述第二存储系统,并对所创建的目录节点进行监听。8.根据权利要求4所述的数据迁移方法,其特征在于,在监听到目录节点下子目录节点删除事件的情况下,取消对所述目录节点、所述目录节点下子目录节点的监听;将所述第二存储系统中的所有包含有所述目录节点的目录节点路径、所述目录节点路径对应的待迁移数据删除。9.根据权利要求3所述的数据迁移方法,其特征在于,将所述目录节点路径存储至数组变量,以通过遍历所述数组变量的方式对每一个所述目录节点路径对应的目录节点进行监听。10.根据权利要求1所述的数据迁移方法,其特征在于,所述第一存储系统为zookeeper,所述第二存储系统为etcd。11.一种数据迁移装置,其特征在于,包括:目录文件确定模块、节点路径获取模块、迁移数据获取模块、数据组装模块、数据存储模块:其中,所述目录文件确定模块,用于确定第一存储系统中待迁移数据对应的目录文件;所述节点路径获取模块,用于遍历所述目录文件,以获取从根目录至目录节点的一个
或多个目录节点路径;所述迁移数据获取模块,用于获取每一个所述目录节点路径下存储的待迁移数据;所述数据组装模块,用于根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据;所述数据存储模块,用于将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。12.一种用于数据迁移的电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1

10中任一所述的方法。13.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1

10中任一所述的方法。
技术总结
本发明公开了一种数据迁移方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:确定第一存储系统中待迁移数据对应的目录文件;遍历所述目录文件,以获取从根目录至目录节点的一个或多个目录节点路径;获取每一个所述目录节点路径下存储的待迁移数据;根据第二存储系统的数据格式,组装所述目录节点路径、所述待迁移数据;将组装后的所述目录节点路径、所述待迁移数据存储至所述第二存储系统。该实施方式能够在不同的存储系统之间进行数据迁移,实现了服务框架存储系统的切换及升级。级。级。


技术研发人员:赵晨 郭伟 杨轩嘉
受保护的技术使用者:北京京东世纪贸易有限公司
技术研发日:2021.03.26
技术公布日:2021/6/29

转载请注明原文地址:https://doc.8miu.com/index.php/read-983.html

最新回复(0)