全部产品
Search
文档中心

云原生数据库 PolarDB:数据迁移指南

更新时间:Sep 24, 2026

本文为您介绍如何使用阿里云数据传输服务(DTS)将MongoDB数据库平滑迁移至PolarDB MySQL版集群的文档数据库兼容能力,并提供可选的反向同步方案以保障业务回滚。

迁移方案概述

迁移架构

本次迁移主要使用数据传输服务(DTS)实现从源MongoDB实例到目标PolarDB集群的数据同步。

  • 正向同步(MongoDB至PolarDB):通过DTS实现。DTS首先进行全量迁移,即复制源库的全量数据。随后进入增量迁移阶段,通过捕获并应用源MongoDB实例的Oplog或Change Stream,实时同步数据变更,确保目标PolarDB与源库的数据保持最终一致。

  • 反向同步(可选,PolarDB至MongoDB):为保障业务割接失败后能快速回滚,您可以选择性地配置一条从PolarDB到源MongoDB实例的反向数据同步链路。该链路基于PolarDB的Binlog和阿里云实时计算Flink版实现。

迁移影响

  • 性能:数据迁移(尤其是全量迁移阶段)会对源数据库和目标数据库产生一定的读写负载。建议在业务低峰期执行迁移。

  • 成本:DTS数据迁移任务与用于反向同步的实时计算Flink实例均会产生相应费用。迁移完成后,请及时释放不再需要的资源以节省成本。

准备工作

在开始迁移前,请逐项检查并完成以下准备工作,确保所有条件均已满足。

类别

检查项

操作指引与说明

版本与功能

目标PolarDB集群

源MongoDB实例

增量迁移依赖于源MongoDB数据库的Oplog或Change Stream。请确保源库为副本集或分片集群,且Oplog空间充足,能够覆盖整个全量迁移时长。

网络规划

网络环境

源MongoDB实例、目标PolarDB集群以及后续创建的Flink实例需位于同一专有网络(VPC)内。

账号与权限

源MongoDB实例

准备一个用于DTS迁移的数据库账号,该账号需具备读取所有待迁移数据。

目标PolarDB集群

创建文档数据库专用账号。同时,在业务割接前,建议对目标PolarDB集群的写入权限进行管控,仅允许数据传输服务(DTS)中使用的账号写入,防止数据污染。

迁移步骤

步骤一:创建并配置DTS迁移任务

