华为文档数据库 DDS 迁移到阿里云 MongoDB 方案

一、适用场景

本方案适用于与 华为文档数据库 DDS 迁移至 阿里云 MongoDB 场景。

迁移类型适用于:全量数据迁移、增量数据迁移;

网络适用场景:公网迁移、内网迁移;

二、迁移相关工具介绍

阿里云数据传输服务 DTS

数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务,支持关系型数据库(RDBMS)、非关系型的数据库(NoSQL)、数据多维分析(OLAP)等数据源间的数据交互,集数据同步、迁移、订阅、集成、加工于一体,助您构建安全、可扩展、高可用的数据架构。

三、迁移方案

数据迁移方案

使用阿里云传输服务 DTS 进行数据迁移

迁移原理

image.png

数据迁移过程包括三个阶段,即结构迁移、全量数据迁移和增量数据迁移。 如果需要在迁移期间保持源数据库的正常运行,当您在配置迁移任务时,必须将结构迁移、全量数据迁移和增量数据迁移都选为所需的迁移类型。

  • 结构迁移:在迁移数据之前,DTS需要在目标数据库中重新创建数据结构。对于异构数据库之间的迁移,DTS会解析源数据库的DDL代码,将代码转换成目标数据库的语法,然后在目标数据库中重新创建结构对象。

  • 全量数据迁移:在全量数据迁移阶段,DTS会将源数据库的存量数据全部迁移到目标数据库。 源数据库保持运行状态,在迁移过程中仍不断进行数据更新。 DTS使用增量数据读取模块来获取全量数据迁移过程中发生的数据更新。 当全量数据迁移开始时,增量数据读取模块将被激活。在全量数据迁移阶段,增量数据会被解析、重新格式化并存储在本地DTS服务器上。

  • 增量数据迁移:当全量数据迁移完成后,DTS会检索本地存储的增量数据,重新格式化,并将数据更新应用到目标数据库中。 此过程将持续下去,直到所有正在进行的数据变更都复制到目标数据库,并且源数据库和目标数据库完全同步。

前置条件
  • 华为云文档数据库为单节点实例或副本集实例。 (使用DTS迁移单节点实例至阿里云时,不支持增量数据迁移。)

  • 阿里云MongoDB实例的存储空间应大于华为云文档数据库的存储空间。

风险及注意项
  • DTS在执行全量数据迁移时将占用源库和目标库一定的资源,可能会导致数据库服务器负载上升。如果数据库业务量较大或服务器规格较低,可能会加重数据库压力,甚至导致数据库服务不可用。建议您在执行数据迁移前谨慎评估,在业务低峰期执行数据迁移。

  • 对于迁移失败的任务,DTS会触发自动恢复。当您需要将业务切换至目标实例时,请务必先结束或释放该任务,避免该任务被自动恢复后,导致源端数据覆盖目标实例的数据。

  • 不支持迁移adminlocal数据库。

  • 阿里云MongoDB实例支持的版本与存储引擎请参见版本及存储引擎,如需跨版本或跨引擎迁移,请提前确认兼容性。

  • 由于DTS写入数据的逻辑为并发写入,所以会导致目标端占用的存储空间比源端大5%~10%。

  • 请确保目标端MongoDB没有与源端相同的主键(默认为_id),否则会导致数据丢失。若目标端有与源端相同的主键,请在不影响业务的前提条件下清空目标端的相关数据(删掉目标端中与源端相同_id的文档)。

3、数据校验方案

使用阿里云迁移中心 CMH 进行数据校验

CMH提供高效轻量化数据校验能力,为数据库及对象存储系统的迁移验证场景设计。该解决方案可在数据迁移完成后,通过抽样验证机制,校验源端与目标端数据是否一致,从而保证业务的稳定性。特别是在系统割接窗口期,支持在停机完成后的关键时段快速执行验证操作,为数据迁移质量提供实时保障。

MongoDB的校验方法支持Count(获取Collectiondocument数量)、TopN(获取Collection的前ndocument并比较)、SumX(获取Collection的指定字段的和)。

四、实施迁移过程

使用阿里云传输服务 DTS 进行数据迁移

准备工作

  • 登录华为云文档数据库控制台。

  • 单击实例ID,进入实例管理页面。

  • 基本信息页签的实例信息区域框中,单击SSL的滑块关闭SSL功能。 

  • 关闭SSL功能将会导致实例重启,请谨慎操作。

  • 基本信息页签的节点信息模块,单击绑定弹性IP。 

说明:您可以为SecondaryPrimary角色的节点绑定公网IP地址。 

  • Primary节点:副本集实例中的主节点,该节点的数据库支持读写。

  • Secondary节点:副本集实例中的从节点,该节点的数据库仅支持只读。

  • 基本信息页签的网络区域框中,单击安全组ID。

  • 安全组设置页面中,将DTS服务器的IP地址段添加至入方向规则中。 

