数据库集群中数据迁移的方法及装置制造方法及图纸

技术编号:18165545 阅读:39 留言:0更新日期:2018-06-09 11:28
本公开涉及了一种数据库集群中数据迁移的方法及装置。所述方法包括:获取源数据节点的快照,并根据所述快照中备份的待迁移数据分片中的存量数据,记录所述待迁移数据分片中的增量数据;将备份的存量数据迁移至目标数据节点;对记录的增量数据进行迁移,在迁移过程中,当未迁移的增量数据满足预设写锁条件时,通知所述源数据节点对所述待迁移数据分片执行写锁操作,并将所述未迁移的增量数据迁移至所述目标数据节点;待所述增量数据迁移完毕,通知所述协调节点将所述待迁移数据分片对应的路由从所述源数据节点切换至所述目标数据节点。采用本公开所提供的数据库集群中数据迁移的方法及装置能够在数据迁移过程中避免数据库服务被中断。

Methods and devices for data migration in a database cluster

The present disclosure relates to a method and device for data migration in a database cluster. The method includes: obtaining the snapshot of the source data node and recording the incremental data in the data to be migrated according to the stock data of the backup data to be migrated in the snapshot; migrating the backup stock data to the target data node; migrating the recorded incremental data during the migration process, When the non migrated incremental data satisfies the preset lock condition, the source data node notifies the source data partition to perform a lock operation and migrates the non migrated incremental data to the target data node, and the incremental data is migrated to notify the coordinator to split the data to be migrated. The corresponding route is switched from the source data node to the target data node. The method and device for data migration in the database cluster provided by this disclosure can avoid database service interruption during data migration.

