背景

随着MongoDB的普及,使用MongoDB的用户越来越多。在使用MongoDB的过程中,可能会因为上云、扩容、拆分等业务需求,需要进行 MongoDB的数据迁移。MongoDB官方提供了迁移工具mongodump/mongorestore,然而这个工具只能进行全量导入导出,为了保证迁移数据一致性,它要求数据迁移过程中,源MongoDB上的应用程序需要停机。所以,这种迁移方式对业务影响极大。为了降低MongoDB迁移门槛,DTS于8月份正式上线MongoDB不停机迁移,实现在MongoDB迁移过程中,源数据库正常提供服务,最大程度降低应用的停机时间。

本文主要介绍不停机迁移设计原理及MongoDB不停机迁移使用流程:

不停机迁移设计原理
MongoDB不停机迁移功能列表
MongoDB不停机迁移使用方式
小结

不停机迁移设计原理

robo如何迁移mongodb mongodb迁移工具_数据

如上图所示,不停机迁移过程包括:

(1) 全量数据迁移,全量数据迁移会将源实例中的存量数据迁移到目标实例
(2) 增量数据迁移,增量数据迁移将迁移过程中,源实例产生的增量数据同步到目标实例

在迁移任务启动后,DTS即启动全量数据迁移及增量数据拉取及解析模块。增量数据拉取模块会实时获取源实例在全量数据迁移过程中产生的增量数据,并通过解析、封装后存储在DTS存储系统中。
当全量数据迁移完成后,DTS启动增量数据回放模块,增量数据回放模块从DTS存储系统中获取源实例产生的增量数据,同步解析、过滤、封装后同步到目标实例中。
增量数据迁移是个动态同步的过程,任务不会自动结束,所以建议在增量数据迁移达到无延迟后,即在目标实例进行业务测试,业务测试通过后,源库业务停写,然后等增量数据完全追平后,将业务切换到目标实例。由此可见,数据迁移过程中,业务停机时间,从业务停写,增量数据完全追平到业务切换到目标实例的时间,整个停机时间可以降低分钟级别。

MongoDB不停机迁移功能列表

支持实例类型

(1) 支持 自建MongoDB 到 云MongoDB实例 不停机迁移
(2) 支持 云MongoDB实例 到 云 MongoDB实例 不停机迁移

支持操作类型

(1) 支持 document 新增、删除、更新操作的同步
(2) 支持 collection 新增、删除操作的同步
(3) 支持 database 新增、删除操作的同步

MongoDB不停机迁移使用方式

本小节以用户自建MongoDB到云MongoDB实例的迁移为例,简单介绍,MongoDB不停机迁移的DTS数据迁移任务配置流程。

MongoDB连接信息配置

robo如何迁移mongodb mongodb迁移工具_robo如何迁移mongodb_02

在这个步骤中,主要配置迁移任务名称,源MongoDB实例连接信息及目标MongoDB实例连接信息。

迁移类型及迁移对象选择

robo如何迁移mongodb mongodb迁移工具_数据库_03

在这个步骤中,配置迁移类型及迁移对象。进行不停机迁移时,迁移类型需要配置:全量数据迁移+增量数据迁移

预检查

当上面的信息全部配置完,即可进行启动前的预检查。当预检查通过后,即可成功启动迁移任务。

当任务进入增量数据迁移阶段时,云MongoDB跟源自建MongoDB实例之间会保持数据实时同步,即自建MongoDB的更新数据都会被同步到目标云MongoDB实例。此时迁移任务不会自动结束,建议当增量数据迁移无延迟时,在云MongoDB实例上进行业务验证,如果业务验证通过后,可将业务切换到目标云MongoDB实例。

至此,完成MongoDB实例不停机迁移的任务配置。

小结

数据传输DTS致力于为用户提供关系型数据库、NoSQL及OLAP等数据源之间的数据迁移同步服务。DTS提供的MongoDB不停机迁移,可以实现在MongoDB数据迁移过程中,依赖其的应用程序停机时间降低到分钟级别。