说明:

  • 华为云文档数据库默认的端口为8635,如您修改过,请填入修改后的数据库端口号。

  • 添加DTS服务器的IP地址段文档中,根据目标实例的地域信息,选择需要添加的IP地址段。例如,源实例的地域为杭州,目标实例的地域为深圳,那么需要将深圳地区的DTS IP地址段加入至源实例的白名单中。

操作步骤

1、进入DTS控制台

进入目标地域的迁移任务列表页面。

2、创建任务

单击创建任务,进入任务配置页面。

3、配置源库及目标库信息

配置完成后,在页面下方单击测试连接以进行下一步,并在弹出的DTS服务器访问授权对话框单击测试连接

说明 

请确保DTS服务的IP地址段能够被自动或手动添加至源库和目标库的安全设置中,以允许DTS服务器的访问。更多信息,请参见添加DTS服务器的IP地址段

4、任务对象配置

对象配置页面,配置待迁移的对象。

5、数据校验任务配置

若您需要使用数据校验功能,配置方法请参见配置数据校验

  • 保存任务并进行预检查

  • 若您需要查看调用API接口配置该实例时的参数信息,请将鼠标光标移动至下一步保存任务并预检查按钮上,然后单击气泡中的预览OpenAPI参数

  • 若您无需查看或已完成查看API参数,请单击页面下方的下一步保存任务并预检查

说明 

  • 在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。

  • 如果预检查失败,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。

  • 如果预检查产生警告:

    • 对于不可以忽略的检查项,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。

    • 对于可以忽略无需修复的检查项,您可以依次单击点击确认告警详情确认屏蔽确定重新进行预检查,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。

  • 购买实例

    • 预检查通过率显示为100%时,单击下一步购买

    • 购买页面,选择数据迁移实例的链路规格,详细说明请参见下表。

类别

参数

说明

信息配置

资源组配置

选择实例所属的资源组,默认为default resource group。更多信息,请参见什么是资源管理

链路规格

DTS为您提供了不同性能的迁移规格,迁移链路规格的不同会影响迁移速率,您可以根据业务场景进行选择。更多信息,请参见数据迁移链路规格说明

  • 配置完成后,阅读并选中《数据传输(按量付费)服务条款》。

  • 单击购买并启动,并在弹出的确认对话框,单击确定

您可在数据迁移界面查看具体进度。

五、数据校验过程

使用阿里云迁移中心 CMH 进行数据校验

License申请与查看

在云迁移中心页面,依次点击迁移能力->数据校验进入产品界面,首次进入会看到使用引导,第一步为License申请,点击申请License按钮,会自动生成一个License。申请License是为了防止Agent被滥用,起到保护Agent的作用。image

之后,可以看到license以及过期时间(默认有效期为90天),可以在弹窗中对License进行复制。

image

Agent管理

License申请完成后,需要进行数据校验Agent的部署,需要您提供一台或多台ECS来供CMH进行Agent的部署,具体ECS数量请根据实际情况进行评估。

操作系统建议:CentOS,Alibaba Cloud linux

网络要求:创建的ECS需要和数据源网络打通

CMH提供了三种不同的部署模式,下面是三种部署模式的具体说明:

说明 

  • 如果使用的是阿里云上ECS,且ECS安装有云助手(阿里云创建的ECS默认就有云助手),建议使用自动部署方式进行Agent安装;

  • 如果非阿里云ECS,但和阿里云VPC打通,或者虽然是阿里云ECS但机器未安装或由于某些原因安装不成功云助手,建议使用手动部署-私网连接方式部署Agent。

  • 如果非阿里云ECS,且网络未打通,但有公网IP的,建议使用手动部署-公网连接方式部署Agent。

1、自动部署

目前,支持自动部署的地域有杭州、上海、张家口、深圳、乌兰察布,如有其他地域的部署需求,请通过售后在线联系我们。

注意:

  • 自动部署只支持阿里云创建的ECS。

  • 安装前请先开通私网连接服务。

  • 通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。

准备好ECS后,点击Agent管理进入Agent的安装页面

image

点击Agent安装开始安装Agent流程。image

安装方式选择“自动部署”,依次填写Agent名称、选择地域、选择ECS,完成后,点击提交,CMH会自动完成数据校验Agent的部署流程。

image

部署过程中,可以看到Agent的部署过程。

image

部署完成后,可以在Agent列表看到部署的Agent。

image

注意:

  • 通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。

2、手动部署
2.1、公网手动部署

注意:

  • 公网方式部署的跳板机可以是任意平台或者IDC的机器,只需要CMH可以公网访问。

准备好机器后,点击Agent管理进入Agent的安装页面

image

点击Agent安装开始安装Agent流程。image

安装方式选择“手动部署”,依次填写Agent名称、选择公网、填写IP和端口,完成后,点击下一步。image

在下一步中,会给出该ECS的安装指令,点击拷贝将该指令拷贝后,到ECS粘贴后执行,即可以完成AgentECS的部署。