配置从源MongoDB到目标PolarDB MySQL版的数据迁移链路,本文以云数据库MongoDB版副本集实例为例。

  1. 登录数据传输服务DTS控制台。在左侧导航栏中,单击数据迁移,并在页面左上角选择实例所属地域。

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

  3. 配置源库及目标库。

    类别

    配置

    说明

    无

    任务名称

    DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。

    源库信息

    数据库类型

    根据源库的部署位置进行选择。本示例以NoSQL 数据库 > MongoDB为例介绍配置流程。

    说明

    若源或目标库为其他云平台的数据库,您还需要进行其他的准备工作概览。

    接入方式

    选择云实例。

    说明

    您可按实际业务需求调整。

    实例地区

    选择MongoDB实例所在地区。

    说明

    若源或目标库为其他云平台的数据库,您可以选择就近地区。

    是否跨阿里云账号

    您可按实际业务需求调整。本示例以不跨账号(同账号)为示例。

    架构类型

    您可按实际业务需求调整。本示例以副本集架构为示例。

    迁移方式

    选择Oplog

    实例ID

    选择账号下面的MongoDB实例。

    鉴权数据库名称

    填写鉴权数据库名称。

    数据库账号

    填写MongoDB实例的账号。

    数据库密码

    填写MongoDB实例的密码。

    连接方式

    请根据MongoDB实例的实际情况,选择非加密连接或SSL安全连接。

    目标库信息

    数据库类型

    固定为NoSQL 数据库 > MongoDB。

    接入方式

    选择专线/VPN网关/智能网关。

    实例地区

    选择PolarDB集群所在地区。

    已和目标端数据库联通的VPC

    选择PolarDB集群的专有网络VPC。

    架构类型

    固定为副本集架构,暂不支持分片集群架构。

    连接地址类型

    固定为单节点。

    域名或IP地址

    填写文档数据库私有地址。

    端口

    填写文档数据库私有地址对应的端口,默认为3306。

    鉴权数据库名称

    填写admin。

    数据库账号

    填写文档数据库专用账号,固定为doc_root。

    数据库密码

    填写文档数据库专用账号对应的密码。

    连接方式

    选择非加密连接。

    VPC数据通道主备交换机

    选择DTS使用的VPC数据通道访问您的数据源:

    • 交换机(主):选择PolarDB集群所属的交换机。

    • 交换机(备):您可按实际业务需求进行选择。

  4. 单击测试连接以进行下一步。请将DTS服务器访问授权弹窗中的目标端IP地址添加到PolarDB集群的白名单中。点击确认授权并测试链接若无异常则自动跳转第二步配置任务对象。

    警告

    DTS自动添加或您手动添加DTS服务的公网IP地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各API使用鉴权方式通信、定期检查并限制不需要的网段,或者使用通过内网(专线/VPN网关/智能网关)的方式接入。

  5. 配置任务对象。

    1. 对象配置

      配置

      说明

      迁移类型

      勾选库表结构迁移、全量迁移与增量迁移。

      说明

      增量迁移不支持在任务开始运行后新建的数据库。详细信息,请参见迁移类型说明。

      目标已存在表的处理模式

      • 预检查并报错拦截:检查目标端是否为空。如果待迁移的目标端为空,则通过该检查项目;如果不为空,则在预检查阶段提示错误,数据迁移作业不会被启动。

      • 忽略报错并继续执行:跳过目标库对象数据存在性检查的检查项。

        警告

        选择为忽略报错并继续执行后,如果在迁移过程中遇到目标端的Key与源端中的Key相同,会将源端的数据覆盖写入目标端中,从而可能会导致目标端原有的数据丢失,请谨慎选择。

      迁移对象

      在源库对象框中单击待迁移的对象,然后单击向右小箭头将其移动到已选择对象框。

  6. 单击下一步高级配置,按照实际情况选择即可。

  7. 单击下一步数据校验,按照实际情况选择即可。

    说明

    若您需要进行数据校验,全量校验中可选择按表行数进行校验。

  8. 预检查:单击页面右下角的下一步保存任务并预检查,等待检查完成。在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。

    说明

    如果预检查失败,单击具体检查项后的提示,查看失败详情。

    • 您可以根据提示修复后重新进行预检查。

    • 如无需修复告警检测项,您也可以选择确认屏蔽,跳过告警检测项重新进行预检查。

  9. 购买DTS实例:

    1. 在购买页面,选择链路规格并选中《数据传输(按量付费)服务条款》。

    2. 单击购买并启动,迁移任务正式开始。

步骤二:监控迁移任务并验证数据

任务启动后,您可以在DTS控制台观察迁移任务的状态。任务会依次经历结构迁移、全量数据迁移和增量数据迁移。

  • 监控迁移进度:

    • 全量迁移:观察数据量的迁移进度。

    • 增量迁移:重点关注增量写入的延迟指标。当全量迁移完成,且增量写入延迟稳定在数秒内时,表示目标PolarDB集群的数据已基本追平源库。

  • 查看迁移性能:

    • 在性能监控页面,可以查看全量迁移性能与增量迁移性能。

步骤三:(可选)配置反向同步

为确保业务割接万无一失,您可以在割接前配置一条从PolarDB到源 MongoDB实例的反向同步链路。当业务切换到PolarDB后,此链路会将PolarDB中的数据变更实时同步回源MongoDB实例,为可能的回滚操作提供数据基础。配置流程如下:

环境准备

  1. 确保PolarDB集群已开启Binlog。

  2. (可选)创建高权限数据库账号:如果您尚未创建高权限账号,请前往PolarDB控制台,在集群的配置与管理 > 账号管理中创建高权限账号。

  3. 开通并配置Flink:开通实时计算Flink版,并创建一个Flink工作空间。

    重要

    Flink工作空间需与PolarDB集群位于同一个VPC下。

  4. 配置PolarDB集群的IP白名单:

    1. 在Flink控制台,单击工作空间的详情按钮,在工作空间详情页面获取其网段信息。

    2. 前往PolarDB控制台,在集群的配置与管理 > 集群白名单中新增IP白名单分组,将Flink的网段信息添加进去。

    3. 前往MongoDB控制台,在集群的数据安全性 > 白名单设置中,将Flink的网段信息添加进去。

  5. 验证PolarDB集群与Flink工作空间连通性:

    1. 在Flink控制台,进入工作空间,单击右上角的网络探测图标。

    2. 填写PolarDB集群主节点的私有地址与端口,单击探测。

    3. 弹窗提示网络探测成功连通,即集群白名单配置正确。