【技术实现步骤摘要】
数据库集群中数据迁移的方法及装置
本公开涉及计算机应用
,尤其涉及一种数据库集群中数据迁移的方法及装置。
技术介绍
当某个应用的用户访问量较大时,仅使用一台服务器为用户提供数据库服务势必影响用户体验,这就需要多台服务器共同为用户提供数据库服务,从而形成了所谓的数据库集群。随着用户访问量的逐步增加,数据库集群的存储能力和处理能力也将达到集群能力的上限,这就需要通过数据迁移的方式缓解原有服务器的存储压力和负载压力。然而,现有的数据迁移过程必须停止客户端对正在迁移的数据的访问,即必须停止数据库服务,才能够保证数据迁移的一致性,这必然影响用户的访问效率,而导致用户的访问体验差。
技术实现思路
基于此,本公开的一个目的在于提供一种数据库集群中数据迁移的方法,用于解决现有技术在数据迁移过程中需要停止数据库服务的问题。此外,本公开的另一个目的在于提供一种数据库集群中数据迁移的装置,用于解决现有技术在数据迁移过程中需要停止数据库服务的问题。为了解决上述技术问题,本公开所采用的技术方案为:一种数据库集群中数据迁移的方法,所述数据库集群由至少一个协调节点和若干个数据节点组成,所述方法包括:获取源数据节点的快照,并根据所述快照中备份的待迁移数据分片中的存量数据,记录所述待迁移数据分片中的增量数据;将备份的存量数据迁移至目标数据节点;对记录的增量数据进行迁移,在迁移过程中,当未迁移的增量数据满足预设写锁条件时,通知所述源数据节点对所述待迁移数据分片执行写锁操作,并将所述未迁移的增量数据迁移至所述目标数据节点;待所述增量数据迁移完毕,通知所述协调节点将所述待迁移数据分片对应的路由从所述源数据节点切换至所述目标数据节点。一种数据库集群中数据迁移的装置,所述数据库集群由至少一个协调节点和若干个数据节点组成,所述装置包括:增量数据记录模块,用于获取源数据节点的快照,并根据所述快照中备份的待迁移数据分片中的存量数据,记录所述待迁移数据分片中的增量数据;存量数据迁移模块,用于将备份的存量数据迁移至目标数据节点;增量数据迁移模块,用于对记录的增量数据进行迁移,在迁移过程中,当未迁移的增量数据满足预设写锁条件时,通知所述源数据节点对所述待迁移数据分片执行写锁操作,并将所述未迁移的增量数据迁移至所述目标数据节点;路由切换模块,用于待所述增量数据迁移完毕,通知所述协调节点将所述待迁移数据分片对应的路由从所述源数据节点切换至所述目标数据节点。与现有技术相比,本公开具有以下有益效果:通过在数据迁移过程中,当未迁移的增量数据满足预设写锁条件时,通知源数据节点对待迁移数据分片执行写锁操作,当待迁移数据分片上当前所有的写操作完成时,将未迁移的增量数据迁移至目标数据节点。虽然对待迁移数据分片执行写锁操作之后,客户端对待迁移数据分片所进行的写操作会失败或者阻塞,但是满足预设写锁条件的未迁移的增量数据是极少的,使得写操作失败或者阻塞时间极短,相对客户端而言是无感知的,避免在数据迁移过程中停止数据库服务,从而有效地提高了用户的访问效率,提高了用户的访问体验。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并于说明书一起用于解释本公开的原理。图1是根据本公开所涉及的实施环境的示意图;图2是根据一示例性实施例示出的一种服务端的框图;图3是根据一示例性实施例示出的一种数据库集群中数据迁移的方法的流程图;图4是图3对应实施例中根据所述快照中备份的待迁移数据分片中的存量数据,记录所述待迁移数据分片中的增量数据步骤在一个实施例的流程图;图5是通过切换若干个所述记录文件对所述增量数据进行迭代迁移步骤在一个实施例的流程图;图6是通过切换若干个所述记录文件对所述增量数据进行迭代迁移步骤在另一个实施例的流程图;图7是一应用场景中一种数据库集群中数据迁移的方法的具体实现示意图;图7a是图7所涉及的数据节点新增的示意图;图8是根据一示例性实施例示出的一种数据库集群中数据迁移的装置的框图;图9是图8对应实施例中增量数据记录模块在一个实施例的框图;图10是迭代迁移单元在一个实施例的框图。通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。具体实施方式这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。如前所述,随着用户访问量的逐步增加,数据库集群需要通过数据迁移的方式,来缓解原有服务器的存储压力和负载压力。目前,通用的数据库包括键值(Key-Value)数据库、基于PostgreSQL的数据库等等。对于键值数据库而言,通过多副本机制能够实现对用户几乎无感知的数据迁移、数据再平衡等功能。但是由于键值数据库不支持完整的数据事务(ACID),也不具备分布式事务的能力,这就使得应用需要在业务逻辑上保证事务,进而保证数据迁移的一致性,而这对于绝大多数的应用开发者来说是无法接受的。此外,多副本机制仅适用于同构数据库内部实现数据迁移,而无法实现异构数据库之间的数据迁移。基于此,基于PostgreSQL的数据库被广泛地使用,例如,开源数据库集群Postgres-xc、Postgres-xl、Postgres-x2等,具备数据自动分发、数据自动聚合的能力。在数据迁移的过程中,尤其是针对数据库集群扩容的场景,无法实现部分数据的迁移,只能将原服务器上的所有数据全量导出之后,再将导出的所有数据全部导入到新增的服务器上,方可达到数据重新分布的目的。然而,这种数据迁移方案必须停止数据库服务来保证数据迁移的一致性,若原服务器上的数据量很大,还将导致数据库服务停止的时间会非常漫长,严重影响了用户的访问效率。又例如,基于PostgreSQL的数据库中间件pg_shard、citusdata,具备数据分片(sharding)的能力,可以通过搬迁分片(shard)来实现部分数据的迁移。但是,在数据迁移过程中,仍然需要停止数据库服务,即停止客户端对正在迁移的数据的访问,才能保证数据迁移的一致性。因此,为了避免数据迁移过程中数据库服务被中断,特提出了一种数据库集群中数据迁移的方法。图1为上述数据库集群中数据迁移的方法所涉及的实施环境。该实施环境包括数据库集群100、服务端200和客户端300。其中,数据库集群100由若干台服务器组成。至少一台服务器作为协调节点101,为客户端300提供数据自动分发、数据自动聚合。若干台服务器作为数据节点103,用于存储可供访问的数据。协调节点101负责接收客户端300进行的写操作,并将写操作所对应的待写入数据导入到数据库集群100中的数据节点103所拥有的数据分片上。即,按照预设规则(例如哈希算法、路由算法等)计算该待写入数据的分片号,并通过预置的路由映射表查找到该分片号对应的数据节点103,进而将该待本文档来自技高网...
数据库集群中数据迁移的方法及装置

