CN108804465A - 一种分布式缓存数据库数据迁移的方法及系统 - Google Patents
一种分布式缓存数据库数据迁移的方法及系统 Download PDFInfo
- Publication number
- CN108804465A CN108804465A CN201710306691.1A CN201710306691A CN108804465A CN 108804465 A CN108804465 A CN 108804465A CN 201710306691 A CN201710306691 A CN 201710306691A CN 108804465 A CN108804465 A CN 108804465A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- fragment
- back end
- authentic copy
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
Abstract
本发明公开了一种分布式缓存数据库数据迁移的方法及系统,所述方法包括:CDB数据迁移期间,CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布;所述CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本;所述CDB控制节点通知所述迁入节点,使所述迁入节点获取所述第一副本相关的分片数据。本发明实施例通过在数据迁移过程中同一数据分片的多个副本之间的相互转换,实现实时、高效、安全的迁移数据,数据迁移量小,不需要额外资源配合,且不会中断业务。
Description
技术领域
本发明涉及数据迁移领域,特别涉及一种分布式缓存数据库数据迁移的方法及系统。
背景技术
随着无线通讯技术、存储介质的改变和虚拟化、云计算的快速发展,大量的实时的动态数据需要采用缓存的方式分布于各个云节点上,数据不再固定持久化到物理设备上,而是可以伴随系统的资源伸缩进行流动分布,因此研究分布式场景下的缓存数据的迁移已成为一个重要方向。
随着云平台、虚拟化技术的快速发展,快速部署、多业务共存,物理资源共享等越来越受到重视,以前的物理单板或服务器被虚机或容器所取代,整个运行系统的资源会根据一定的策略(比如时间或中央处理单元(Central Processing Unit,CPU)利用率)自动进行弹性伸缩及系统扩缩容,在此过程中要求不中断业务,不丢失数据。进一步说,分布式数据库在云化背景下,数据存储节点的弹性伸缩带来的内存数据的迁移是分布式缓存数据库的重要任务,但由于移动通讯的组网模型复杂,业务的实时性与不可中断性,以及运营中节点内存与网络带宽的限制等因素使得数据迁移成为一项敏感的处理。当云平台根据硬件资源及策略进行弹性伸缩的时候,如果节点上所缓存的数据发生丢失或失序,或过多的数据移动都会极大影响基于这些数据的业务的功能性,同时迁移的结果也直接影响数据分布的均衡性,处理不当会造成业务处理逻辑的复杂性增加。
同时,由于移动核心网业务模型的变化及内存容量的快速提升,分布式键值(Key-Value,KV)数据库需要更简洁、高效,与业务无关,不关心业务逻辑,支持事务和批量操作,且采用无锁模式,更高效利用CPU资源,不要求存储,对数据持久化没有要求。在物理服务器或虚拟资源上,数据节点与业务节点可以分开部署也可以共存,数据作为占用虚拟资源的一部分存在,可以伸缩。
在此种场景下,配置及运行数据被大量的存储在内存中,传统意义上的数据库的一个表被划分为多个子表,每一个子表存储其中一部分数据。这样,一个子表就叫一个分片,整个分布式数据采用内存分片的方式管理,一个分片可以有多个副本同时存在分布式节点上。数据对象根据不同对象分类,数据的对象通常会有不同的副本来存储这一数据对象的数据。
用户数据在内存分片的分布方法是基于用户数据标识进行分布的。数据迁移时,主要是基于分片,一次可以迁移一个或多个分片,迁移方便。迁移完成后内存释放回库内存池,其他分片可以使用。
由于网络带宽、物理资源及不中断业务等限制的因素,这就要求数据在迁移的时候尽可能的少移动分片,每个缓存数据库数据节点(CDB Data Node,CDN)节点上的第一副本对应的第二副本尽量均匀分布在异域节点上,在有容灾备份节点的场景下,应尽量避免或者减少数据在已有的CDN节点之间相互迁移,特别是跨域移动,迁移的过程不增加额外的虚拟资源,同域不同数据节点间的第一、第二副本总数偏差不超过1个副本,保证用户数据的完整、均衡,否则会影响业务操作的时延及数据一致性。
目前业界通常用的数据迁移方法有:
1、利用数据库本身触发dump机制,采用预先存储的方法,在业务低谷期进行源数据的备份,然后再到目的节点上进行恢复,同时配合日志操作文件进行增量加载达到迁移目的。
2、利用ms机制做级联复制,将准备迁移的分片进行级联主从到目的分片,采用主备切换的方式,然后再利用数据库工具解析切换换过程中产生的操作日志,将此日志内容在新的分片上再做一遍。
上述方法不仅数据量移动比较大,需要额外资源配合,并且都有少量的中断业务,不能完全满足数据迁移的实时、自适应、完整的需求。
发明内容
本发明实施例提供的一种分布式缓存数据库数据迁移的方法及装置,在不中断业务的情况下,以最小的迁移量,实时、安全、高效的完成数据迁移。
根据本发明实施例提供的一种分布式缓存数据库数据迁移的方法,包括:
缓存数据库CDB数据迁移期间,CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布;
所述CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本;
所述CDB控制节点通知所述迁入节点,使所述迁入节点获取所述第一副本相关的分片数据。
优选地,若所述CDB控制节点获取新增数据节点,则所述CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布包括:
所述CDB控制节点从原有数据节点中选取待迁移的第一副本后,通过确定所述原有数据节点与所述新增数据节点是否是同域数据节点,将迁移前初始分片分布中所述原有数据节点的第一副本调整为所述新增数据节点的第一副本;
所述CDB控制节点在调整所述迁移前初始分片分布中的第一副本后,调整同域内的第二副本,使同域内每个数据节点的第二副本数量均衡。
优选地,所述通过确定所述原有数据节点与所述新增数据节点是否是同域数据节点,将迁移前初始分片分布中所述原有数据节点的第一副本移动到所述新增数据节点的第一副本包括:
若是同域数据节点,则所述CDB控制节点将所述迁移前初始分片分布中所述原有数据节点的第一副本放入所述新增数据节点,并删除所述迁移前初始分片分布中所述原有数据节点的第一副本;
若不是同域数据节点,则所述CDB控制节点将迁移前初始分片分布中所述原有数据节点的第一副本放入所述新增数据节点,并将所述迁移前初始分片分布中所述原有数据节点的第一副本转换为用于备份的第二副本。
优选地,所述CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本包括:
所述CDB控制节点根据当前运行数据分片分布和所述稳态数据分片分布,确定新增数据节点为迁入节点及需要迁移至所述新增数据节点的第一副本。
优选地,所述迁入节点获取所述第一副本相关的分片数据包括:
所述新增数据节点依次通过在线恢复和异步复制,获取与需要迁入的第一副本相关的分片数据作为第三副本。
优选地,所述新增数据节点通过异步复制获取与需要迁入的第一副本相关的分片数据期间,还包括:
若所述第一副本所在的原有数据节点与所述新增数据节点是同域数据节点,则将所述第一副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本;
若所述第一副本所在的原有数据节点与所述新增数据节点不是同域数据节点,则将所述第一副本转换为用于备份的第二副本。
优选地,所述CDB控制节点确定需要迁移至迁入节点的数据分片第一副本之后,还包括:
所述CDB控制节点按照同域内各数据节点的第二副本数量均衡策略,确定需要迁移至所述新增数据节点的第二副本,并通知所述新增数据节点。
优选地,在所述迁入节点获取所述第一副本相关的分片数据期间,还包括:
所述新增数据节点依次通过在线恢复和异步复制,获取与需要迁入的第二副本相关的分片数据作为第三副本。
优选地,所述新增数据节点通过异步复制获取与需要迁入的第二副本相关的分片数据期间,还包括:
将所述第二副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本。
优选地,若所述CDB控制节点收到需要删除数据节点的通知,则所述CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布包括:
所述CDB控制节点计算待删数据节点删除后剩余数据节点上需要分布的第一副本的数量,并根据所述剩余数据节点上需要分布的第一副本的数量,将迁移前初始分片分布中所述待删数据节点的第一副本调整为所述剩余数据节点的第一副本;
所述CDB控制节点在调整所述迁移前初始分片分布中的第一副本后,将所述迁移前初始分片分布中所述待删数据节点的第二副本转移至同域内的剩余数据节点,并将缺少的第二副本补充到同域内第二副本数最少的剩余数据节点上。
优选地,所述根据所述剩余数据节点上需要分布的第一副本的数量,将迁移前初始分片分布中所述待删数据节点的第一副本调整为所述剩余数据节点的第一副本包括:
若是同域节点,则所述CDB控制节点将所述迁移前初始分片分布中所述待删数据节点的第一副本放入第一副本数量最少的剩余数据节点;
若不是同域节点,则所述CDB控制节点将所述迁移前初始分片分布中所述剩余数据节点的第二副本转换为第一副本;
其中,所述剩余数据节点的第二副本与所述待删数据节点的第一副本关联。
优选地,所述CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本包括:
所述CDB控制节点根据当前运行数据分片分布和所述稳态数据分片分布,确定剩余数据节点为迁入节点及需要从所述待删数据节点迁移至所述剩余数据节点的第一副本。
优选地,所述迁入节点获取所述第一副本相关的分片数据包括:
所述剩余数据节点依次通过在线恢复和异步复制,获取与需要迁入的第一副本相关的分片数据作为第三副本。
优选地,所述剩余数据节点通过异步复制获取与需要迁入的第一副本相关的分片数据期间,还包括:
将所述待删数据节点的第一副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本;
将所述剩余数据节点的第三副本转换为第一副本。
优选地,所述CDB控制节点确定需要迁移至迁入节点的数据分片第一副本之后,还包括:
所述CDB控制节点按照同域内各数据节点的第二副本数量均衡策略,确定需要迁移至同域内剩余数据节点的第二副本,并通知所述剩余数据节点。
优选地,在所述迁入节点获取所述第一副本相关的分片数据期间,还包括:
所述剩余数据节点依次通过在线恢复和异步复制,获取与需要迁入的第二副本相关的分片数据作为第三副本。
优选地,所述剩余数据节点通过异步复制获取与需要迁入的第二副本相关的分片数据期间,还包括:
将所述待删数据节点的第二副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本;
将所述剩余数据节点的第三副本转换为第二副本。
根据本发明实施例提供的存储介质,其存储用于实现上述分布式缓存数据库数据迁移的方法的程序。
根据本发明实施例提供的一种分布式缓存数据库数据迁移的系统,包括缓存数据库CDB控制节点、迁入节点、迁出节点,其中:
CDB控制节点,用于在CDB数据迁移期间,确定CDB数据迁移完成后的稳态数据分片分布,根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本,并通知所述迁入节点;
迁入节点,用于根据来自所述CDB控制节点的通知,获取所述第一副本相关的分片数据。
本发明实施例提供的技术方案具有如下有益效果:
本发明实施例通过在数据迁移过程中同一数据分片的多个副本之间的相互转换,实现实时、高效、安全的迁移数据,数据迁移量小,不需要额外资源配合,且不会中断业务。
附图说明
图1是本发明实施例提供的分布式缓存数据库数据迁移的方法流程图;
图2是本发明实施例提供的分布式缓存数据库数据迁移的系统框图;
图3是本发明实施例提供的迁移前分片分布格局图;
图4a是本发明实施例提供的增加节点场景分片分布迁移算法中平均第一副本的示意图;
图4b是本发明实施例提供的增加节点场景分片分布迁移算法中同域和跨域一通的第一副本的示意图;
图4c是本发明实施例提供的增加节点场景分片分布迁移算法中调整第二副本的示意图;
图4d是本发明实施例提供的增加节点场景分片分布迁移算法中迁移结束后分片分步副本示意图;
图5a是本发明实施例提供的删除节点场景分片副本转换前的示意图;
图5b是本发明实施例提供的删除节点场景分片副本转换后的示意图;
图6是本发明实施例提供的增加节点场景的数据迁移过程图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是本发明实施例提供的分布式缓存数据库数据迁移的方法流程图,如图1所示,步骤包括:
步骤S101:CDB数据迁移期间,CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布。
若所述CDB控制节点获取新增数据节点,即在新增数据节点的场景下,所述CDB控制节点从原有数据节点中选取待迁移的第一副本后,首先通过确定所述原有数据节点与所述新增数据节点是否是同域数据节点,将迁移前初始分片分布中所述原有数据节点的第一副本调整为所述新增数据节点的第一副本,具体地说,若是同域数据节点,则将所述迁移前初始分片分布中所述原有数据节点的第一副本放入所述新增数据节点,并删除所述迁移前初始分片分布中所述原有数据节点的第一副本,若不是同域数据节点,则将迁移前初始分片分布中所述原有数据节点的第一副本放入所述新增数据节点,并将所述迁移前初始分片分布中所述原有数据节点的第一副本转换为用于备份的第二副本。然后调整同域内的第二副本,使同域内每个数据节点的第二副本数量均衡。
若所述CDB控制节点收到来自服务器负载均衡(SLB)的需要删除数据节点的通知,即在删除数据节点的场景下,所述CDB控制节点首先计算待删数据节点删除后剩余数据节点上需要分布的第一副本的数量,并根据所述剩余数据节点上需要分布的第一副本的数量,将迁移前初始分片分布中所述待删数据节点的第一副本调整为所述剩余数据节点的第一副本,具体地说,若是同域节点,则将所述迁移前初始分片分布中所述待删数据节点的第一副本放入第一副本数量最少的剩余数据节点,若不是同域节点,则将所述迁移前初始分片分布中所述剩余数据节点的与所述待删数据节点的第一副本关联的第二副本转换为第一副本。然后将所述迁移前初始分片分布中所述待删数据节点的第二副本转移至同域内的剩余数据节点,并将缺少的第二副本补充到同域内第二副本数最少的剩余数据节点上。
通过对比稳态数据分片分布和当前运行数据分片分布,可以确定新增数据节点或待删数据节点,以及数据节点上存在于稳态数据分片分布而不存在与当前运行数据分片分布的数据分片(即待迁移的数据分片)。
步骤S102:CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本。
在新增数据节点的场景下,所述CDB控制节点根据当前运行数据分片分布和所述稳态数据分片分布,确定新增数据节点为迁入节点及需要迁移至所述新增数据节点的第一副本。在执行步骤S102之后,还包括:所述CDB控制节点按照同域内各数据节点的第二副本数量均衡策略,确定需要迁移至所述新增数据节点的第二副本,并通知所述新增数据节点。
在删除数据节点的场景下,所述CDB控制节点根据当前运行数据分片分布和所述稳态数据分片分布,确定剩余数据节点为迁入节点及需要从所述待删数据节点迁移至所述剩余数据节点的第一副本。在执行步骤S102之后,还包括:所述CDB控制节点按照同域内各数据节点的第二副本数量均衡策略,确定需要迁移至同域内剩余数据节点的第二副本,并通知所述剩余数据节点。
步骤S103:CDB控制节点通知所述迁入节点,使所述迁入节点获取所述第一副本相关的分片数据。
在新增数据节点的场景下,作为迁入节点的新增数据节点依次通过在线恢复和异步复制,获取与需要迁入的第一副本相关的分片数据作为第三副本。在所述迁入节点获取所述第一副本相关的分片数据期间,所述新增数据节点依次通过在线恢复和异步复制,获取与需要迁入的第二副本相关的分片数据作为第三副本。其中,在通过异步复制获取与需要迁入的第一副本相关的分片数据期间,若所述第一副本所在的原有数据节点与所述新增数据节点是同域数据节点,则将所述第一副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本,若所述第一副本所在的原有数据节点与所述新增数据节点不是同域数据节点,则将所述第一副本转换为用于备份的第二副本。在通过异步复制获取与需要迁入的第二副本相关的分片数据期间,将所述第二副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本。
在删除数据节点的场景下,作为迁入节点的剩余数据节点依次通过在线恢复和异步复制,获取与需要迁入的第一副本相关的分片数据作为第三副本。在所述迁入节点获取所述第一副本相关的分片数据期间,所述剩余数据节点依次通过在线恢复和异步复制,获取与需要迁入的第二副本相关的分片数据作为第三副本。其中,通过异步复制获取与需要迁入的第一副本相关的分片数据期间,将所述待删数据节点的第一副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本,将所述剩余数据节点的第三副本转换为第一副本;通过异步复制获取与需要迁入的第二副本相关的分片数据期间,将所述待删数据节点的第二副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本,将所述剩余数据节点的第三副本转换为第二副本。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中。也就是说,本发明实施例还提供一种计算机可读存储介质,其上存储有处理器可执行的程序,当处理器执行这些程序时,至少实现上述步骤S101至步骤S103。其中,所述的存储介质可以为ROM/RAM、磁碟、U盘、光盘等。
本发明实施例还提供了一种分布式缓存数据库数据迁移的装置,包括存储器和与所述存储器连接的处理器,其中所述处理器在运行所述存储器存储的程序时,实现以下步骤:
缓存数据库CDB数据迁移期间,CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布;
所述CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本;
所述CDB控制节点通知所述迁入节点,使所述迁入节点获取所述第一副本相关的分片数据。
图2是本发明实施例提供的分布式缓存数据库数据迁移的系统框图,如图2所示,包括缓存数据库CDB控制节点、迁入节点、迁出节点,其中:
CDB控制节点,用于在CDB数据迁移期间,确定CDB数据迁移完成后的稳态数据分片分布,根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本,并通知所述迁入节点;
迁入节点,用于根据来自所述CDB控制节点的通知,获取所述第一副本相关的分片数据。
在新增数据节点的场景下,所述迁入节点是新增数据节点,所述迁出节点是原有数据节点,即将原有数据节点的数据分片均衡地迁移至新增数据节点。
在删除数据节点的场景下,所述迁入节点是剩余数据节点,所述迁出节点是待删数据节点,即将待删数据节点的数据分片均衡地迁移至剩余数据节点。
以下通过图3至图6的实施例进一步进行说明。
本发明实施例具体内容是由传统分布式数据库迁移及复制技术的扩展。所有数据按照Identifier标识或者用户不相关的表ID的MD5HASH算法自动切割为多个数据分片,数据分片之间的数据各不相同,同一个数据分片中有所有用户的部分数据,每个数据分片可以有多个副本同时存在。
其中,第一副本代表数据的稳态、第二副本作为数据分片的备份、第三副本作为迁移临时副本、第四副本为数据迁移后待删除的临时副本。
在数据迁移过程中,同一分片的多个副本角色之间可以互相转换,以实现本文描述的数据迁移方法。
CDB数据的分片分布由CDB控制节点(CDB Control Node,CCC)计算并发布,在整个迁移过程中一份完整的数据管理区在内存中存在三份分布,一个是当前临时分布,与CDN、业务节点等交互持续使用的;一个是迁移结束后稳态的分片分布;一个是数据迁移前备份的初始分片分布。
图6是本发明实施例提供的增加节点场景的数据迁移过程图,如图6所示,增加节点场景迁移步骤包括:
步骤1)检查缓存数据节点状态正常,获取新增节点。
CCC可以检查CDN的节点状态,SLB通过定时调用CCC,计算是否需要扩容或缩容,如果需要扩容,则通知CCC已激活的节点。
步骤2)下发消息通知数据节点清库,准备接受数据分片。
步骤3)重新计算包含新增节点在内的CDB迁移完成后的稳态分片分布。
步骤4)CCC结合当前运行分片分布与迁移完成分布,下发第一次临时分布通知到CDN节点:临时分布中包含新增节点,且新增节点新增第三副本,新增CDN节点收到分布变化按分片为单位进行在线恢复,CCC通过检查新CDN节点状态确认完成该步骤。
步骤5)CCC结合当前运行分片分布与迁移完成分布,再次计算CDB临时分片分布并通知到CDN节点,该临时分布中,CDN节点上跨域移动的第一或第二副本互相转化,迁出的分片副本转化为第四副本,新增节点CDN上第三副本转为第一或第二副本,CDN节点收到分布变化进行异步复制,保证数据库的实时一致性,CCC估算异步复制完成时间,等待一段时间后完成该步骤。
由于数据是实时动态的,从其它副本在线恢复数据后,需要通过异步复制保证数据完整性。
步骤6)CCC下发迁移完成后的稳态分片分布到CDN,CDN删除第四分片,释放内存。
在增加节点场景中涉及的迁移算法包括:
1、迁移前初始分片分布,如图3所示。
计算每个CDN节点上要分配的分片数量A=N/(L+R),如整除不尽,按照节点号从小到大顺序,每个节点依次增加1个分片,其中N为分片总数,L为左域CDN节点数,R为右域CDN节点数。
按照分片从小到大的顺序,并按照节点号从小到大的顺序和每个节点上的分片数量A,计算出每个CDN节点的分片范围.按照从小到大的顺序,选择1个CDN节点。
在本CDN节点分片范围内,按照分片从小到大的顺序:
1)先取出一个分片的第一副本分配到该节点,同时,将该分片的第二副本,分配到异域CDN节点副本最少的节点,如异域有多个节点,选择最小的节点。
依次取出剩下的分片,分配第一副本到本节点,并分配第2副本到异域的副本最小的节点,直到属于分片范围内的所有分片都分配到该节点。
每个CDN节点重复上一步,分配自身N/(L+R)个第一副本,并将该分片的第二副本平均分配到另一个域的节点,直到所有节点分片分配完成。
2、增加节点场景,迁移结束后,获取稳态分片分布算法,如图4a至图4d所示。
尝试从所有现存节点中选取第一副本最多的节点,然后从该节点上选取一个第一副本,如果该第一副本对应的第二副本所在的节点分片数与同域其它节点的副本分片数的差值<=1,则该第一副本可以选取并放入新增节点,否则重新尝试其它第一副本。
选第一副本的时候,如果被选到的第一分片所在节点和新增节点在同一个域,则移动该第一分片到新增节点后,并删除原来的第一分片后,带来的变化是原节点分片数减1,对端域没有任何变化。如果是跨域移动,采用新节点上新增,老节点上1转2,原来所在域每个节点的副本数都没有变化,变化的只是节点中第一和第二副本的多少比例。
第一副本移动完,左右两域各自域内是副本个数是均匀的,即相差<=1。但第二副本的个数是不均匀的,左右域分别调整自己的第二副本,如果域中没有新增节点,不需要调整。
3、增加节点场景,第一次临时分布算法,用于新增节点在线恢复,如图4a至图4d所示。
该步的主要目的是为数据迁移的最终结果分布找到所有节点上要移入的新分片,这些分片分布下发后,由CDN节点发起在线恢复获取分片数据对新老节点的区分通过比对当前分布与最终结果分布,找出新增节点。
对于老节点,需要比对最终分片分布找出最终分布里有,而目前分布中没有的,在老节点中加入该分片,并置为第三副本。对于新节点,先加节点再加分片及副本。首先将最终结果分布中的新增节点信息追加到当前的租户节点列表中,然后将这些节点所有分片转换为第三副本。
需要注意的是,同一个分片在本步处理后,有可能同时同现二个第三副本,一个位于新增节点上,一个位于老节点上。即一个分片在分布里此时最多达到四个副本。老节点上此时会产生的原因主要是同域内第二副本调整均衡性,有可能从一个老节点移到另一个老节点上。
4、增加节点场景,第二次临时分布下发算法:用于节点异步复制,如图4a至图4d所示。本步的目的是在获取备份数据后,将多余的数据从分布中去除,同时将新增的第三副本按期望还原成未来的第一或第二副本。
首先将新增节点上的第三副本找到前身,如果该第三副本不处于新增的节点上,说明是第二副本均衡移动造成的,直接转为第二副本。否则出现在新节点上,对比最终分布结果,转成期望副本。
然后将所有节点再对比一遍最终分布,按照最终分布转换对应的分片分布,多余的置为第四副本。
5、数据迁移结束后,稳态分片分布下发。
直接下发最终分片分布,由CDN发现本地多余的第四副本分片进行删除操作。本步有可能造成第四分片没有删除干净,这个会在下一次该节点再次被增加时,数据迁移的第一步进行清库操作,也可能成为垃圾暂存在CDN节点中,但不会影响数据的正确性。
进一步地,本发明实施例还可以用于减少节点的场景,减少节点场景迁移步骤包括:
步骤1)重新计算CDB迁移完成后的稳态分片分布,该分布中不含有待下电的节点。
步骤2)CCC结合当前运行分片分布与迁移完成分布,下发第一次临时分布通知到CDN节点:该分布中继续工作的CDN节点新增第三副本,CDN收到分布按分片进行在线恢复,CCC检查所有节点状态确认完成。
步骤3)CCC结合当前运行分片分布与迁移完成分布,再次计算CDB临时分片分布并通知到CDN节点:已迁出分片标记为第四副本,第三副本按左右域均衡原则转换为第一和第二副本,CDN收到分布进行异步复制保证数据一致性,CCC等待20S完成。
步骤4)CCC下发迁移完成后的稳态分片分布到CDN:CDN删除第四分片,释放内存。
在减少节点场景中涉及的迁移算法包括:
1、减少节点场景,迁移结束后,获取稳态分片分布算法。
先计算节点删除后,每个节点上要分布的第一分片数量,然后从待删除节点按条件选择,计算待删除节点需移到跨域节点和同域节点上的分片:直接将异域中的副本2转1,少的第二副本第二阶段补。同域的第一副本直接移动到第一副本数最少的旧的节点上;
待删除节点上的第二副本需要转移到同域其他节点,检查左右两域,从SLOT1开始,发现少的SLOT补到第二副本数少的节点上,且节点的总副本数相差<=1。
2、减少节点场景,第一次临时分片分布下发算法,如图5a至图5b所示。
删除的节点数据必须先迁出,才可以删除节点。因此本步的目的是获取未被删除的节点在最终分片分布有而当前节点分布中没有的分片,首先将其增加为第三分片进行数据备份。
检查最终分片分布存在的节点,并找到其对应的当前的分布节点,如果某个分片在最终分布中有,当前分布节点中没有,则在当前分布节点中增加,并置为第三副本。
需要注意的是:同一个分片在本步处理后,有可能同时同现二个第三副本,但位于不同的未来不会被删除的老节点上,即一个分片在分布里此时最多达到四个副本。其中分片与待删除节点对应的第三分片前身是第一分片,与未删除节点对应的第三分片前身是第二分片。
3、减少节点场景,第二次临时分片分布下发算法,如图5a至图5b所示。
本步的目的是在获取备份数据后,将多余的数据从分布中去除,同时将新增的第三副本按期望还原成未来的第一或第二副本。
首先将未删除节点上的第三副本找到前身,如果该第三副本不处于新增的节点上,说明是第二副本均衡移动造成的,直接转为第二副本。否则出现在新节点上,对比最终分布结果,转成期望副本。
然后将所有节点再对比一遍最终分布,按照最终分布转换对应的分片分布,多余的置为第四副本。
4、减少节点场景,第二次分布下发算法,删除节点,异步复制
首先将待删除节点所有分片转第四分片。
转换未删除节点的第三副本:有可能出现同一个分片有二个第三副本,如果该第三副本的前身是待删除节点,那么转第一副本,如果是未删除节点转第二副本。
转换未删除节点上的副本,主要是一、二副本这步的转换,如果发现多余副本,有可能是均衡第二副本的时候拉动的,需要置为第四副本准备删除。
5、数据迁移结束后,稳态分片分布下发。
直接下发最终分片分布,由CDN发现本地多余的第四副本分片进行删除操作。本步有可能造成第四分片没有删除干净,这个会在下一次该节点再次被增加时,数据迁移的第一步进行清库操作,也可能成为垃圾暂存在CDN节点中,但不会影响数据的正确性。
综上所述,本发明的实施例具有以下技术效果:
本发明实施例通过对数据的分布集中管理,结合分片分布的多次计算与复制流程的控制,达到数据分片移动的高效与安全
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
Claims (18)
1.一种分布式缓存数据库数据迁移的方法,包括:
缓存数据库CDB数据迁移期间,CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布;
所述CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本;
所述CDB控制节点通知所述迁入节点,使所述迁入节点获取所述第一副本相关的分片数据。
2.根据权利要求1所述的方法,若所述CDB控制节点获取新增数据节点,则所述CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布包括:
所述CDB控制节点从原有数据节点中选取待迁移的第一副本后,通过确定所述原有数据节点与所述新增数据节点是否是同域数据节点,将迁移前初始分片分布中所述原有数据节点的第一副本调整为所述新增数据节点的第一副本;
所述CDB控制节点在调整所述迁移前初始分片分布中的第一副本后,调整同域内的第二副本,使同域内每个数据节点的第二副本数量均衡。
3.根据权利要求2所述的方法,所述通过确定所述原有数据节点与所述新增数据节点是否是同域数据节点,将迁移前初始分片分布中所述原有数据节点的第一副本移动到所述新增数据节点的第一副本包括:
若是同域数据节点,则所述CDB控制节点将所述迁移前初始分片分布中所述原有数据节点的第一副本放入所述新增数据节点,并删除所述迁移前初始分片分布中所述原有数据节点的第一副本;
若不是同域数据节点,则所述CDB控制节点将迁移前初始分片分布中所述原有数据节点的第一副本放入所述新增数据节点,并将所述迁移前初始分片分布中所述原有数据节点的第一副本转换为用于备份的第二副本。
4.根据权利要求2或3所述的方法,所述CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本包括:
所述CDB控制节点根据当前运行数据分片分布和所述稳态数据分片分布,确定新增数据节点为迁入节点及需要迁移至所述新增数据节点的第一副本。
5.根据权利要求4所述的方法,所述迁入节点获取所述第一副本相关的分片数据包括:
所述新增数据节点依次通过在线恢复和异步复制,获取与需要迁入的第一副本相关的分片数据作为第三副本。
6.根据权利要求5述的方法,所述新增数据节点通过异步复制获取与需要迁入的第一副本相关的分片数据期间,还包括:
若所述第一副本所在的原有数据节点与所述新增数据节点是同域数据节点,则将所述第一副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本;
若所述第一副本所在的原有数据节点与所述新增数据节点不是同域数据节点,则将所述第一副本转换为用于备份的第二副本。
7.根据权利要求4所述的方法,所述CDB控制节点确定需要迁移至迁入节点的数据分片第一副本之后,还包括:
所述CDB控制节点按照同域内各数据节点的第二副本数量均衡策略,确定需要迁移至所述新增数据节点的第二副本,并通知所述新增数据节点。
8.根据权利要求7所述的方法,在所述迁入节点获取所述第一副本相关的分片数据期间,还包括:
所述新增数据节点依次通过在线恢复和异步复制,获取与需要迁入的第二副本相关的分片数据作为第三副本。
9.根据权利要求8所述的方法,所述新增数据节点通过异步复制获取与需要迁入的第二副本相关的分片数据期间,还包括:
将所述第二副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本。
10.根据权利要求1所述的方法,若所述CDB控制节点收到需要删除数据节点的通知,则所述CDB控制节点确定CDB数据迁移完成后的稳态数据分片分布包括:
所述CDB控制节点计算待删数据节点删除后剩余数据节点上需要分布的第一副本的数量,并根据所述剩余数据节点上需要分布的第一副本的数量,将迁移前初始分片分布中所述待删数据节点的第一副本调整为所述剩余数据节点的第一副本;
所述CDB控制节点在调整所述迁移前初始分片分布中的第一副本后,将所述迁移前初始分片分布中所述待删数据节点的第二副本转移至同域内的剩余数据节点,并将缺少的第二副本补充到同域内第二副本数最少的剩余数据节点上。
11.根据权利要求10所述的方法,所述根据所述剩余数据节点上需要分布的第一副本的数量,将迁移前初始分片分布中所述待删数据节点的第一副本调整为所述剩余数据节点的第一副本包括:
若是同域节点,则所述CDB控制节点将所述迁移前初始分片分布中所述待删数据节点的第一副本放入第一副本数量最少的剩余数据节点;
若不是同域节点,则所述CDB控制节点将所述迁移前初始分片分布中所述剩余数据节点的第二副本转换为第一副本;
其中,所述剩余数据节点的第二副本与所述待删数据节点的第一副本关联。
12.根据权利要求2或3所述的方法,所述CDB控制节点根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本包括:
所述CDB控制节点根据当前运行数据分片分布和所述稳态数据分片分布,确定剩余数据节点为迁入节点及需要从所述待删数据节点迁移至所述剩余数据节点的第一副本。
13.根据权利要求12所述的方法,所述迁入节点获取所述第一副本相关的分片数据包括:
所述剩余数据节点依次通过在线恢复和异步复制,获取与需要迁入的第一副本相关的分片数据作为第三副本。
14.根据权利要求13述的方法,所述剩余数据节点通过异步复制获取与需要迁入的第一副本相关的分片数据期间,还包括:
将所述待删数据节点的第一副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本;
将所述剩余数据节点的第三副本转换为第一副本。
15.根据权利要求12所述的方法,所述CDB控制节点确定需要迁移至迁入节点的数据分片第一副本之后,还包括:
所述CDB控制节点按照同域内各数据节点的第二副本数量均衡策略,确定需要迁移至同域内剩余数据节点的第二副本,并通知所述剩余数据节点。
16.根据权利要求15所述的方法,在所述迁入节点获取所述第一副本相关的分片数据期间,还包括:
所述剩余数据节点依次通过在线恢复和异步复制,获取与需要迁入的第二副本相关的分片数据作为第三副本。
17.根据权利要求16所述的方法,所述剩余数据节点通过异步复制获取与需要迁入的第二副本相关的分片数据期间,还包括:
将所述待删数据节点的第二副本转换为迁移后待删除的第四副本,并在迁移完成后删除所述第四副本;
将所述剩余数据节点的第三副本转换为第二副本。
18.一种分布式缓存数据库数据迁移的系统,包括缓存数据库CDB控制节点、迁入节点、迁出节点,其中:
CDB控制节点,用于在CDB数据迁移期间,确定CDB数据迁移完成后的稳态数据分片分布,根据所述稳态数据分片分布,确定需要迁移至迁入节点的数据分片第一副本,并通知所述迁入节点;
迁入节点,用于根据来自所述CDB控制节点的通知,获取所述第一副本相关的分片数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710306691.1A CN108804465B (zh) | 2017-05-04 | 2017-05-04 | 一种分布式缓存数据库数据迁移的方法及系统 |
PCT/CN2018/081535 WO2018201832A1 (zh) | 2017-05-04 | 2018-04-02 | 一种分布式缓存数据库数据迁移的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710306691.1A CN108804465B (zh) | 2017-05-04 | 2017-05-04 | 一种分布式缓存数据库数据迁移的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108804465A true CN108804465A (zh) | 2018-11-13 |
CN108804465B CN108804465B (zh) | 2023-06-30 |
Family
ID=64016910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710306691.1A Active CN108804465B (zh) | 2017-05-04 | 2017-05-04 | 一种分布式缓存数据库数据迁移的方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108804465B (zh) |
WO (1) | WO2018201832A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871388A (zh) * | 2019-02-19 | 2019-06-11 | 北京字节跳动网络技术有限公司 | 数据缓存方法、装置、终电子设备及存储介质 |
CN110457167A (zh) * | 2019-08-20 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 副本处理方法、装置、设备和介质 |
CN111143324A (zh) * | 2019-12-20 | 2020-05-12 | 浪潮软件股份有限公司 | 一种kudu的基于大小的数据库数据均衡系统及实现方法 |
WO2021004472A1 (zh) * | 2019-07-10 | 2021-01-14 | 中国民航信息网络股份有限公司 | 一种航空运价数据的缓存方法及系统 |
CN113590586A (zh) * | 2021-07-29 | 2021-11-02 | 东方微银科技股份有限公司 | 分布式图数据库系统节点间迁移分片数据的方法、装置 |
CN113596153A (zh) * | 2021-07-28 | 2021-11-02 | 新华智云科技有限公司 | 一种数据均衡方法及系统 |
CN117290440A (zh) * | 2023-09-12 | 2023-12-26 | 上海沄熹科技有限公司 | 一种数据库分片复制过程中聚合分裂的处理方法及系统 |
US11983109B2 (en) | 2019-07-10 | 2024-05-14 | Travelsky Technology Limited | Air freight rate data caching method and system |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710679B (zh) * | 2018-12-28 | 2021-03-23 | 北京旷视科技有限公司 | 数据抽取方法及装置 |
CN114143323A (zh) * | 2021-11-30 | 2022-03-04 | 中原银行股份有限公司 | 企业级微服务平台跨区域容灾架构及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101909068A (zh) * | 2009-06-02 | 2010-12-08 | 华为技术有限公司 | 一种文件副本管理方法及装置、系统 |
CN103294787A (zh) * | 2013-05-21 | 2013-09-11 | 成都市欧冠信息技术有限责任公司 | 分布式数据库系统的多副本存储方法和系统 |
US20140122510A1 (en) * | 2012-10-31 | 2014-05-01 | Samsung Sds Co., Ltd. | Distributed database managing method and composition node thereof supporting dynamic sharding based on the metadata and data transaction quantity |
US9021296B1 (en) * | 2013-10-18 | 2015-04-28 | Hitachi Data Systems Engineering UK Limited | Independent data integrity and redundancy recovery in a storage system |
CN104657459A (zh) * | 2015-02-09 | 2015-05-27 | 中国科学院信息工程研究所 | 一种基于文件粒度的海量数据存储方法 |
US20150324388A1 (en) * | 2014-05-06 | 2015-11-12 | International Business Machines Corporation | Dataset replica migration |
WO2016197994A1 (zh) * | 2015-12-03 | 2016-12-15 | 中兴通讯股份有限公司 | 容量扩展方法及装置 |
CN106528793A (zh) * | 2016-12-14 | 2017-03-22 | 国家测绘地理信息局卫星测绘应用中心 | 一种分布式空间数据库的时空分片存储方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7457835B2 (en) * | 2005-03-08 | 2008-11-25 | Cisco Technology, Inc. | Movement of data in a distributed database system to a storage location closest to a center of activity for the data |
CN106096038A (zh) * | 2016-06-28 | 2016-11-09 | 浪潮软件股份有限公司 | 一种云计算架构下的分布式数据库架构 |
-
2017
- 2017-05-04 CN CN201710306691.1A patent/CN108804465B/zh active Active
-
2018
- 2018-04-02 WO PCT/CN2018/081535 patent/WO2018201832A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101909068A (zh) * | 2009-06-02 | 2010-12-08 | 华为技术有限公司 | 一种文件副本管理方法及装置、系统 |
US20140122510A1 (en) * | 2012-10-31 | 2014-05-01 | Samsung Sds Co., Ltd. | Distributed database managing method and composition node thereof supporting dynamic sharding based on the metadata and data transaction quantity |
CN103294787A (zh) * | 2013-05-21 | 2013-09-11 | 成都市欧冠信息技术有限责任公司 | 分布式数据库系统的多副本存储方法和系统 |
US9021296B1 (en) * | 2013-10-18 | 2015-04-28 | Hitachi Data Systems Engineering UK Limited | Independent data integrity and redundancy recovery in a storage system |
US20150324388A1 (en) * | 2014-05-06 | 2015-11-12 | International Business Machines Corporation | Dataset replica migration |
CN104657459A (zh) * | 2015-02-09 | 2015-05-27 | 中国科学院信息工程研究所 | 一种基于文件粒度的海量数据存储方法 |
WO2016197994A1 (zh) * | 2015-12-03 | 2016-12-15 | 中兴通讯股份有限公司 | 容量扩展方法及装置 |
CN106528793A (zh) * | 2016-12-14 | 2017-03-22 | 国家测绘地理信息局卫星测绘应用中心 | 一种分布式空间数据库的时空分片存储方法 |
Non-Patent Citations (1)
Title |
---|
彭晖;陶洪铸;严亚勤; 等: "智能电网调度控制系统数据库管理技术" * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871388A (zh) * | 2019-02-19 | 2019-06-11 | 北京字节跳动网络技术有限公司 | 数据缓存方法、装置、终电子设备及存储介质 |
WO2021004472A1 (zh) * | 2019-07-10 | 2021-01-14 | 中国民航信息网络股份有限公司 | 一种航空运价数据的缓存方法及系统 |
US11983109B2 (en) | 2019-07-10 | 2024-05-14 | Travelsky Technology Limited | Air freight rate data caching method and system |
CN110457167A (zh) * | 2019-08-20 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 副本处理方法、装置、设备和介质 |
CN111143324A (zh) * | 2019-12-20 | 2020-05-12 | 浪潮软件股份有限公司 | 一种kudu的基于大小的数据库数据均衡系统及实现方法 |
CN111143324B (zh) * | 2019-12-20 | 2023-05-02 | 浪潮软件股份有限公司 | 一种kudu的基于大小的数据库数据均衡系统及实现方法 |
CN113596153A (zh) * | 2021-07-28 | 2021-11-02 | 新华智云科技有限公司 | 一种数据均衡方法及系统 |
CN113590586A (zh) * | 2021-07-29 | 2021-11-02 | 东方微银科技股份有限公司 | 分布式图数据库系统节点间迁移分片数据的方法、装置 |
CN113590586B (zh) * | 2021-07-29 | 2022-03-22 | 东方微银科技股份有限公司 | 分布式图数据库系统节点间迁移分片数据的方法、装置 |
CN117290440A (zh) * | 2023-09-12 | 2023-12-26 | 上海沄熹科技有限公司 | 一种数据库分片复制过程中聚合分裂的处理方法及系统 |
CN117290440B (zh) * | 2023-09-12 | 2024-05-07 | 上海沄熹科技有限公司 | 一种数据库分片复制过程中聚合分裂的处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108804465B (zh) | 2023-06-30 |
WO2018201832A1 (zh) | 2018-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804465A (zh) | 一种分布式缓存数据库数据迁移的方法及系统 | |
CN103139302B (zh) | 考虑负载均衡的实时副本调度方法 | |
CN104166606B (zh) | 文件备份方法和主存储设备 | |
CN104601680B (zh) | 一种资源管理方法及装置 | |
CN110168580A (zh) | 使用分布式系统训练分类器模型时的容错恢复系统和方法 | |
CN106843745A (zh) | 容量扩展方法及装置 | |
CN109992206B (zh) | 数据分布存储方法及相关装置 | |
CN106663022A (zh) | 对使用外部化存储页面的虚拟机的实时迁移 | |
JP6450330B2 (ja) | 並列計算処理装置および並列計算処理方法 | |
Miranda et al. | Reliable and randomized data distribution strategies for large scale storage systems | |
CN109582433A (zh) | 一种资源调度方法、装置、云计算系统及存储介质 | |
CN108197159A (zh) | 基于分布式文件系统的数据读取、写入方法及装置 | |
CN107085539A (zh) | 一种云数据库系统以及云数据库资源动态调整方法 | |
CN106339386A (zh) | 数据库弹性调度方法以及装置 | |
Liu et al. | An improved hadoop data load balancing algorithm | |
CN106570093A (zh) | 一种基于独立元数据组织结构的海量数据迁移方法和装置 | |
CN108376103A (zh) | 一种云平台的资源平衡控制方法及服务器 | |
JP7347007B2 (ja) | 情報処理装置、情報処理システム、及び情報処理プログラム | |
CN110489494A (zh) | 分布式数据库在线扩容方法及装置 | |
CN107391039B (zh) | 一种数据对象存储方法和装置 | |
CN111078119B (zh) | 一种数据重建方法、系统、装置及计算机可读存储介质 | |
JP2010231567A (ja) | ストレージスイッチ、記憶領域サイズ変更方法 | |
CN111459913B (zh) | 分布式数据库的容量扩展方法、装置及电子设备 | |
CN116048419A (zh) | 一种双存储池扩容方法及分布式存储系统 | |
CN114930281A (zh) | 动态自适应分区分割 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
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 |