CN106934048A - 数据在线迁移方法、代理节点 - Google Patents
数据在线迁移方法、代理节点 Download PDFInfo
- Publication number
- CN106934048A CN106934048A CN201710156970.4A CN201710156970A CN106934048A CN 106934048 A CN106934048 A CN 106934048A CN 201710156970 A CN201710156970 A CN 201710156970A CN 106934048 A CN106934048 A CN 106934048A
- Authority
- CN
- China
- Prior art keywords
- data
- database example
- target database
- synchronized
- target
- 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.)
- Pending
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
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据在线迁移方法和代理节点,该数据在线迁移方法首先向源数据库实例发送同步命令,然后接收源数据库实例依据同步命令返回的待同步数据并将待同步数据发送至目标数据库实例中,待数据迁移完成后,再接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令,将写操作命令发送至所述目标数据库实例。从而将数据迁移以及数据迁移过程中产生的新数据的同步分为两个步骤前后依次进行,避免了数据错乱和丢失情况的发生。
Description
技术领域
本发明涉及数据库领域,更具体的说,是涉及一种数据在线迁移方法和代理节点。
背景技术
随着互联网的迅速发展,各种电子业务数据急剧增长,对高性能、大容量的存储***的需求越来越急迫,Redis集群既是在此环境下产生的key-value存储***。
在存储型Redis集群的使用过程中,由于业务数据量的不断增加,会导致Redis集群的剩余内存越来越小,这种情况下,就需要对Redis集群进行扩容,以保证Redis集群后续的持续正常使用。由于存储型Redis集群中,数据都是通过一致性哈希算法来选择对应的Redis实例,因此在对Redis集群进行扩容的过程中,需要将源Redis集群中原有的数据重新进行哈希算法,并迁移到根据哈希算法确定的目标Redis实例中。然而Redis集群数据迁移的过程耗时比较长,如果在此过程中拒绝用户访问,会非常影响用户的使用体验。
现有技术中,有一种针对存储型Redis集群的数据迁移方法,该方法在源Redis集群数据迁移的过程中,同时能够接受用户写入的新数据,并直接同步到目标Redis集群。然而,上述方法在数据迁移的过程中,直接将产生的新数据更新到目标Redis集群,这样就可能造成数据的错乱或丢失,影响用户后续的正常使用。
发明内容
有鉴于此,本发明提供了一种数据在线迁移方法和代理节点,以克服现有技术中由于在数据迁移过程中直接将写操作产生的新数据同步到目标数据库实例中,而导致的数据错乱和丢失的问题。
为实现上述目的,本发明提供如下技术方案:
一种数据在线迁移方法,包括:
向源数据库实例发送同步命令;
接收源数据库实例依据所述同步命令返回的待同步数据;
将所述待同步数据发送至目标数据库实例中;
接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
将所述写操作命令发送至所述目标数据库实例。
可选的,所述源数据库实例和所述目标数据库实例为键值数据库,在所述向源数据库实例发送同步命令前,还包括:
确定键值与目标数据库实例的对应关系;
则所述将待同步数据发送至目标数据库实例,包括:
依据所述对应关系,将所述待同步数据发送至目标数据库实例中。
可选的,所述确定键值与目标数据库实例的对应关系,包括:
获取目标数据库实例列表;
构造键值和所述目标数据库实例列表的对应关系。
可选的,所述写操作命令包括待操作数据和操作命令,则所述将所述写操作命令发送至所述目标数据库实例,包括:
确定所述待操作数据所在的目标数据库实例;
将所述操作命令发送至所述目标数据库实例,以使得所述目标数据库实例依据所述操作命令对所述待操作数据进行更新。
可选的,在所述将所述待同步数据发送至目标数据库实例中后,还包括:
向所述源数据库实例发送写操作同步命令。
可选的,在所述将所述待同步数据发送至目标数据库实例中前,还包括,解析所述待同步数据;
则所述将所述待同步数据发送至目标数据库实例中,具体包括:将解析后的所述待同步数据发送至目标数据库实例中。
一种代理节点,包括:
命令发送模块,用于向源数据库实例发送同步命令;
数据接收模块,用于接收源数据库实例依据所述同步命令返回的待同步数据;
数据发送模块,用于将所述待同步数据发送至目标数据库实例中;
操作接收模块,用于接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
操作发送模块,用于将所述写操作命令发送至所述目标数据库实例。
可选的,所述源数据库实例和所述目标数据库实例为键值数据库,则所述代理节点还包括:
关系确定模块,用于在命令发送模块向源数据库实例发送同步命令前,确定键值与目标数据库实例的对应关系;
则所述数据发送模块具体用于:依据所述对应关系,将所述待同步数据发送至目标数据库实例中。
可选的,所述关系确定模块包括:
列表获取模块,用于获取目标数据库实例列表;
关系构造模块,用于构造键值和所述目标数据库实例列表的对应关系。
可选的,所述写操作命令包括待操作数据和操作命令,则所述操作发送模块包括:
实例确定模块,用于确定所述待操作数据所在的目标数据库实例;
命令发送模块,用于将所述操作命令发送至所述目标数据库实例,以使得所述目标数据库实例依据所述操作命令对所述待操作数据进行更新。
可选的,所述命令发送模块还用于:
在所述将所述待同步数据发送至目标数据库实例中后,向所述源数据库实例发送写操作同步命令。
可选的,还包括解析模块,用于在数据发送模块将所述待同步数据发送至目标数据库实例中前,解析所述待同步数据。
经由上述的技术方案可知,与现有技术相比,本发明实施例公开了一种数据在线迁移方法和代理节点,该数据在线迁移方法首先向源数据库实例发送同步命令,然后接收源数据库实例依据同步命令返回的待同步数据并将待同步数据发送至目标数据库实例中,待数据迁移完成后,再接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令,将写操作命令发送至所述目标数据库实例。从而将数据迁移以及数据迁移过程中产生的新数据的同步分为两个步骤前后依次进行,避免了数据错乱和丢失情况的发生。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的数据在线迁移方法的第一流程图;
图2为本发明实施例公开的数据在线迁移方法的第二流程图;
图3为本发明实施例公开的确定键值与目标数据库实例对应关系的流程图;
图4为本发明实施例公开的数据在线迁移方法的第三流程图;
图5为本发明实施例公开的数据在线迁移的任务调度架构图;
图6为本发明实施例公开的代理节点的第一结构示意图;
图7为本发明实施例公开的代理节点的第二结构示意图;
图8为本发明实施例公开的关系确定模块的结构示意图;
图9为本发明实施例公开的操作发送模块的结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下:
Redis:Redis是一个开源、支持网络、基于内存、键值对存储数据库,使用ANSI C编写。
集群:计算机集群简称集群是一种计算机***,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。
Redis集群:通过将Redis实例部署在多台计算机服务器上,对外提供大容量、高性能的Redis存储和查询服务。
存储型Redis集群:Redis集群的数据不可丢失,不是单纯为了提高***的响应速度的,同时作为数据的存储设施。
一致性哈希:对于给定的任意长度的键值,通过一定的算法,将其转换为另一个值,称为哈希值,这个映射算法称为哈希算法或散列算法。一致哈希是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对K/n个关键字重新映射,其中K是关键字的数量,n是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。其实现为:一致哈希将每个对象映射到圆环边上的一个点,***再将可用的节点机器映射到圆环的不同位置。查找某个对象对应的机器时,需要用一致哈希算法计算得到对象对应圆环边上位置,沿着圆环边上查找直到遇到某个节点机器,这台机器即为对象应该保存的位置。当删除一台节点机器时,这台机器上保存的所有对象都要移动到下一台机器。添加一台机器到圆环边上某个点时,这个点的下一台机器需要将这个节点前对应的对象移动到新机器上。更改对象在节点机器上的分布可以通过调整节点机器的位置来实现。
Jedis:Java程序中,连接Redis集群的客户端,支持利用一致性哈希去连接集群。
Apache ZooKeeper:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
RDB:Redis快照数据的一种方式。RDB是一个非常紧凑(compact)的文件,它保存了Redis在某个时间点上的数据集。这种文件非常适合用于进行备份。bgsave命令会产生一个RDB文件。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中所述的源数据库实例和目标数据库实例可以是Redis实例。请参阅附图1,为本发明公开的数据在线迁移方法的第一流程图,如图1所示,所述方法可以包括:
步骤101:向源数据库实例发送同步命令;
由于数据迁移是将源数据库实例中的数据迁移至目标数据库实例,因此,需要首先向源数据库实例发送同步命令,以使得所述源数据库实例依据所述同步命令返回待同步数据,即备份数据,进而才能实现将待同步数据搬迁至目标数据库实例中。
步骤102:接收源数据库实例依据所述同步命令返回的待同步数据;
本发明实施例中,源数据库实例返回的待同步数据可以是RDB数据,即Redis快照数据。RDB数据为源数据库实例中数据迁移前一个固定时间点的数据集。
步骤103:将所述待同步数据发送至目标数据库实例中;
若待同步数据为RDB数据,则在将待同步数据发送至目标数据库实例前,需要首先解析所述待同步数据,解析后的待同步数据,可以直接发送至目标数据库实例中进行存储。
步骤104:接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
在将源数据库实例中的数据向目标数据库实例迁移的过程中,服务器会持续向用户提供数据访问服务,而这个过程中的数据访问服务会产生一些新数据,例如用户对源数据库实例中的某个数据进行写操作。而在数据迁移过程中,源数据库实例会缓存用户的写操作,避免数据迁移和数据更新同时进行而可能导致的数据错乱和丢失。因此,在步骤103完成对源数据库实例中所有数据到目标数据库实例的数据迁移后,***会接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令。
步骤105:将所述写操作命令发送至所述目标数据库实例。
由于前面已经将源数据库实例中的数据迁移到了目标数据库实例中,因此,接收写操作命令后,***会所述写操作命令发送给对应的目标数据库实例中,以更新相应的数据,从而不影响用户后续的正常使用。
本实施例中,由于将源数据库实例到目标数据库实例的数据迁移和迁移过程中产生新数据的更新分两个步骤依次进行,保证了数据迁移的有效性和数据更新的准确性,两项工作分别进行,互不干扰,从而避免了数据错乱和丢失情况的发生。
在上述实施例的基础上,图2公开了数据在线迁移方法的第二流程图,本实施例中,所述源数据库实例和所述目标数据库实例可以为键值数据库,如Redis数据库。参见图2所示,所述数据迁移方法可以包括:
步骤201:确定键值与目标数据库实例的对应关系;
在一个可能的实施例中,步骤201的具体过程可以参见图3,图3为本发明实施例公开的确定键值与目标数据库实例的对应关系的流程图,如图3所示,可以包括:
步骤301:获取目标数据库实例列表;
所述目标数据库实例列表可以是用户根据实际情况预先配置好的。该目标数据库实例通常比源数据库实例要多,以实现对数据库的扩容。
步骤302:构造键值和所述目标数据库实例列表的对应关系。
步骤302对应关系的建立,是为了后续针对特定的键,依据该对应关系为其选择对应的目标数据库实例进行存储。具体地,根据给定的键值对,可以首先通过一致性哈希算法,确定这个键的哈希值,然后根据哈希值来进一步确定这个键值应该存储的目标数据库实例。
步骤201之后,进入步骤202。
步骤202:向源数据库实例发送同步命令;
步骤203:接收源数据库实例依据所述同步命令返回的待同步数据;
步骤204:依据所述对应关系,将所述待同步数据发送至目标数据库实例中;
步骤205:接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
步骤206:将所述写操作命令发送至所述目标数据库实例。
本实施例中,在进行数据在线迁移前,首先确定键值与目标数据库实例的对应关系,保证了后续在接收到源数据库实例发送的待同步数据后,能够根据待同步数据快速的选择出对应的目标数据库实例,方便快捷的实现数据的在线迁移。
图4为本发明实施例公开的数据在线迁移方法的第三流程图,如图4所示,所述方法可以包括:
步骤401:向源数据库实例发送同步命令;
步骤402:接收源数据库实例依据所述同步命令返回的待同步数据;
步骤403:将所述待同步数据发送至目标数据库实例中;
步骤404:接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
所述写操作命令包括待操作数据和操作命令。即该写操作命令需要包含能够指示要对哪个数据进行写操作以及进行怎样的写操作的信息。
步骤405:确定所述待操作数据所在的目标数据库实例;
所述待操作数据为需要进行写操作的数据。
步骤406:将所述操作命令发送至所述目标数据库实例,以使得所述目标数据库实例依据所述操作命令对所述待操作数据进行更新。
在确定所述待操数据所处的目标数据库实例后,将所述操作命令发送至该目标数据库实例,后续该目标数据库实例可以根据操作命令对所述待操作数据进行相应的写操作,从而完成数据更新。
本实施例中,由于将源数据库实例到目标数据库实例的数据迁移和迁移过程中产生新数据的更新分两个步骤依次进行,保证了数据迁移的有效性和数据更新的准确性,两项工作分别进行,互不干扰,从而避免了数据错乱和丢失情况的发生。
在其他的实施例中,在将所述待同步数据发送至目标数据库实例中的步骤后,还可以进一步包括:向所述源数据库实例发送写操作同步命令。以保证数据迁移完成后,写操作同步工作的及时进行,有助于提升数据在线迁移工作的整体效率。
针对数据在线迁移方法,本发明实施例还公开了一个具体的实例,以帮助更好的理解本发明的核心技术。图5为数据在线迁移的任务调度架构图,参见图5,本实例中,将执行数据在线迁移的迁移工具分为四个模块,即选择连接器、快照同步器、增量同步器和解析器。其中,选择连接器用于根据给定的Redis键值对数据,通过一致性哈希算法,选择出这个键应该同步到哪一个目标Redis实例;快照同步器用于从源Redis实例接受快照文件,并利用解析器单元解析快照,并将解析后的结果发送到连接选择器给出的目标Redis实例中;增量同步器用于从源Redis实例接受增量写命令文件,并利用解析器解析,并将解析后的结果发送到连接选择器给出的目标Redis实例中;解析器用于Redis快照和增量数据的解析。
各个模块的具体工作内容介绍如下:
连接选择器:
读取预先配置好的目标Redis实例连接地址列表的文件;
按照客户端的访问Redis的方式,对每个目标Redis实例,构建160个虚拟节点,并利用MurmurHash2来计算每个虚拟节点的哈希值;
将所有的虚拟节点按照哈希值升序排序。
快照同步:
向源Redis实例发出sync同步命令,Redis源节点会进行bgsave操作进行快照;
bgsave操作结束后,本迁移装置接收快照文件,并进行解析,解析后的数据为键值对的列表;
对于每一个键值对,连接选择器会通过计算当前键的哈希值,去找到哈希值大于等于当前键哈希值的目标Redis实例的地址;如果没有大于等于前键哈希值的,则取第一个哈希值对应的Redis实例地址为目标Redis实例的地址。如果某种键不需要迁移,连接选择器会返回空地址;
如果目标Redis实例地址为空,则跳过这个键值对;如果不为空,则利用Redis自带的restore命令,将这个键值对发送到目标Redis实例中。
增量同步
快照同步后,接受源Redis实例缓存的写命令,并进行解析;
对于每一个解析结果,连接选择器会通过计算解析结果对应的当前键的哈希值,去找到哈希值大于等于当前哈希值的目标Redis实例的地址;如果没有大于等于当前哈希值,则取第一个哈希值对应的Redis实例地址为目标Redis实例的地址。如果某种键不需要迁移,连接选择器会返回空地址;
如果目标Redis实例地址为空,则跳过这个写命令;如果不为空,则将这个写命令发送到目标Redis实例;
监听源Redis实例的新命令,该新命令可以是写操作命令。
此外,本实例中,还可以进行切换客户端连接的操作,具体内容如下:
客户端启动时,监听Apache ZooKeeper特定节点,节点存有源目标Redis实例的连接配置;
增量同步进入监听过程后,用户可以修改Apache ZooKeeper特定节点中的数据值为目标Redis实例的连接配置;
客户端监听到Apache ZooKeeper特定节点发生改变,将客户端的Redis连接设置改为目标Redis实例。
上述实施例中,快照同步和增量同步分别负责源数据库实例中数据的迁移和迁移过程中产生的新数据的更新,这两个过程先后分别进行,避免了数据迁移后数据的错乱和丢失。同时,实例中介绍了切换客户端连接的内容,此工作可以保证数据在线迁移完成后,将客户端的连接参数通过Apache ZooKeeper在线修改为目标Redis集群,将配置文件分发给客户端,可当即切换到目标集群,避免了常规的数据迁移后重启服务器的操作,实现了无缝切换。
上述本发明公开的实施例中详细描述了方法,本发明还公开了一种代理节点,上述实施例中公开的方法可以应用于代理节点中,下面给出具体的实施例进行详细说明。
本发明实施例中所述的源数据库实例和目标数据库实例可以是Redis实例。图6为本发明实施例公开的代理节点的第一结构示意图,如图6所示,所述代理节点60可以包括:
命令发送模块601,用于向源数据库实例发送同步命令;
由于数据迁移是将源数据库实例中的数据迁移至目标数据库实例,因此,需要首先向源数据库实例发送同步命令,以使得所述源数据库实例依据所述同步命令返回待同步数据,即备份数据,进而才能实现将待同步数据搬迁至目标数据库实例中。
数据接收模块602,用于接收源数据库实例依据所述同步命令返回的待同步数据;
本发明实施例中,源数据库实例返回的待同步数据可以是RDB数据,即Redis快照数据。RDB数据为源数据库实例中数据迁移前一个固定时间点的数据集。
数据发送模块603,用于将所述待同步数据发送至目标数据库实例中;
若待同步数据为RDB数据,则在将待同步数据发送至目标数据库实例前,需要首先解析所述待同步数据,解析后的待同步数据,可以直接发送至目标数据库实例中进行存储。
因此,在一种可实现的实施例中,所述代理节点还可以包括解析模块,用于在数据发送模块将所述待同步数据发送至目标数据库实例中前,解析所述待同步数据。
操作接收模块604,用于接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
在将源数据库实例中的数据向目标数据库实例迁移的过程中,服务器会持续向用户提供数据访问服务,而这个过程中的数据访问服务会产生一些新数据,例如用户对源数据库实例中的某个数据进行写操作。而在数据迁移过程中,源数据库实例会缓存用户的写操作,避免数据迁移和数据更新同时进行而可能导致的数据错乱和丢失。因此,在数据发送模块603完成对源数据库实例中所有数据到目标数据库实例的数据迁移后,***会接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令。
操作发送模块605,用于将所述写操作命令发送至所述目标数据库实例。
由于前面已经将源数据库实例中的数据迁移到了目标数据库实例中,因此,接收写操作命令后,***会所述写操作命令发送给对应的目标数据库实例中,以更新相应的数据,从而不影响用户后续的正常使用。
本实施例中,由于将源数据库实例到目标数据库实例的数据迁移和迁移过程中产生新数据的更新分两个步骤依次进行,保证了数据迁移的有效性和数据更新的准确性,两项工作分别进行,互不干扰,从而避免了数据错乱和丢失情况的发生。
图7公开了代理节点的第二结构示意图,本实施例中,所述源数据库实例和所述目标数据库实例可以为键值数据库,如Redis数据库。如图7所示,所述代理节点70可以包括:
关系确定模块701,用于在命令发送模块向源数据库实例发送同步命令前,确定键值与目标数据库实例的对应关系;
在一个可能的实现方式中,所述关系确定模块701的具体结构可以参见图8,图8为本发明实施例公开的关系确定模块的结构示意图,如图8所示,所述关系确定模块701可以包括:
列表获取模块801,用于获取目标数据库实例列表;
所述目标数据库实例列表可以是用户根据实际情况预先配置好的。该目标数据库实例通常比源数据库实例要多,以实现对数据库的扩容。
关系构造模块802,用于构造键值和所述目标数据库实例列表的对应关系。
上述对应关系的建立,是为了后续针对特定的键,依据该对应关系为其选择对应的目标数据库实例进行存储。具体地,根据给定的键值对,可以首先通过一致性哈希算法,确定这个键的哈希值,然后根据哈希值来进一步确定这个键值应该存储的目标数据库实例。
命令发送模块601,用于向源数据库实例发送同步命令;
数据接收模块602,用于接收源数据库实例依据所述同步命令返回的待同步数据;
数据发送模块603,用于依据所述对应关系,将所述待同步数据发送至目标数据库实例中;
操作接收模块604,用于接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
操作发送模块605,用于将所述写操作命令发送至所述目标数据库实例。
本实施例中,在进行数据在线迁移前,首先确定键值与目标数据库实例的对应关系,保证了后续在接收到源数据库实例发送的待同步数据后,能够根据待同步数据快速的选择出对应的目标数据库实例,方便快捷的实现数据的在线迁移。
上述实施例中的写操作命令可以包括待操作数据和操作命令。图9为本发明实施例公开的操作发送模块的结构示意图,结合图9,所述操作发送模块605可以包括:
实例确定模块901,用于确定所述待操作数据所在的目标数据库实例;
所述写操作命令包括待操作数据和操作命令。即该写操作命令需要包含能够指示要对哪个数据进行写操作以及进行怎样的写操作的信息。所述待操作数据为需要进行写操作的数据。
命令发送模块902,用于将所述操作命令发送至所述目标数据库实例,以使得所述目标数据库实例依据所述操作命令对所述待操作数据进行更新。
在确定所述待操数据所处的目标数据库实例后,将所述操作命令发送至该目标数据库实例,后续该目标数据库实例可以根据操作命令对所述待操作数据进行相应的写操作,从而完成数据更新。
本实施例中,由于将源数据库实例到目标数据库实例的数据迁移和迁移过程中产生新数据的更新分两个步骤依次进行,保证了数据迁移的有效性和数据更新的准确性,两项工作分别进行,互不干扰,从而避免了数据错乱和丢失情况的发生。
在其他的实施例中,所述命令发送模块还可以用于:在数据发送模块将所述待同步数据发送至目标数据库实例中后,向所述源数据库实例发送写操作同步命令。以保证数据迁移完成后,写操作同步工作的及时进行,有助于提升数据在线迁移工作的整体效率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种数据在线迁移方法,其特征在于,包括:
向源数据库实例发送同步命令;
接收源数据库实例依据所述同步命令返回的待同步数据;
将所述待同步数据发送至目标数据库实例中;
接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
将所述写操作命令发送至所述目标数据库实例。
2.根据权利要求1所述的数据在线迁移方法,其特征在于,所述源数据库实例和所述目标数据库实例为键值数据库,在所述向源数据库实例发送同步命令前,还包括:
确定键值与目标数据库实例的对应关系;
则所述将待同步数据发送至目标数据库实例,包括:
依据所述对应关系,将所述待同步数据发送至目标数据库实例中。
3.根据权利要求2所述的数据在线迁移方法,其特征在于,所述确定键值与目标数据库实例的对应关系,包括:
获取目标数据库实例列表;
构造键值和所述目标数据库实例列表的对应关系。
4.根据权利要求1所述的数据在线迁移方法,其特征在于,所述写操作命令包括待操作数据和操作命令,则所述将所述写操作命令发送至所述目标数据库实例,包括:
确定所述待操作数据所在的目标数据库实例;
将所述操作命令发送至所述目标数据库实例,以使得所述目标数据库实例依据所述操作命令对所述待操作数据进行更新。
5.根据权利要求1所述的数据在线迁移方法,其特征在于,在所述将所述待同步数据发送至目标数据库实例中后,还包括:
向所述源数据库实例发送写操作同步命令。
6.根据权利要求1所述的数据在线迁移方法,其特征在于,在所述将所述待同步数据发送至目标数据库实例中前,还包括,解析所述待同步数据;
则所述将所述待同步数据发送至目标数据库实例中,具体包括:将解析后的所述待同步数据发送至目标数据库实例中。
7.一种代理节点,其特征在于,包括:
命令发送模块,用于向源数据库实例发送同步命令;
数据接收模块,用于接收源数据库实例依据所述同步命令返回的待同步数据;
数据发送模块,用于将所述待同步数据发送至目标数据库实例中;
操作接收模块,用于接收源数据库实例发送的,待同步数据迁移过程中源数据库实例缓存的写操作命令;
操作发送模块,用于将所述写操作命令发送至所述目标数据库实例。
8.根据权利要求7所述的代理节点,其特征在于,所述源数据库实例和所述目标数据库实例为键值数据库,则所述代理节点还包括:
关系确定模块,用于在命令发送模块向源数据库实例发送同步命令前,确定键值与目标数据库实例的对应关系;
则所述数据发送模块具体用于:依据所述对应关系,将所述待同步数据发送至目标数据库实例中。
9.根据权利要求8所述的代理节点,其特征在于,所述关系确定模块包括:
列表获取模块,用于获取目标数据库实例列表;
关系构造模块,用于构造键值和所述目标数据库实例列表的对应关系。
10.根据权利要求7所述的代理节点,其特征在于,所述写操作命令包括待操作数据和操作命令,则所述操作发送模块包括:
实例确定模块,用于确定所述待操作数据所在的目标数据库实例;
命令发送模块,用于将所述操作命令发送至所述目标数据库实例,以使得所述目标数据库实例依据所述操作命令对所述待操作数据进行更新。
11.根据权利要求7所述的代理节点,其特征在于,所述命令发送模块还用于:
在所述将所述待同步数据发送至目标数据库实例中后,向所述源数据库实例发送写操作同步命令。
12.根据权利要求7所述的代理节点,其特征在于,还包括解析模块,用于在数据发送模块将所述待同步数据发送至目标数据库实例中前,解析所述待同步数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710156970.4A CN106934048A (zh) | 2017-03-16 | 2017-03-16 | 数据在线迁移方法、代理节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710156970.4A CN106934048A (zh) | 2017-03-16 | 2017-03-16 | 数据在线迁移方法、代理节点 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106934048A true CN106934048A (zh) | 2017-07-07 |
Family
ID=59432534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710156970.4A Pending CN106934048A (zh) | 2017-03-16 | 2017-03-16 | 数据在线迁移方法、代理节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106934048A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688611A (zh) * | 2017-08-03 | 2018-02-13 | 杭州铭师堂教育科技发展有限公司 | 一种基于saltstack的Redis键值管理***及方法 |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
CN108509540A (zh) * | 2018-03-16 | 2018-09-07 | 中国银行股份有限公司 | 基于redis集群的多键值命令处理方法及*** |
CN108848136A (zh) * | 2018-05-30 | 2018-11-20 | 安徽四创电子股份有限公司 | 一种云服务集群的共享存储方法 |
CN109614439A (zh) * | 2018-10-24 | 2019-04-12 | 平安科技(深圳)有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN110865897A (zh) * | 2018-08-28 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 冲突检测方法和装置以及电子设备 |
CN111400273A (zh) * | 2019-11-19 | 2020-07-10 | 杭州海康威视***技术有限公司 | 数据库扩容方法、装置、电子设备及机器可读存储介质 |
CN111639061A (zh) * | 2020-05-26 | 2020-09-08 | 深圳壹账通智能科技有限公司 | Redis集群中数据管理方法、装置、介质及电子设备 |
CN112084254A (zh) * | 2019-06-14 | 2020-12-15 | 北京京东尚科信息技术有限公司 | 一种数据同步方法和*** |
CN112527777A (zh) * | 2020-12-18 | 2021-03-19 | 福建天晴数码有限公司 | 一种基于追日志的数据库扩展的方法及其装置 |
CN112527775A (zh) * | 2020-12-18 | 2021-03-19 | 福建天晴数码有限公司 | 一种基于双写的数据库扩展的方法及其装置 |
CN112711630A (zh) * | 2019-10-24 | 2021-04-27 | 阿里巴巴集团控股有限公司 | 数据同步方法、分布式缓存节点及***、可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289508A (zh) * | 2011-08-31 | 2011-12-21 | 上海西本网络科技有限公司 | 分布式缓存阵列及其数据查询方法 |
CN105359147A (zh) * | 2013-07-09 | 2016-02-24 | 甲骨文国际公司 | 在线数据库迁移 |
CN105472045A (zh) * | 2016-01-26 | 2016-04-06 | 北京百度网讯科技有限公司 | 数据库迁移的方法和装置 |
CN105630913A (zh) * | 2015-12-22 | 2016-06-01 | 福建星海通信科技有限公司 | 一种基于Redis管道通信的消息传递方法及*** |
CN106055698A (zh) * | 2016-06-14 | 2016-10-26 | 智者四海(北京)技术有限公司 | 数据迁移方法、代理节点及数据库实例 |
-
2017
- 2017-03-16 CN CN201710156970.4A patent/CN106934048A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289508A (zh) * | 2011-08-31 | 2011-12-21 | 上海西本网络科技有限公司 | 分布式缓存阵列及其数据查询方法 |
CN105359147A (zh) * | 2013-07-09 | 2016-02-24 | 甲骨文国际公司 | 在线数据库迁移 |
CN105630913A (zh) * | 2015-12-22 | 2016-06-01 | 福建星海通信科技有限公司 | 一种基于Redis管道通信的消息传递方法及*** |
CN105472045A (zh) * | 2016-01-26 | 2016-04-06 | 北京百度网讯科技有限公司 | 数据库迁移的方法和装置 |
CN106055698A (zh) * | 2016-06-14 | 2016-10-26 | 智者四海(北京)技术有限公司 | 数据迁移方法、代理节点及数据库实例 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688611A (zh) * | 2017-08-03 | 2018-02-13 | 杭州铭师堂教育科技发展有限公司 | 一种基于saltstack的Redis键值管理***及方法 |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
CN108509540A (zh) * | 2018-03-16 | 2018-09-07 | 中国银行股份有限公司 | 基于redis集群的多键值命令处理方法及*** |
CN108848136B (zh) * | 2018-05-30 | 2021-08-10 | 安徽四创电子股份有限公司 | 一种云服务集群的共享存储方法 |
CN108848136A (zh) * | 2018-05-30 | 2018-11-20 | 安徽四创电子股份有限公司 | 一种云服务集群的共享存储方法 |
CN110865897A (zh) * | 2018-08-28 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 冲突检测方法和装置以及电子设备 |
CN110865897B (zh) * | 2018-08-28 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 冲突检测方法和装置以及电子设备 |
CN109614439A (zh) * | 2018-10-24 | 2019-04-12 | 平安科技(深圳)有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN109614439B (zh) * | 2018-10-24 | 2024-05-03 | 平安科技(深圳)有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN112084254A (zh) * | 2019-06-14 | 2020-12-15 | 北京京东尚科信息技术有限公司 | 一种数据同步方法和*** |
CN112711630A (zh) * | 2019-10-24 | 2021-04-27 | 阿里巴巴集团控股有限公司 | 数据同步方法、分布式缓存节点及***、可读存储介质 |
CN112711630B (zh) * | 2019-10-24 | 2024-05-17 | 阿里巴巴集团控股有限公司 | 数据同步方法、分布式缓存节点及***、可读存储介质 |
CN111400273A (zh) * | 2019-11-19 | 2020-07-10 | 杭州海康威视***技术有限公司 | 数据库扩容方法、装置、电子设备及机器可读存储介质 |
CN111400273B (zh) * | 2019-11-19 | 2024-02-02 | 杭州海康威视***技术有限公司 | 数据库扩容方法、装置、电子设备及机器可读存储介质 |
CN111639061A (zh) * | 2020-05-26 | 2020-09-08 | 深圳壹账通智能科技有限公司 | Redis集群中数据管理方法、装置、介质及电子设备 |
CN112527777A (zh) * | 2020-12-18 | 2021-03-19 | 福建天晴数码有限公司 | 一种基于追日志的数据库扩展的方法及其装置 |
CN112527775A (zh) * | 2020-12-18 | 2021-03-19 | 福建天晴数码有限公司 | 一种基于双写的数据库扩展的方法及其装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106934048A (zh) | 数据在线迁移方法、代理节点 | |
US11704290B2 (en) | Methods, devices and systems for maintaining consistency of metadata and data across data centers | |
JP7410181B2 (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
US11500821B2 (en) | Synchronizing metadata in a data storage platform comprising multiple computer nodes | |
CN102169507B (zh) | 一种分布式实时搜索引擎的实现方法 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和*** | |
US7480643B2 (en) | System and method for migrating databases | |
US20130110873A1 (en) | Method and system for data storage and management | |
US7143112B2 (en) | Method and apparatus for data integration | |
CN111078667B (zh) | 一种数据迁移的方法以及相关装置 | |
CN104301360A (zh) | 一种日志数据记录的方法、日志服务器及*** | |
EP2380090B1 (en) | Data integrity in a database environment through background synchronization | |
CN103678494A (zh) | 客户端同步服务端数据的方法及装置 | |
CN111651519B (zh) | 数据同步方法、数据同步装置、电子设备及存储介质 | |
CN103186554A (zh) | 分布式数据镜像方法及存储数据节点 | |
CN102890682A (zh) | 构建索引的方法、检索方法、装置及*** | |
CN103793493A (zh) | 一种处理车载终端海量数据的方法和*** | |
CN102946410A (zh) | 网络同步方法和装置 | |
CN111127252A (zh) | 一种水资源管理决策支持***的数据管理方法 | |
CN112749198A (zh) | 一种基于版本号的多级数据缓存方法及装置 | |
WO2017156855A1 (en) | Database systems with re-ordered replicas and methods of accessing and backing up databases | |
CN111680019A (zh) | 一种区块链的数据扩容方法及其装置 | |
CN116842244A (zh) | 搜索引擎数据同步方法、***、设备和存储介质 | |
CN116049306A (zh) | 数据同步方法、装置、电子设备以及可读存储介质 | |
CN109359100A (zh) | Pb级历史数据和在线数据的实时计算的可视化建模方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170707 |
|
RJ01 | Rejection of invention patent application after publication |