CN105468473B - 数据迁移方法及数据迁移装置 - Google Patents
数据迁移方法及数据迁移装置 Download PDFInfo
- Publication number
- CN105468473B CN105468473B CN201410340044.9A CN201410340044A CN105468473B CN 105468473 B CN105468473 B CN 105468473B CN 201410340044 A CN201410340044 A CN 201410340044A CN 105468473 B CN105468473 B CN 105468473B
- Authority
- CN
- China
- Prior art keywords
- data
- subregion
- node
- operation log
- log file
- 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.)
- Expired - Fee Related
Links
- 238000013508 migration Methods 0.000 title claims abstract description 115
- 230000005012 migration Effects 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 91
- 238000005192 partition Methods 0.000 claims abstract description 209
- 238000003860 storage Methods 0.000 claims description 59
- 230000001360 synchronised effect Effects 0.000 claims description 27
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 8
- 230000006399 behavior Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 description 20
- 241001269238 Data Species 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013509 system migration Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据迁移方法及数据迁移装置。用于对键值***各节点中的数据进行迁移,该方法包括:将各节点中的数据划分成多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。应用本发明,可以降低遍历获取待迁移数据所需的时间、提升KV***的利用率。
Description
技术领域
本发明涉及数据备份技术,具体涉及一种数据迁移方法及数据迁移装置。
背景技术
云计算是网格计算、分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡等计算机技术和通信网络技术发展融合的产物,通过通信网络将多个计算实体(例如,计算机)整合成一个具有强大计算能力的***。分布式计算***是云计算范畴中的一个领域,用以提供云计算中海量数据的分布式存储服务以及高速读写访问的能力。
分布式计算***中,包含有多个由服务器组成的节点(node)以及大量客户端。为了保证分布式计算***中数据的安全性,同样的数据需要分布存储在多个节点形成冗余,即在多个节点上保存同一数据的副本,多个节点间的数据副本互为备份。其中,数据由键(Key)和值(Value)构成,Key相当于数据的索引,Value是Key对应的数据内容,从而在逻辑上,Key和Value形成一一映射关系。采用键值(KV,Key Value)进行数据存储的分布式计算***也称为KV***,常用于数据容灾以及备份领域。
随着通信技术的发展,通信网络产生的数据数量越来越庞大,因而,需要定时或不定时地对KV***进行扩容以满足数据存储以及提供数据服务的需要;或者,当节点负载不均匀,各节点负载相差较大时,需要平衡各节点之间的负载。例如,需要将负载较高或不稳定的节点上的部分数据迁移到负载较低的节点上,或者,添加新的节点,将KV***中的部分数据迁移至新节点上进行维护。在对***进行扩容或负载平衡时,在确定需要对哪些节点进行数据迁移后,需要涉及对KV***中具有实际业务价值的数据进行迁移,因而,如何在不影响KV***正常工作的前提下实现数据迁移是研究的热点问题。
由于KV***中存储有海量数据,很难在较短的时间内遍历所有确定的节点中的数据库,并对迁移后的数据进行校验和评估,以保障迁移数据的一致性。因而,KV***数据迁移过程复杂,很难保证数据在迁移前后的一致性,使得KV***中的数据迁移是一个复杂的工程,面临诸多挑战。此外,KV***需要提供高效稳定的数据服务,而在迁移数据的同时,很难不影响KV***的正常运行,从而影响数据服务的可靠性。
现有的KV***数据库迁移方法,一般通过先确定待迁移节点,在数据迁移之前,将确定的各节点关闭,然后,按照需要迁移的数据量,遍历KV***中确定的各节点,遍历出每条数据对应的key,从而读取该确定的节点中的待迁移数据,并将读取的每条待迁移数据写入预先设置的待迁入数据节点,即对分布在确定的各节点进行遍历操作,从而读出该节点上的所有需要进行迁移的数据,并依序将该读出的每一数据复制到预先设置的节点,然后,追加该节点关闭期间的数据至该预先设置的节点(待迁入数据节点),从而实现数据迁移。具体来说,追加数据的流程如下:该节点(先前关闭的节点)和存储有相同待迁移数据的其它节点均保留一份操作日志(binlog)文件,操作日志始终以追加方式写入用户对数据库的每一步操作,通过比对不同节点对应的操作日志文件,从而可以将该节点被关闭期间由其它节点记录的日志信息复制到该节点,并回放到该节点的数据库中。通过重复上述步骤,可以实现其它节点中待迁移数据的迁移,最终完成KV***的整体数据迁移。
由上述可见,现有遍历KV***实现数据迁移的方法,由于需要针对待迁移数据所在的节点,遍历整个节点的数据库并依序读取待迁移数据,迁移过程需要的时间较长,迁移性能低,迁移效率不高;进一步地,在进行数据迁移时,需要关闭KV***中迁移数据所在节点较长时间并中断提供数据服务,从而影响在线数据访问,降低了KV***的利用率。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的迁移数据的方法及数据迁移装置。
依据本发明的一个方面,提供了数据迁移的方法,用于对键值***各节点中的数据进行迁移,该方法包括:
将各节点中的数据划分成多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;
当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;
关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;
将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
优选地,所述方法还包括:
为所述分区标识相同的迁入分区生成第一操作日志文件;
确定待迁移数据同步完毕,读取所述迁出分区中最后更新的第二操作日志文件以及其它节点中存储所述待迁移数据的分区中最新的第三操作日志文件;
比对第三操作日志文件与第二操作日志文件,将在第三操作日志文件中记录但未在第二操作日志文件中记录的日志信息复制到所述第一操作日志文件中,并回放到所述第一操作日志文件对应迁入分区的数据库中。
优选地,在所述关闭所确定的迁出分区之前,所述方法还包括:
调用键值***的暂离接口。
优选地,在所述回放到所述第一操作日志文件对应分区的数据库中之后,所述方法还包括:
删除所述迁出分区中的待迁移数据。
优选地,在所述回放到所述第一操作日志文件对应迁入分区的数据库中之后,所述方法还包括:
在待迁出数据对应的备份集中,加入所述迁入数据节点中与所述分区标识相同的迁入分区,删除该待迁出数据所在的迁出分区,所述备份集由各节点上存放相同数据或数据副本的分区的集合构成,每一备份集中的各分区具有相同的分区标识。
优选地,在所述加入所述迁入数据节点中与所述分区标识相同的迁入分区之后,所述方法还包括:
将访问待迁出数据所在节点中的迁出分区的入口地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的入口地址。
优选地,所述方法还包括:
将预设的更新数据的存储地址从所述待迁移数据所在迁出分区的存储地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的存储地址。
优选地,所述方法还包括:
将所述迁出分区中存储的预先设置时间点之前写入的数据同步至迁入数据节点中;
获取在所述预先设置时间点之后,与所述确定的分区标识相同的分区的操作日志文件,所述操作日志文件至少包括写入与所述确定的分区标识相同的分区的数据;
根据获取的操作日志文件更新所述迁入数据节点中与所述分区标识相同的迁入分区中的数据。
优选地,所述待迁移数据信息为待迁移数据条数,所述分区信息为分区存储的数据条数。
优选地,所述待迁移数据信息为待迁移数据容量,所述分区信息为分区存储容量。
根据本发明的另一个方面提供了一种数据迁移装置,用于对键值***各节点中的数据进行迁移,该装置包括:分区标识配置模块、迁出分区确定模块以及数据同步模块,其中,
分区标识配置模块,用于划分键值***各节点的数据库为多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;
迁出分区确定模块,用于当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;
数据同步模块,用于关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
优选地,所述数据同步模块包括:读取单元、迁入同步单元、操作日志文件获取单元以及操作日志文件比对单元,其中,
读取单元,用于读取迁出分区中的待迁移数据;
迁入同步单元,用于关闭所确定的迁出分区并以分区为单位将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识,为所述分区标识相同的迁入分区生成第一操作日志文件;
操作日志文件获取单元,用于确定待迁移数据同步完毕,读取所述迁出分区中最后更新的第二操作日志文件以及其它节点中存储所述待迁移数据的分区中最新的第三操作日志文件;
操作日志文件比对单元,用于比对第三操作日志文件与第二操作日志文件,将在第三操作日志文件中记录但未在第二操作日志文件中记录的日志信息复制到所述第一操作日志文件中,并回放到所述第一操作日志文件对应迁入分区的数据库中。
优选地,所述数据同步模块进一步用于调用键值***的暂离接口执行所述关闭所确定的迁出分区。
优选地,所述数据同步模块进一步包括:
备份集更新单元,用于在监测到操作日志文件比对单元回放到所述第一操作日志文件对应分区的数据库中之后,在待迁出数据对应的备份集中,加入所述迁入数据节点中与所述分区标识相同的迁入分区,删除该待迁出数据所在的迁出分区,所述备份集由各节点上存放相同数据或数据副本的分区的集合构成,每一备份集中的各分区具有相同的分区标识。
优选地,所述数据同步模块进一步包括:
删除单元,用于在监测到操作日志文件比对单元回放到所述第一操作日志文件对应分区的数据库中之后,删除所述迁出分区中的待迁移数据。
优选地,所述数据同步模块进一步包括:
入口地址更新单元,用于在监测到备份集更新单元加入所述迁入数据节点中与所述分区标识相同的迁入分区之后,将访问待迁出数据所在节点中的迁出分区的入口地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的入口地址。
优选地,所述数据同步模块包括:数据存储地址更新单元、数据读取单元以及数据迁入同步单元,其中,
数据存储地址更新单元,用于将预设的更新数据的存储地址从所述待迁移数据所在迁出分区的存储地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的存储地址;
数据读取单元,用于读取迁出分区中的待迁移数据;
数据迁入同步单元,用于将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
优选地,所述数据同步模块包括:预设数据写入单元、操作日志文件获取单元以及数据更新单元,其中,
预设数据写入单元,用于将所述迁出分区中存储的预先设置时间点之前写入的数据同步至迁入数据节点中预先设置的与所述分区标识相同的迁入分区;
操作日志文件获取单元,用于获取在所述预先设置时间点之后,与所述确定的分区标识相同的分区的操作日志文件,所述操作日志文件至少包括写入与所述确定的分区标识相同的分区的数据;
数据更新单元,用于根据获取的操作日志文件更新所述迁入数据节点中与所述分区标识相同的迁入分区中的数据。
根据本发明的迁移数据的方法及数据迁移装置,可以通过对各备份集中的分区进行标识,同一备份集中的分区标识相同,不同备份集中的分区标识不相同,从而在数据迁移过程中,只需对各节点的分区标识进行遍历,获取与待迁移数据所在节点中的分区对应的分区标识相同的分区标识,由此解决了无需针对待迁移数据所在的节点,遍历整个节点的数据库获取待迁移数据的技术问题,取得了既可以降低遍历获取待迁移数据所需的时间,提升迁移效率以及迁移性能,又能仅需关闭KV***中迁移数据所在节点中的分区,而无需关闭该节点并中断该节点的数据服务,从而不影响该节点中其它分区的在线数据访问,提升KV***的利用率的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例数据迁移的方法流程;
图2为本发明实施例KV***中各数据库分区结构示意图;
图3示出了本发明实施例数据迁移的方法另一流程;
图4示出了本发明实施例数据迁移的方法再一流程;
图5示出了本发明实施例迁入数据节点结构示意图;以及,
图6示出了本发明实施例的数据迁移装置结构。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
现有遍历KV***实现数据迁移的方法,由于需要针对待迁移数据所在的节点,遍历整个节点的数据库,迁移过程需要的时间较长,迁移性能以及迁移性能低;进一步地,在进行数据迁移时,需要关闭KV***中迁移数据所在节点较长时间并中断提供数据服务,从而影响在线数据访问,降低了KV***的利用率。
目前,数据库的应用范围越来越广泛,通过数据库能够实现对数据的有效管理。随着实际情况的变化,在数据库中用于存储数据的数据文件需要及时更新或进行迁移,以满足实际需求。
本发明实施例中,考虑将键值***中每一节点上存放数据的数据库划分为一个或多个分区(Partition),各节点上存放相同数据或数据副本的分区的集合构成一个备份集(Replica-Set),并对各备份集中的分区进行标识,每一备份集维护存放相同数据或数据副本的多个分区的信息。当需要将KV***中的预设数据量的数据进行迁出处理时,通过对各备份集中的分区进行标识,同一备份集中的分区标识相同,不同备份集中的分区标识不相同,从而在数据迁移过程中,以分区为单位进行数据迁移;然后,通过追加操作日志达到同步的策略来实现迁移数据同步,具有数据迁移快、影响小、数据一致性强等特点,解决了现有KV***数据迁移过程耗时长,遍历数据效率低,遍历影响在线数据服务等问题。
同时,本发明实施例中,KV***中的备份集具有以下特点:备份集中的所有分区之间的数据是一致的;备份集中的某个分区发生异常,不影响KV***中备份集的其他分区提供数据服务,当发生异常的分区恢复正常后,可以加入到备份集中继续提供数据服务。
图1示出了本发明实施例数据迁移的方法流程。用于对键值***各节点中的数据进行迁移,参见图1,该流程包括:
步骤101,将各节点中的数据划分成多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;
本步骤中,KV***的每一节点包含有用于存储数据的数据库,数据库被划分为多个分区,并将分区作为数据迁移的单位,例如,如果一节点的数据库中存储有一千万条数据,该数据库被划分为5个分区,每一分区存储有200万条数据,则在需要从该节点迁移数据400万条时,可以读取其中的两个分区,并将读取的每一分区中的数据副本作为整体进行迁移,从而无需从节点中遍历读取400万条数据,执行400万次读取操作,大大降低了读取数据所需的时间,提升迁移效率以及迁移性能。
本发明实施例中,对数据库进行划分形成的分区数可根据实际需要确定,例如,考虑KV***的容量、数据同步速率、存储数据的总条数、赋予的分区容量中的一项或其任意组合等确定。
本发明实施例中,将各节点中存放相同数据的分区赋予相同的分区标识。由于实际应用中,一般将***中相同的数据都进行迁移,因而,每一分区以分区标识进行区别,各节点上存放相同数据或数据副本的分区的集合构成一个备份集,每一备份集中的各分区具有相同的分区标识,不同备份集中的分区标识不同。其中,分区中的数据采用键值对的方式进行存储构成,Key相当于数据的索引,Value是Key对应的数据内容,从而在逻辑上,Key和Value形成一一映射关系,即键值对。
本发明实施例中,例如,可以将数据库划分为N(大于0的整数)个分区,分区以不大于N的整数进行标识(编号),这样,每一节点上有若干个分区,依序以不大于N的整数进行标识,并设置标识相同的分区用于存储相同的数据,分散在不同节点上标识相同的分区的集合构成一个备份集。
图2为本发明实施例KV***中各数据库分区结构示意图。参见图2,设KV***中包含有三个节点(服务器),分别为第一节点至第三节点,对于第一节点的数据库,划分为5个分区,5个分区的分区标识依序设置为1~5,其中,分区标识1用于存放数据A、B,分区标识2用于存放数据C,分区标识3用于存放数据D,分区标识4用于存放数据E,分区标识5用于存放数据F;对于第二节点的数据库,划分为2个分区,2个分区的分区标识依序设置为4~5,其中,分区标识4用于存放数据E,分区标识5用于存放数据F;对于第三节点的数据库,划分为2个分区,2个分区的分区标识依序设置为1、3,其中,分区标识1用于存放数据A、B,分区标识3用于存放数据D。
实际应用中,备份集也可以采用与分区相同的分区标识进行区别。例如,备份集标识为1的备份集中,所有分区的分区标识为1,…,备份集标识为k的备份集中,所有分区的分区标识为k。
所应说明的是,步骤101并不需要在每次进行数据迁移时都执行,只需要执行一次,后续进行数据迁移时,无需再次执行。
实际应用中,作为可选实施例,还可以为节点中每一分区分配对应的磁盘存储区。由于不同的节点中,分区标识相同的分区对应分配的磁盘存储区可能不同,因而,在为节点中分区分配磁盘存储区之前,需要为节点设置节点标识,从而在为分区分配对应的磁盘存储区后,可以构建节点标识、分区标识与磁盘存储区的映射关系,以在后续流程中,根据数据所在的节点标识以及磁盘存储区,可以确定数据所在的分区标识。其中,磁盘存储区包括但不限于以下信息:磁盘存储区扇区信息、磁盘存储区物理地址信息、磁盘存储区磁道信息、磁盘存储区簇数信息等。
步骤102,当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;
本步骤中,由于存储有相同数据的分区具有相同的分区标识,因而,在根据待迁移数据量以及分区信息确定出待迁移数据所对应的分区标识后,通过查询KV***中的各节点中包含的分区标识,即可获取包含有待迁移数据的节点以及待迁移数据所在节点中的分区(迁出分区),从而在后续进行该待迁移数据迁移时,只需关闭该分区的数据服务功能即可,从而不影响该节点中其它分区提供数据服务。
本发明实施例中,待迁移数据信息包括:待迁移数据量(条数)以及待迁移数据容量,相对应地,分区信息可以包括:分区存储的数据条数、分区存储容量等。例如,待迁移数据信息为400万条数据,待迁移节点中包含3个分区,每一分区存储有200万条数据,可以确定待迁移节点中的迁出分区数为2,即需要将待迁移节点中的2个分区中的数据迁移走。再例如,待迁移数据信息为1G,待迁移节点中包含3个分区,每一分区存储有1G的数据,可以确定待迁移节点中的迁出分区数为1,即需要将待迁移节点中的1个分区中的数据迁移走。当然,实际应用中,每一分区的分区信息也可以不同,并依据分区中存储数据的实际分区信息确定迁出分区。例如,待迁移数据信息为400万条数据,待迁移节点中包含3个分区,每一分区设置可以存储300万条数据,当然,也可设置不同分区存储的数据条数不同。其中,分区1存储有200万条数据,分区2存储有100万条数据,分区3存储有300万条数据,则可以确定待迁移节点中的迁出分区为分区2和分区3。
相对于现有需要根据待迁移数据量,对各节点中的数据库进行遍历,以读取该节点中的待迁移数据,本发明实施例中,只需根据待迁移数据量以及分区信息,确定节点中的迁出分区标识,然后,对各节点的分区标识进行遍历,获取与待迁移数据所在节点中的分区对应的分区标识相同的分区标识(迁出分区标识)即可。通过对分区标识进行遍历,避免了对分区中包含的每一数据进行遍历,从而有效降低了遍历所需的时间,数据迁移速度快,提升了迁移效率以及迁移性能;进一步地,在查询到需要进行数据迁移的分区后,只需关闭KV***中迁移数据所在节点中的分区,并中断提供该分区的数据服务即可,而无需关闭该节点并中断该节点的数据服务,从而不影响该节点中其它分区的在线数据访问,提升了KV***的利用率。
步骤103,关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;
步骤104,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
步骤103以及步骤104中,可以通过管理命令向KV***中所述迁出分区所在的节点发送迁移指令,携带迁出分区标识,KV***中所述迁出分区所在的节点接收迁移指令,根据迁出分区标识,读取迁出分区标识对应的所述迁出分区中的待迁移数据。
当然,实际应用中,在进行数据迁移时,一般是将迁出分区中存储的所有数据进行迁移,因而,本发明实施例中,还可以进一步读取迁出分区标识对应的所述迁出分区中的所有数据,即将迁出分区中的数据作为一个整体进行迁移。
作为可选实施例,每一节点在接收到迁移指令后,调用相应的迁移线程进行迁出分区中的数据读取并进行后续的数据同步。这样,一个迁出分区的数据迁移可由一个迁移进程进行,多个节点中迁出分区的数据迁移过程可采用多线程并发地进行,从而可以有效提高数据的同步速度,缩短数据迁移时间,提高KV***资源利用率。
本发明实施例中,较佳地,在所述关闭所确定的迁出分区之前,该方法进一步包括:
调用KV***的暂离(leave)接口。
本步骤中,在迁移时调用KV***的leave接口,暂停待迁移数据所在迁出分区的数据访问。例如,在读取备份集节点1中分区标识2中的数据之前,调用KV***的leave接口,暂停备份集节点1中分区标识2的数据访问。
作为可选实施例,参见图3,图3示出了本发明实施例数据迁移的方法另一流程。用于对键值***各节点中的数据进行迁移,参见图3,该流程在基于图1的基础上,进一步包括:
B1,为所述分区标识相同的迁入分区生成第一操作日志文件;
本步骤中,迁入数据节点根据同步接收的迁移数据中包含的分区标识以及分区信息,创建一空分区,为创建的空分区分配的容量与同步接收的分区信息中包含的分区容量相同,创建的空分区标识与同步接收的分区标识相同,然后,将同步接收的迁移数据写入创建的空分区中。将从迁出分区中读取的待迁移数据同步至预先设置的节点的对应迁入分区中,该对应迁入分区的迁入分区标识与待迁移数据所在的迁出分区的迁出分区标识相同。即同步迁出分区上的数据到节点X上对应迁出分区标识的迁入分区。也可以是将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
本发明实施例中,为节点中的每一分区设置一操作日志文件,以便于后续的分区数据更新。
B2,确定待迁移数据同步完毕,读取所述迁出分区中最后更新的第二操作日志文件以及其它节点中存储所述待迁移数据的分区中最新的第三操作日志文件;
本步骤中,第三操作日志文件可以是多个节点中存储有所述待迁移数据的分区的操作日志文件。当然,实际应用中,也可以是从中选取与当前时间戳最接近的更新时间对应的操作日志文件。第二操作日志文件为待迁移数据在同步启动时的操作日志文件,由于在同步启动时,该分区中断数据访问,因而,第二操作日志文件也就是迁出分区中最后更新的操作日志文件,也就是说,本发明实施例中,第一操作日志文件和第二操作日志文件中包含的日志信息相同。由于其它节点中,与待迁移数据所在分区具有相同分区标识的分区,在待迁移数据迁移的过程中,这些分区中的数据不发生迁移且不中断访问,因而,可以实时更新,并将更新实时写入第三操作日志文件,从而在后续中,通过比对第三操作日志文件与第二操作日志文件,可以获取在待迁移数据迁移的过程中,由于该分区中断访问,在中断访问期间发生的更新。
B3,比对第三操作日志文件与第二操作日志文件,将在第三操作日志文件中记录但未在第二操作日志文件中记录的日志信息复制到所述第一操作日志文件中,并回放到所述第一操作日志文件对应迁入分区的数据库中。
本步骤中,通过追加分区关闭期间的数据至该预先设置的节点(迁入数据节点)中相应的分区,从而实现数据迁移。其追加流程与现有技术相类似,不同的是,本发明实施例中,为节点中的每一分区对应设置一操作日志文件,操作日志文件始终以追加方式写入用户对数据库中该分区对应数据的每一步操作,关于回放到所述第一操作日志文件对应迁入分区的数据库中为公知技术,在此略去详述。这样,通过为KV***各节点中的每一分区设置一操作日志文件,追加数据仅需通过分区的操作日志文件比对,同步效率更高,有效提升了数据迁移效率,大大降低数据迁移所需的时间;且在数据迁移过程,不需要关闭节点,只需关闭节点中待迁移数据对应的分区,提高了KV***利用率,而且对在线访问的影响小。
实际应用中,在回放到所述第一操作日志文件对应分区的数据库中之后,该方法还可以进一步包括:
删除所述迁出分区中的待迁移数据。
本步骤中,如果对节点中的分区1中的数据进行了迁移,则在数据迁移成功后,删除分区1中的数据。
本发明实施例中,由于是在数据迁移成功后,才删除迁出分区,即所述确定的分区中的待迁移数据。因而,作为一实施例,也可以不中断该迁出分区的数据服务,仍可以向客户端提供数据服务。为避免客户端向迁出分区发送数据服务请求,导致迁出分区的数据发生变化,使得迁出分区与迁入分区(第一操作日志文件对应分区)中的数据不能保持一致性,本发明实施例中,设置迁出分区在数据迁移期间,将根据客户端发送的数据服务请求做出的响应操作写入操作日志文件,在将待迁移数据发送给迁入分区后,将操作日志文件以数据包的形式发送给迁入分区。
当然,在回放到所述第一操作日志文件对应迁入分区的数据库中之后,该方法还可以进一步包括:
在待迁出数据对应的备份集中,加入所述迁入数据节点中与所述分区标识相同的迁入分区,删除该待迁出数据所在的迁出分区。这样,先将迁入数据节点中与所述分区标识相同的迁入分区加入备份集中,然后再从备份集中删除待迁出数据所在的迁出分区,使得在加入不成功的情况下,可以利用备份集中待迁出数据所在的迁出分区提供数据服务。
较佳地,在加入所述迁入数据节点中与所述分区标识相同的迁入分区之后,该方法还可以进一步包括:
将访问待迁出数据所在节点中的迁出分区的入口地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的入口地址。
作为另一可选实施例,该方法还可以进一步包括:
将预设的更新数据的存储地址从所述待迁移数据所在迁出分区的存储地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的存储地址。
本步骤中,在进行数据迁移时,如果在数据迁移过程中,数据发生更新,则可以通过对数据的更新地址进行重配置,实现将更新数据写入迁入数据所在的分区中。
作为再一可选实施例,参见图4,图4示出了本发明实施例数据迁移的方法再一流程。用于对键值***各节点中的数据进行迁移,参见图4,该流程在基于图1的基础上,进一步包括:
D1,将所述迁出分区中存储的预先设置时间点之前写入的数据同步至迁入数据节点中;
本步骤中,同步的数据还可以先导入一存储介质,例如,移动硬盘、闪存等,然后,再将存储介质中的数据导入迁入数据节点中与所述分区标识相同的分区。例如,对于MongoDB数据库,可以通过备份工具mongodump将所述待迁移数据导入存储介质,然后,再通过恢复工具mongorestore将存储介质中的数据导入所述迁入数据节点中与所述分区标识相同的分区。
本发明实施例中,在执行步骤D1后,后续中,需要将预先设置时间点之后的数据写入迁入分区,即迁入数据节点中与所述分区标识相同的分区。
D2,获取在所述预先设置时间点之后,与所述确定的分区标识相同的分区的操作日志文件,所述操作日志文件至少包括写入与所述确定的分区标识相同的分区的数据;
本步骤中,操作日志文件还可以包括但不限于以下信息:
写入数据的时间戳;
在写入数据是对原有数据的更新时,记录原有数据对应的键值。
本发明实施例中,操作日志文件通过记录每一次数据写入这一操作具体内容,其中包括每一次写入数据的内容,还可以包括写入数据的时间戳,进一步地,如果写入数据的操作是对原有数据的更新,则在操作日志文件中,不仅记录写入数据的键值,还记录原有数据的键值。
D3,根据获取的操作日志文件更新所述迁入数据节点中与所述分区标识相同的迁入分区中的数据。
以图2为例,本发明实施例中,首先,将KV***中第一节点至第三节点的数据划分成多个分区,并将各节点中存放相同数据的分区赋予相同的分区标识。具体来说,对于第一节点包含数据A、B、C、D、E的数据库,划分为5个分区,并设置每一分区存储200万条数据。5个分区的分区标识依序设置为1~5,其中,分区标识1用于存放数据A、B,分区标识2用于存放数据C,分区标识3用于存放数据D,分区标识4用于存放数据E,分区标识5用于存放数据F;对于第二节点包含数据E、F的数据库,将存放相同数据的分区赋予相同的分区标识,即划分为2个分区,2个分区的分区标识依序设置为4~5,其中,分区标识4用于存放数据E,分区标识5用于存放数据F;对于第三节点包含数据A、B、E的数据库,按照存放相同数据的分区赋予相同的分区标识的规则,划分为2个分区,2个分区的分区标识依序设置为1、4,其中,分区标识1用于存放数据A、B,分区标识4用于存放数据E。其次,当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区。本发明实施例中,确定需要对第一节点进行数据迁移,并迁移600万条数据,由于待迁移节点(第一节点)中包含5个分区,每一分区存储有200万条数据,可以确定待迁移节点中的迁出分区数为3,并选取分区标识1、分区标识2以及分区标识3对应的分区,即需要将第一节点中分区标识1、分区标识2以及分区标识3对应的分区中的数据迁移走。接着,关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中。本发明实施例中,关闭第一节点中分区标识1、分区标识2以及分区标识3对应的分区,并以分区为单位,将第一节点中分区标识1、分区标识2以及分区标识3对应的分区中的数据迁移至迁入数据节点中。最后,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。本发明实施例中,为迁入数据节点中存放数据A、B所在的存储空间设置分区标识1,为迁入数据节点中存放数据C所在的存储空间设置分区标识2,以及,为迁入数据节点中存放数据D所在的存储空间设置分区标识3。
参见图5,图5示出了本发明实施例迁入数据节点结构示意图。在KV***中,迁入数据节点设置为第四节点,第四节点的存储容量为1200万条数据,在第四节点中,设置存放数据A、B所在的存储空间的分区标识为1,存放数据C所在的存储空间的分区标识为2,以及,存放数据D所在的存储空间的分区标识为3,其它存储空间设置为可用存储空间,未设置分区标识,后续应用中,可以根据后续迁入存放的数据相应赋予与迁出节点中迁出数据所在分区相同的分区标识。
图6示出了本发明实施例的数据迁移装置结构。参见图6,该数据迁移装置用于对键值***各节点中的数据进行迁移,包括:分区标识配置模块、迁出分区确定模块以及数据同步模块,其中,
分区标识配置模块,用于划分KV***各节点的数据库为多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;
本发明实施例中,KV***中的每一节点包含有用于存储数据的数据库,数据库被划分为多个分区,每一分区以分区标识进行区别,各节点上存放相同数据或数据副本的分区的集合构成一个备份集,每一备份集中的各分区具有相同的分区标识,不同备份集中的分区标识不同。
作为可选实施例,分区标识配置模块还可以进一步为KV***中的每一节点配置对应的节点标识,并为节点中分区分配磁盘存储区,构建节点标识、分区标识与磁盘存储区的映射关系。
迁出分区确定模块,用于当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;
本发明实施例中,在获取一节点中存储有待迁移数据的分区标识后,由于本发明实施例对于存储有相同数据的分区,配置相同的分区标识,因而,通过查询KV***各节点中包含的分区标识,可以确定出存储有待迁移数据的所有迁出分区以及对应的迁出分区标识。
数据同步模块,用于关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
本发明实施例中,作为可选实施例,数据同步模块包括:读取单元、迁入同步单元、操作日志文件获取单元以及操作日志文件比对单元(图中未示出),其中,
读取单元,用于读取迁出分区中的待迁移数据;
本发明实施例中,读取单元通过管理命令向KV***中所述迁出分区所在的节点发送迁移指令,携带迁出分区标识,KV***中所述迁出分区所在的节点接收迁移指令,根据迁出分区标识,读取迁出分区标识对应的所述迁出分区中的待迁移数据。
作为可选实施例,每一节点在接收到迁移指令后,调用相应的迁移线程进行迁出分区中的数据读取并进行后续的数据同步。这样,一个迁出分区的数据迁移可由一个迁移进程进行,多个节点中迁出分区的数据迁移过程可采用多线程并发地进行。
迁入同步单元,用于关闭所确定的迁出分区并以分区为单位将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识,并为所述分区标识相同的迁入分区生成第一操作日志文件;
操作日志文件获取单元,用于确定待迁移数据同步完毕,读取所述迁出分区中最后更新的第二操作日志文件以及其它节点中存储所述待迁移数据的分区中最新的第三操作日志文件;
操作日志文件比对单元,用于比对第三操作日志文件与第二操作日志文件,将在第三操作日志文件中记录但未在第二操作日志文件中记录的日志信息复制到所述第一操作日志文件中,并回放到所述第一操作日志文件对应迁入分区的数据库中。
较佳地,数据同步模块还可以进一步用于调用KV***的暂离接口执行所述关闭所确定的迁出分区,即暂停所述迁出分区的数据访问。
作为再一可选实施例,数据同步模块还可以进一步包括:
备份集更新单元,用于在监测到操作日志文件比对单元回放到所述第一操作日志文件对应分区的数据库中之后,在待迁出数据对应的备份集中,加入所述迁入数据节点中与所述分区标识相同的迁入分区,删除该待迁出数据所在的迁出分区,所述备份集由各节点上存放相同数据或数据副本的分区的集合构成,每一备份集中的各分区具有相同的分区标识。
作为另一可选实施例,数据同步模块还可以进一步包括:
删除单元,用于在监测到操作日志文件比对单元回放到所述第一操作日志文件对应分区的数据库中之后,删除所述迁出分区中的待迁移数据。
较佳地,数据同步模块还可以进一步包括:
入口地址更新单元,用于在监测到备份集更新单元加入所述迁入数据节点中与所述分区标识相同的迁入分区之后,将访问待迁出数据所在节点中的迁出分区的入口地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的入口地址。
实际应用中,作为另一可选实施例,数据同步模块也可以包括:数据存储地址更新单元、数据读取单元以及数据迁入同步单元(图中未示出),其中,
数据存储地址更新单元,用于将预设的更新数据的存储地址从所述待迁移数据所在迁出分区的存储地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的存储地址;
数据读取单元,用于读取迁出分区中的待迁移数据;
数据迁入同步单元,用于将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
作为再一可选实施例,数据同步模块也可以包括:预设数据写入单元、操作日志文件获取单元以及数据更新单元(图中未示出),其中,
预设数据写入单元,用于将所述迁出分区中存储的预先设置时间点之前写入的数据同步至迁入数据节点中预先设置的与所述分区标识相同的迁入分区;
操作日志文件获取单元,用于获取在所述预先设置时间点之后,与所述确定的分区标识相同的分区的操作日志文件,所述操作日志文件至少包括写入与所述确定的分区标识相同的分区的数据;
本发明实施例中,操作日志文件还可以包括但不限于以下信息:
写入数据的时间戳;
在写入数据是对原有数据的更新时,记录原有数据对应的键值。
数据更新单元,用于根据获取的操作日志文件更新所述迁入数据节点中与所述分区标识相同的迁入分区中的数据。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的数据迁移装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站服务器上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1.一种数据迁移方法,用于对键值***各节点中的数据进行迁移,该方法包括:
将各节点中的数据划分成多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;
当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;
关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;
将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
A2.根据A1所述的方法,所述方法还包括:
为所述分区标识相同的迁入分区生成第一操作日志文件;
确定待迁移数据同步完毕,读取所述迁出分区中最后更新的第二操作日志文件以及其它节点中存储所述待迁移数据的分区中最新的第三操作日志文件;
比对第三操作日志文件与第二操作日志文件,将在第三操作日志文件中记录但未在第二操作日志文件中记录的日志信息复制到所述第一操作日志文件中,并回放到所述第一操作日志文件对应迁入分区的数据库中。
A3.根据A1所述的方法,在所述关闭所确定的迁出分区之前,所述方法还包括:
调用键值***的暂离接口。
A4.根据A2所述的方法,在所述回放到所述第一操作日志文件对应分区的数据库中之后,所述方法还包括:
删除所述迁出分区中的待迁移数据。
A5.根据A2所述的方法,在所述回放到所述第一操作日志文件对应迁入分区的数据库中之后,所述方法还包括:
在待迁出数据对应的备份集中,加入所述迁入数据节点中与所述分区标识相同的迁入分区,删除该待迁出数据所在的迁出分区,所述备份集由各节点上存放相同数据或数据副本的分区的集合构成,每一备份集中的各分区具有相同的分区标识。
A6.根据A5所述的方法,在所述加入所述迁入数据节点中与所述分区标识相同的迁入分区之后,所述方法还包括:
将访问待迁出数据所在节点中的迁出分区的入口地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的入口地址。
A7.根据A1所述的方法,所述方法还包括:
将预设的更新数据的存储地址从所述待迁移数据所在迁出分区的存储地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的存储地址。
A8.根据A1所述的方法,所述方法还包括:
将所述迁出分区中存储的预先设置时间点之前写入的数据同步至迁入数据节点中;
获取在所述预先设置时间点之后,与所述确定的分区标识相同的分区的操作日志文件,所述操作日志文件至少包括写入与所述确定的分区标识相同的分区的数据;
根据获取的操作日志文件更新所述迁入数据节点中与所述分区标识相同的迁入分区中的数据。
A9.根据A1所述的方法,所述待迁移数据信息为待迁移数据条数,所述分区信息为分区存储的数据条数。
A10.根据A1所述的方法,所述待迁移数据信息为待迁移数据容量,所述分区信息为分区存储容量。
A11.一种数据迁移装置,用于对键值***各节点中的数据进行迁移,该装置包括:分区标识配置模块、迁出分区确定模块以及数据同步模块,其中,
分区标识配置模块,用于划分键值***各节点的数据库为多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;
迁出分区确定模块,用于当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;
数据同步模块,用于关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
A12.根据A11所述的装置,所述数据同步模块包括:读取单元、迁入同步单元、操作日志文件获取单元以及操作日志文件比对单元,其中,
读取单元,用于读取迁出分区中的待迁移数据;
迁入同步单元,用于关闭所确定的迁出分区并以分区为单位将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识,为所述分区标识相同的迁入分区生成第一操作日志文件;
操作日志文件获取单元,用于确定待迁移数据同步完毕,读取所述迁出分区中最后更新的第二操作日志文件以及其它节点中存储所述待迁移数据的分区中最新的第三操作日志文件;
操作日志文件比对单元,用于比对第三操作日志文件与第二操作日志文件,将在第三操作日志文件中记录但未在第二操作日志文件中记录的日志信息复制到所述第一操作日志文件中,并回放到所述第一操作日志文件对应迁入分区的数据库中。
A13.根据A12所述的装置,所述数据同步模块进一步用于调用键值***的暂离接口执行所述关闭所确定的迁出分区。
A14.根据A12所述的装置,所述数据同步模块进一步包括:
备份集更新单元,用于在监测到操作日志文件比对单元回放到所述第一操作日志文件对应分区的数据库中之后,在待迁出数据对应的备份集中,加入所述迁入数据节点中与所述分区标识相同的迁入分区,删除该待迁出数据所在的迁出分区,所述备份集由各节点上存放相同数据或数据副本的分区的集合构成,每一备份集中的各分区具有相同的分区标识。
A15.根据A12所述的装置,所述数据同步模块进一步包括:
删除单元,用于在监测到操作日志文件比对单元回放到所述第一操作日志文件对应分区的数据库中之后,删除所述迁出分区中的待迁移数据。
A16.根据A15所述的装置,所述数据同步模块进一步包括:
入口地址更新单元,用于在监测到备份集更新单元加入所述迁入数据节点中与所述分区标识相同的迁入分区之后,将访问待迁出数据所在节点中的迁出分区的入口地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的入口地址。
A17.根据A11所述的装置,所述数据同步模块包括:数据存储地址更新单元、数据读取单元以及数据迁入同步单元,其中,
数据存储地址更新单元,用于将预设的更新数据的存储地址从所述待迁移数据所在迁出分区的存储地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的存储地址;
数据读取单元,用于读取迁出分区中的待迁移数据;
数据迁入同步单元,用于将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
A18.根据A11所述的装置,所述数据同步模块包括:预设数据写入单元、操作日志文件获取单元以及数据更新单元,其中,
预设数据写入单元,用于将所述迁出分区中存储的预先设置时间点之前写入的数据同步至迁入数据节点中预先设置的与所述分区标识相同的迁入分区;
操作日志文件获取单元,用于获取在所述预先设置时间点之后,与所述确定的分区标识相同的分区的操作日志文件,所述操作日志文件至少包括写入与所述确定的分区标识相同的分区的数据;
数据更新单元,用于根据获取的操作日志文件更新所述迁入数据节点中与所述分区标识相同的迁入分区中的数据。
Claims (16)
1.一种数据迁移方法,用于对键值***各节点中的数据进行迁移,该方法包括:
将各节点中的数据划分成多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;
当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;
关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;
将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与迁出节点相同的分区标识;
为所述分区标识相同的迁入分区生成第一操作日志文件;
确定待迁移数据同步完毕,读取所述迁出分区中最后更新的第二操作日志文件以及其它节点中存储所述待迁移数据的分区中最新的第三操作日志文件;
比对第三操作日志文件与第二操作日志文件,将在第三操作日志文件中记录但未在第二操作日志文件中记录的日志信息复制到所述第一操作日志文件中,并回放到所述第一操作日志文件对应迁入分区的数据库中。
2.如权利要求1所述的方法,在所述关闭所确定的迁出分区之前,所述方法还包括:
调用键值***的暂离接口。
3.如权利要求1所述的方法,在所述回放到所述第一操作日志文件对应分区的数据库中之后,所述方法还包括:
删除所述迁出分区中的待迁移数据。
4.如权利要求1所述的方法,在所述回放到所述第一操作日志文件对应迁入分区的数据库中之后,所述方法还包括:
在待迁移数据对应的备份集中,加入所述迁入数据节点中与所述分区标识相同的迁入分区,删除该待迁移数据所在的迁出分区,所述备份集由各节点上存放相同数据或数据副本的分区的集合构成,每一备份集中的各分区具有相同的分区标识。
5.如权利要求4所述的方法,在所述加入所述迁入数据节点中与所述分区标识相同的迁入分区之后,所述方法还包括:
将访问待迁移数据所在节点中的迁出分区的入口地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的入口地址。
6.如权利要求1所述的方法,所述方法还包括:
将预设的更新数据的存储地址从所述待迁移数据所在迁出分区的存储地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的存储地址。
7.如权利要求1所述的方法,所述方法还包括:
将所述迁出分区中存储的预先设置时间点之前写入的数据同步至迁入数据节点中;
获取在所述预先设置时间点之后,与确定的分区标识相同的分区的操作日志文件,所述操作日志文件至少包括写入与所述确定的分区标识相同的分区的数据;
根据获取的操作日志文件更新所述迁入数据节点中与所述分区标识相同的迁入分区中的数据。
8.如权利要求1所述的方法,所述待迁移数据的信息为待迁移数据条数,所述分区的信息为分区存储的数据条数。
9.如权利要求1所述的方法,所述待迁移数据的信息为待迁移数据容量,所述分区的信息为分区存储容量。
10.一种数据迁移装置,用于对键值***各节点中的数据进行迁移,该装置包括:分区标识配置模块、迁出分区确定模块以及数据同步模块,其中,
分区标识配置模块,用于划分键值***各节点的数据库为多个分区并将各节点中存放相同数据的分区赋予相同的分区标识;
迁出分区确定模块,用于当需要进行数据迁移时,确定需要进行数据迁移的节点的迁出分区;
数据同步模块,用于关闭所确定的迁出分区并以分区为单位将所确定的迁出分区中的数据迁移至迁入数据节点中;将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与迁出节点相同的分区标识;
所述数据同步模块还包括:读取单元、迁入同步单元、操作日志文件获取单元以及操作日志文件比对单元,其中,
读取单元,用于读取迁出分区中的待迁移数据;
迁入同步单元,用于关闭所确定的迁出分区并以分区为单位将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识,为所述分区标识相同的迁入分区生成第一操作日志文件;
操作日志文件获取单元,用于确定待迁移数据同步完毕,读取所述迁出分区中最后更新的第二操作日志文件以及其它节点中存储所述待迁移数据的分区中最新的第三操作日志文件;
操作日志文件比对单元,用于比对第三操作日志文件与第二操作日志文件,将在第三操作日志文件中记录但未在第二操作日志文件中记录的日志信息复制到所述第一操作日志文件中,并回放到所述第一操作日志文件对应迁入分区的数据库中。
11.如权利要求10所述的装置,所述数据同步模块进一步用于调用键值***的暂离接口执行所述关闭所确定的迁出分区。
12.如权利要求10所述的装置,所述数据同步模块进一步包括:
备份集更新单元,用于在监测到操作日志文件比对单元回放到所述第一操作日志文件对应分区的数据库中之后,在待迁移数据对应的备份集中,加入所述迁入数据节点中与所述分区标识相同的迁入分区,删除该待迁移数据所在的迁出分区,所述备份集由各节点上存放相同数据或数据副本的分区的集合构成,每一备份集中的各分区具有相同的分区标识。
13.如权利要求10所述的装置,所述数据同步模块进一步包括:
删除单元,用于在监测到操作日志文件比对单元回放到所述第一操作日志文件对应分区的数据库中之后,删除所述迁出分区中的待迁移数据。
14.如权利要求10所述的装置,所述数据同步模块进一步包括:
入口地址更新单元,用于在监测到备份集更新单元加入所述迁入数据节点中与所述分区标识相同的迁入分区之后,将访问待迁移数据所在节点中的迁出分区的入口地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的入口地址。
15.如权利要求10所述的装置,所述数据同步模块包括:数据存储地址更新单元、数据读取单元以及数据迁入同步单元,其中,
数据存储地址更新单元,用于将预设的更新数据的存储地址从所述待迁移数据所在迁出分区的存储地址变更为所述迁入数据节点中与所述分区标识相同的迁入分区的存储地址;
数据读取单元,用于读取迁出分区中的待迁移数据;
数据迁入同步单元,用于将读取的待迁移数据同步至迁入数据节点中,将迁入到迁入数据节点中与所述迁出分区中的数据对应的数据确定为一分区并为所确定的分区赋予与所述迁出节点相同的分区标识。
16.如权利要求10所述的装置,所述数据同步模块包括:预设数据写入单元、操作日志文件获取单元以及数据更新单元,其中,
预设数据写入单元,用于将所述迁出分区中存储的预先设置时间点之前写入的数据同步至迁入数据节点中预先设置的与所述分区标识相同的迁入分区;
操作日志文件获取单元,用于获取在所述预先设置时间点之后,与确定的分区标识相同的分区的操作日志文件,所述操作日志文件至少包括写入与所述确定的分区标识相同的分区的数据;
数据更新单元,用于根据获取的操作日志文件更新所述迁入数据节点中与所述分区标识相同的迁入分区中的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410340044.9A CN105468473B (zh) | 2014-07-16 | 2014-07-16 | 数据迁移方法及数据迁移装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410340044.9A CN105468473B (zh) | 2014-07-16 | 2014-07-16 | 数据迁移方法及数据迁移装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468473A CN105468473A (zh) | 2016-04-06 |
CN105468473B true CN105468473B (zh) | 2019-03-01 |
Family
ID=55606207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410340044.9A Expired - Fee Related CN105468473B (zh) | 2014-07-16 | 2014-07-16 | 数据迁移方法及数据迁移装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468473B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708968B (zh) * | 2016-12-01 | 2019-11-26 | 成都华为技术有限公司 | 分布式数据库***和分布式数据库***中的数据处理方法 |
CN106777225B (zh) * | 2016-12-26 | 2021-04-06 | 腾讯科技(深圳)有限公司 | 一种数据的迁移方法和*** |
CN106843755B (zh) * | 2017-01-04 | 2019-10-11 | 北京百度网讯科技有限公司 | 用于服务器集群的数据均衡方法与装置 |
CN107122489B (zh) * | 2017-05-11 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种数据对比方法及装置 |
CN108932256A (zh) * | 2017-05-25 | 2018-12-04 | 中兴通讯股份有限公司 | 分布式数据重分布控制方法、装置及数据管理服务器 |
CN107301214B (zh) * | 2017-06-09 | 2020-08-28 | 广州虎牙信息科技有限公司 | 在hive中数据迁移方法、装置及终端设备 |
CN107357896A (zh) * | 2017-07-13 | 2017-11-17 | 北京小度信息科技有限公司 | 数据库集群的扩容方法、装置、***和数据库集群*** |
CN107491529B (zh) * | 2017-08-18 | 2020-05-08 | 华为技术有限公司 | 一种快照删除方法及节点 |
CN107526626B (zh) * | 2017-08-24 | 2020-12-01 | 武汉大学 | 一种基于CRIU的Docker容器热迁移方法及*** |
CN107577433B (zh) * | 2017-09-13 | 2020-09-22 | 苏州浪潮智能科技有限公司 | 一种存储介质和文件数据的迁移方法、装置及设备 |
CN109995813B (zh) * | 2017-12-29 | 2021-02-26 | 华为技术有限公司 | 一种分区扩展方法、数据存储方法及装置 |
CN108509150B (zh) * | 2018-03-08 | 2021-08-20 | 华为技术有限公司 | 数据处理方法及装置 |
CN110555075B (zh) * | 2018-03-29 | 2023-07-07 | 阿里云计算有限公司 | 数据处理方法、装置、电子设备以及计算机可读存储介质 |
CN109379398B (zh) * | 2018-08-31 | 2021-03-12 | 北京奇艺世纪科技有限公司 | 一种数据同步方法及装置 |
CN109901799B (zh) * | 2019-02-28 | 2022-08-19 | 新华三信息安全技术有限公司 | 一种日志读写方法及装置 |
CN110213326B (zh) * | 2019-04-15 | 2022-03-01 | 浙江大华技术股份有限公司 | 元数据节点集群的扩容方法、***、设备和存储介质 |
CN110162517A (zh) * | 2019-05-30 | 2019-08-23 | 深圳前海微众银行股份有限公司 | 数据迁移方法、装置、设备及计算机可读存储介质 |
CN110688064A (zh) * | 2019-09-05 | 2020-01-14 | 浪潮电子信息产业股份有限公司 | 一种虚拟磁盘迁移方法、装置、设备及可读存储介质 |
CN111897494A (zh) * | 2020-07-27 | 2020-11-06 | 星辰天合(北京)数据科技有限公司 | 目标文件的处理方法和装置 |
CN112083885B (zh) * | 2020-09-08 | 2021-10-15 | 北京嘀嘀无限科技发展有限公司 | 一种数据迁移方法、装置、电子设备及存储介质 |
CN113076221B (zh) * | 2021-03-30 | 2023-05-02 | 四川效率源信息安全技术股份有限公司 | 一种针对MongoDB-MMAPv1引擎的数据恢复方法 |
CN113111014B (zh) * | 2021-04-07 | 2023-01-06 | 山东英信计算机技术有限公司 | 缓存中非热点数据的清理方法、装置、设备及存储介质 |
CN113467722B (zh) * | 2021-07-26 | 2024-04-30 | 浙江大华技术股份有限公司 | 一种分布式存储***的数据迁移方法及装置 |
CN113515364B (zh) * | 2021-09-14 | 2022-03-01 | 腾讯科技(深圳)有限公司 | 一种数据迁移的方法及装置、计算机设备和存储介质 |
CN115022313A (zh) * | 2022-04-19 | 2022-09-06 | 湖南宝马文化传播有限公司 | 一种云架构下的数据迁移方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917072A (zh) * | 2012-10-31 | 2013-02-06 | 北京奇虎科技有限公司 | 用于数据服务器集群之间进行数据迁移的设备、***及方法 |
CN102968498A (zh) * | 2012-12-05 | 2013-03-13 | 华为技术有限公司 | 数据处理方法及装置 |
CN103902593A (zh) * | 2012-12-27 | 2014-07-02 | ***通信集团河南有限公司 | 一种数据迁移的方法和装置 |
-
2014
- 2014-07-16 CN CN201410340044.9A patent/CN105468473B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917072A (zh) * | 2012-10-31 | 2013-02-06 | 北京奇虎科技有限公司 | 用于数据服务器集群之间进行数据迁移的设备、***及方法 |
CN102968498A (zh) * | 2012-12-05 | 2013-03-13 | 华为技术有限公司 | 数据处理方法及装置 |
CN103902593A (zh) * | 2012-12-27 | 2014-07-02 | ***通信集团河南有限公司 | 一种数据迁移的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105468473A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468473B (zh) | 数据迁移方法及数据迁移装置 | |
US10873623B2 (en) | Dynamically modifying a cluster of computing nodes used for distributed execution of a program | |
EP2784675B1 (en) | Method, device and system for data reconstruction | |
US20230229637A1 (en) | Intelligent file system with transparent storage tiering | |
US9489443B1 (en) | Scheduling of splits and moves of database partitions | |
US8418181B1 (en) | Managing program execution based on data storage location | |
US8321558B1 (en) | Dynamically monitoring and modifying distributed execution of programs | |
CN106687911B (zh) | 不损害数据完整性的在线数据移动 | |
CN104615606B (zh) | 一种Hadoop分布式文件***及其管理方法 | |
CN107567696A (zh) | 计算集群内的资源实例群组的自动扩展 | |
CN106446159B (zh) | 一种存储文件的方法、第一虚拟机及名称节点 | |
CN104869140B (zh) | 多集群***和控制多集群***的数据存储的方法 | |
US10515228B2 (en) | Commit and rollback of data streams provided by partially trusted entities | |
US11250022B1 (en) | Offline index builds for database tables | |
CN109582213A (zh) | 数据重构方法及装置、数据存储*** | |
GB2545055A (en) | Point-in-time copy with chain cloning | |
US20220358019A1 (en) | Initiating Recovery Actions When A Dataset Ceases To Be Synchronously Replicated Across A Set Of Storage Systems | |
US20230020268A1 (en) | Evaluating Recommended Changes To A Storage System | |
CN110147203A (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
US20200034194A1 (en) | Application and storage based scheduling | |
US9798483B2 (en) | Object storage power consumption optimization | |
US11853284B2 (en) | In-place updates with concurrent reads in a decomposed state | |
US20220207043A1 (en) | Entity data services for virtualized computing and data systems | |
CN111708601A (zh) | 一种面向云计算的智能存储网关、***及其控制方法 | |
US10452305B1 (en) | Tape drive data reclamation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190301 Termination date: 20210716 |