image

部署完成后,继续点击下一步,然后点击连接按钮,开始与Agent建立连接。

image

建立连接过程可以在线查看

image

部署完成后,可以在Agent列表看到部署的Agent。

2.2、私网手动部署

私网手动部署,支持的地域有杭州、上海、张家口、深圳、乌兰察布,如有其他地域的部署需求,请通过售后在线联系我们。

注意:

  • 私网手动部署的跳板机可以是阿里云或非阿里云机器,但需要VPC打通。

  • 安装前请先开通私网连接服务。

准备好ECS后,点击Agent管理进入Agent的安装页面

image

点击Agent安装开始安装Agent流程。image

安装方式选择“手动部署”,依次填写Agent名称、选择私网、选择地域,选择VPC,填写IP和端口,完成后,点击下一步

image

在下一步中,会给出该ECS的安装指令,点击拷贝将该指令拷贝后,到ECS粘贴后执行,即可以完成AgentECS的部署。

image

安装完成后,继续点击下一步,然后点击连接按钮,开始与Agent建立连接。

image

建立连接过程可以在线查看

image

部署完成后,可以在Agent列表看到部署的Agent。

注意:

  • 通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。

3、Agent操作
3.1、停止

自动部署的Agent,状态为在线时,可以通过点击停止按钮,来关停该Agent。

image

停止后,ECSAgent会被停止,列表状态为停止,停止状态的Agent不可以执行校验任务。image

3.2、启动

停止状态的Agent,可以通过点击启动按钮,来启动该Agent。

image

启动后,Agent状态变为在线。

3.3、删除

不再使用的Agent,可以在Agent列表进行删除。

image

3.4、重连与复制启动命令

手动部署的Agent,在Agent的断连后,Agent状态会被置为离线,可以点击复制启动命令,将命令在ECS上执行之后,点击重连,使CMHAgent重新建立连接。

image

重连之后,Agent的状态为在线。

image

创建验证计划

1、新建验证计划

完成agent启动和连接网络之后,点击新建验证计划按钮,填写基本信息完成割接计划的创建。

image根据不同的数据源类型填写完成后,测试数据源联通性正常之后,点击确认按钮即可开始进行数据源的解析。

说明 

这里只给出了源端数据源信息,如果需要进行源端与目标端之间的校验,还需要增加目标端数据源信息。

等待数据源解析完成后,验证计划创建完毕。

image

2、创建校验任务

点击计划名称进入目标计划的详情页。

image

之后可以看到agent的信息(当前同一个验证计划只支持一个agent)。点击新建任务按钮,进行校验任务的创建。

image

进行表单填写后点击下一步按钮,根据刚刚填写的数据源信息选择需要校验的对象。根据不同的校验方式填写表单,点击下一步。表单内容填写完成之后,再点击下一步。

最后确认验证范围无误之后,点击确认,创建验证任务。

image

3、发起校验任务

校验任务创建完成后,可以点击发起验证按钮直接发起所有校验任务。同时也支持勾选后,点击批量发起验证按钮进行部分任务的发起。

点击发起任务后,任务的状态会置为验证中,等待后刷新页面即可观察到任务的执行结果。

image

点击发起任务后,任务的状态会置为验证中,等待后刷新页面即可观察到任务的执行结果。

若发现执行结果不符合预期,支持数据订正之后,点击重新运行任务按钮,重新发起校验。

4、切换Agent

如果想要切换该验证计划对应的Agent,点击Agent列表的编辑,选择需要的Agent,点击确定。(当前同一个验证计划仅支持单Agent,如果选择多个Agent会报错)

image

新的Agent会去校验和当前验证计划对应的数据源的联通性,校验无误后,切换Agent完成。image

六、迁移注意事项

  • DTS在执行全量数据迁移时将占用源库和目标库一定的资源,可能会导致数据库服务器负载上升。如果数据库业务量较大或服务器规格较低,可能会加重数据库压力,甚至导致数据库服务不可用。建议您在执行数据迁移前谨慎评估,在业务低峰期执行数据迁移。

  • 对于迁移失败的任务,DTS会触发自动恢复。当您需要将业务切换至目标实例时,请务必先结束或释放该任务,避免该任务被自动恢复后,导致源端数据覆盖目标实例的数据。

  • 不支持迁移adminlocal数据库。

  • 阿里云MongoDB实例支持的版本与存储引擎请参见版本及存储引擎,如需跨版本或跨引擎迁移,请提 前确认兼容性。

  • 由于DTS写入数据的逻辑为并发写入,所以会导致目标端占用的存储空间比源端大5%~10%。

  • 请确保目标端MongoDB没有与源端相同的主键(默认为_id),否则会导致数据丢失。若目标端有与源端相同的主键,请在不影响业务的前提条件下清空目标端的相关数据(删掉目标端中与源端相同_id的文档)。