一种在数据库间迁移数据的方法和系统的制作方法

文档序号:8905253阅读:249来源:国知局
一种在数据库间迁移数据的方法和系统的制作方法【
技术领域
】[0001]本发明涉及数据迀移领域,具体涉及一种在数据库间迀移数据的方法和系统,更加具体涉及无版本Key-Value数据数据库平滑迀移至HBase的方法和系统。【
背景技术
】[0002]Key-Value(键-值)数据库是一种非常常见的数据库类型,又称作NoSQL数据库,特点是查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。以MemcacheDB、TokyoTyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。进年来因为社交平台兴起,移动互联网的爆发,数据量大幅增加,传统的Key-Value数据库往往只能作为数据存储引擎存在,在大数据的背景下,进行分析计算处理工具链薄弱,计算框架比较少,对此HBase的前景优势十分明显。[0003]HBase(HadoopDatabase),是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。HBase是GoogleBigtable的开源实现,类似GoogleBigtable利用GFS作为其文件存储系统,HBase利用HadoopHDFS作为其文件存储系统。并且HBase可便捷的利用HadoopMapReduce来处理HBase中的海量数据,这种便利对于其他Key-Value数据而言是不可同日而语的。[0004]HBase与其他Key-Value数据库,因为并不是派生衍生关系,所以在各种数据库间转移数据的工作,往往不能使用现成存在的工具包去处理,需要结合实际情况去开发和实现,在实际生产环境中,以MemcacheDB为例,可能作为一种基础服务存在,服务于各种线上环境,当计算能力不足时需要将数据迀移至HBase,现存的技术中如要进行数据迀移,往往米取如下办法:[0005]1、停止MemcacheDB数据服务;[0006]2、进行MemcacheDB到HBase的数据迁移工作;[0007]3、启用HBase数据服务,完成。[0008]在实现本发明过程中,发明人发现现有技术中至少存在如下问题:[0009]现有技术中需要将MemcacheDB这种Key-Value数据库停止服务,而后进行迀移,因为数据规模的大小并不确定,决定了迀移时间的长短不一,这点对于用户体验来说会比较差,并且对于某些线上系统,停止服务是不可接受的,所以需要进行不停服务的平滑迀移。【
发明内容】[0010]本发明的实施例提供一种数据库间迀移数据的方法和系统,不停止服务实现数据平滑迀移。[0011]为达上述目的,一方面,本发明的实施例提供了一种在数据库间迀移数据的方法,包括:[0012]迀移程序从第二数据库向第一数据库迀移数据;[0013]在数据迀移期间如果有读取数据的需求,数据客户端优先读取所述第一数据库,当所述第一数据库读取失败时读取所述第二数据库;[0014]数据迀移完成后关闭所述第二数据库,由所述第一数据库提供数据服务。[0015]另一方面,本发明实施例提供了一种在数据库间迀移数据的系统,包括:[0016]迀移设备,用于从第二数据库向所述第一数据库迀移数据,并在数据迀移完成后关闭所述第二数据库,由所述第一数据库提供数据服务;[0017]数据访问设备,用于在数据迀移期间如果有读取数据的需求,优先读取所述第一数据库,当所述第一数据库读取失败时读取所述第二数据库。[0018]上述技术方案具有如下有益效果:本发明的实施例的方法新增加了数据的双读,使得将数据可以成功迀移过去,支持不停止服务迀移。【附图说明】[0019]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0020]图1是本发明的实施例的一种在数据库间平滑迀移数据的方法的整体流程图;[0021]图2是本发明的实施例的作为一个举例的平滑迀移数据的流程图;[0022]图3是本发明的实施例的作为一个举例的迀移过程中写入操作可能造成的数据覆盖的不意图;[0023]图4是本发明的实施例的数据客户端的读写操作和迀移程序的迀移写入操作的示意图;[0024]图5是本发明的实施例的数据客户端有无写入过新版本数据的对比示意图;[0025]图6是本发明的实施例的在数据库间平滑迀移数据的系统的功能框图。【具体实施方式】[0026]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0027]如图1所示,本发明的实施例提供了一种在数据库间迀移数据的方法,以实现在不停止服务的情况下实现数据库间的数据平滑迀移。该方法包括如下步骤:[0028]步骤101:迀移程序从第二数据库向第一数据库迀移数据;[0029]步骤102:在数据迀移期间如果有读取数据的需求,数据客户端优先读取第一数据库,当所述第一数据库读取失败时读取第二数据库;[0030]步骤103:数据迀移完成后关闭所述第二数据库,由所述第一数据库提供数据服务。[0031]在本实施例中,数据迀移开始后,即打开了双读机制,但是否发生双读要看实际情况。换言之,双读只发生在迀移数据期间,正常服务及迀移完成后是不会出现双读的。[0032]可选地,在步骤101之前该方法还可包括步骤:启动数据库双读机制。[0033]与现有技术的方法相比,本发明的实施例的方法新增加了数据的双读,使得将数据可以成功迀移过去,支持不停止服务迀移。[0034]可选地,在步骤103之前,该方法还可包括步骤:验证并确认所述第二数据库的所有数据被迀移成功。[0035]可选地,图1所示方法还可包括如下步骤:在数据迀移期间如果有写入数据的需求,数据客户端仅对所述第一数据库写入数据。[0036]作为一种可选的实施方式,在数据迀移期间,所述数据客户端对所述第一数据库读取最高版本数据,所述数据客户端对所述第一数据库写入除最低版本数据以外的高版本数据,所述迀移程序向所述第一数据库写入最低版本数据。[0037]作为另一种可选的实施方式,所述数据客户端对所述第一数据库读取、写入最高版本数据。[0038]以下以第一数据库为HBase数据库,第二数据库为任何无版本的Key-Value数据库(具体采用MemcacheDB)为例进行说明:[0039]如图2所示,本发明的实施例的方法包括:[0040]步骤1、启用MemcacheDB和HBase双读机制,双读机制是指优先读取HBase,HBase读取失败则读取MemcacheDB,两者都读取失败,则返回失败,任意一者读取成功,则返回数据;[0041]步骤2、启动迀移程序从MemcacheDB向HBase迀移数据;[0042]步骤3、迀移程序完成,启动迀移验证程序,验证确认所有的MemcacheDB数据都被迀移成功;[0043]步骤4、关闭MemcacheDB,由HBase提供数据服务。[0044]本发明的实施例的方法新增加了当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1