【技术保护点】
一种数据库集群中数据迁移的方法,所述数据库集群由至少一个协调节点和若干个数据节点组成,其特征在于,所述方法包括:获取源数据节点的快照,并根据所述快照中备份的待迁移数据分片中的存量数据,记录所述待迁移数据分片中的增量数据;将备份的存量数据迁移至目标数据节点;对记录的增量数据进行迁移,在迁移过程中,当未迁移的增量数据满足预设写锁条件时,通知所述源数据节点对所述待迁移数据分片执行写锁操作,并将所述未迁移的增量数据迁移至所述目标数据节点;待所述增量数据迁移完毕,通知所述协调节点将所述待迁移数据分片对应的路由从所述源数据节点切换至所述目标数据节点。

【技术特征摘要】
1.一种数据库集群中数据迁移的方法,所述数据库集群由至少一个协调节点和若干个数据节点组成,其特征在于,所述方法包括:获取源数据节点的快照,并根据所述快照中备份的待迁移数据分片中的存量数据,记录所述待迁移数据分片中的增量数据;将备份的存量数据迁移至目标数据节点;对记录的增量数据进行迁移,在迁移过程中,当未迁移的增量数据满足预设写锁条件时,通知所述源数据节点对所述待迁移数据分片执行写锁操作,并将所述未迁移的增量数据迁移至所述目标数据节点;待所述增量数据迁移完毕,通知所述协调节点将所述待迁移数据分片对应的路由从所述源数据节点切换至所述目标数据节点。2.如权利要求1所述的方法,其特征在于,所述根据所述快照中备份的待迁移数据分片中的存量数据,记录所述待迁移数据分片中的增量数据的步骤包括:基于所述存量数据,接收客户端对所述待迁移数据分片进行的若干次写操作;根据若干次所述写操作生成若干个记录文件,通过若干个所述记录文件记录所述待迁移数据分片中的增量数据;相应地,所述对记录的增量数据进行迁移的步骤包括:通过切换若干个所述记录文件对所述增量数据进行迭代迁移。3.如权利要求2所述的方法,其特征在于,所述通过切换若干个所述记录文件对所述增量数据进行迭代迁移的步骤包括:以上一次迭代迁移时记录的增量数据结束位置作为本次迭代迁移的增量数据起始位置,根据本次迭代迁移的增量数据起始位置切换至对应的所述记录文件;由所述记录文件中获取本次迭代迁移的增量数据,并记录本次迭代迁移的增量数据结束位置;将获取到的所述增量数据迁移至所述目标数据节点。4.如权利要求3所述的方法,其特征在于,所述通过切换若干个所述记录文件对所述增量数据进行迭代迁移的步骤还包括:判断本次迭代迁移的增量数据的数据量或者该增量数据的迁移时间是否不大于预设阈值;若为是,则判定所述未迁移的增量数据满足预设写锁条件;否则,继续进行所述增量数据的迭代迁移。5.如权利要求1所述的方法,其特征在于,所述方法还包括:当所述待迁移数据分片对应的路由切换完毕,通知所述源数据节点对所述待迁移数据分片执行解锁操作,并停止记录所述待迁移数据...

【专利技术属性】
技术研发人员:许中清胡森李跃森刘煜宏
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1