部署Flink作业

  1. 下载反向同步工具:PolarDBBackSync.jar。

  2. 准备配置文件:创建名为application.yaml的配置文件,内容如下:

    source:
        # PolarDB主节点的私网地址
        hostname: pc-xxx.mysql.polardb.rds.aliyuncs.com
        # PolarDB主节点的私网端口
        port: 3306
    
    # (可选)
    # whiteTableSet: 需要反向回流的表 blackTableSet: 不需要反向回流的表
    # 两者只能声明一个,或者不声明,表示回流所有表
    filter:
      whiteTableSet:
      blackTableSet:
    
    # checkpoint间隔,单位毫秒, 3s
    checkpoint:
      interval: 3000
  3. 上传文件:进入Flink控制台,找到并进入目标工作空间,在文件管理页面上传PolarDBBackSync.jar和application.yaml。

  4. 安全存储凭证:为避免明文暴露密钥,建议使用Flink的变量管理功能存储敏感信息。在变量管理页面新增以下四个变量:

    变量名称

    变量值

    polardbusername

    PolarDB的高权限数据库账号。

    polardbpassword

    PolarDB的高权限数据库账号对应的密码。

    mongodbendpoint

    MongoDB的连接地址。推荐使用ConnectionStringURI(高可用连接地址)。

  5. 部署并启动作业:

    1. 进入作业运维页面,选择部署作业 > JAR作业。

    2. 填写以下主要参数,其他参数可根据业务环境进行配置。然后单击部署。

      参数名称

      填写参考

      部署模式

      固定为流模式。

      部署名称

      填写作业部署名称,此处以PolarDBBackSync为例。

      引擎版本

      固定为vvr-11.3-jdk11-flink-1.20。

      JAR URI

      选择已上传的PolarDBBackSync.jar。

      Entry Point Class

      固定为org.example.PolarDBToMongoDBCdcJob。

      Entry Point Main Arguments

      固定为:

      --polardbusername ${secret_values.polardbusername}

      --polardbpassword ${secret_values.polardbpassword}

      --mongodbendpoint ${secret_values.mongodbendpoint}

      附加依赖文件

      选择已上传的application.yaml

    3. 部署成功后,单击启动 > 无状态启动,等待作业状态为运行中即可。

步骤四:执行业务割接

当DTS增量同步延迟稳定在低位时,即可开始业务割接。建议在业务低峰期进行。

  1. 最终校验:执行关键业务数据的抽样比对,或对核心表的行数进行最后一次核对。

  2. 停止源端写入:暂停所有向源MongoDB实例写入数据的业务应用或服务。

  3. 停止DTS任务:在DTS控制台暂停任务并非结束任务或释放任务。

  4. 切换应用连接:将业务应用的数据库连接配置从源MongoDB实例地址修改为PolarDB的文档数据库地址。

  5. (可选)开启反向同步任务:在业务正式切换至PolarDB期间开启反向同步任务,基于实时计算Flink版实现数据的反向回流,为业务回滚提供保障。

  6. 启动业务:重启业务应用,并进行核心功能验证,确保业务在PolarDB上运行正常。

  7. (可选)停止反向同步任务:在割接完成且业务稳定运行一段时间后,确认数据一致性满足业务需求后,即可安全停止反向同步任务(停止Flink作业与释放相关资源)。

  8. 观察阶段:

    • 密切监控业务日志和数据库性能指标,确认无异常。

    • 稳定运行一段时间后,若一切正常,则表明割接成功。

步骤五:清理资源

迁移和割接成功后,为节省成本,请及时清理不再需要的资源。

  • 数据传输服务(DTS):在DTS控制台上释放任务。

  • 实时计算Flink版:

    1. 停止作业:前往Flink控制台,在目标工作空间中,进入作业运维页面,找到目标作业并单击停止。

    2. 释放实例:返回Flink控制台,找到目标工作空间,单击释放资源。

  • PolarDB集群:根据业务需求,可以选择缩短Binlog文件保存时长或关闭Binlog。

    说明

    由于关闭Binlog功能需重启集群,建议在业务低峰期执行操作并确保应用程序具备重连机制。