本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本指南为您提供了从社区MongoDB迁移至PolarDB PostgreSQL版详尽的操作步骤和最佳实践。PolarDB提供多种迁移工具,通过全量同步与增量同步相结合的方式,帮助您实现平滑、低停机时间的数据迁移。
迁移方案对比与决策
根据业务对停机时间、数据量、操作复杂度等要求,选择合适的迁移方案。
特性 | 在线迁移 (使用DTS) | 离线迁移 (使用mongodump) |
核心优势 | 支持增量数据同步,业务中断时间为分钟级。 | 操作简单,无额外迁移服务费用。 |
停机时间 | 分钟级(仅在最后业务切换阶段需要短暂停止写入)。 | 小时级或更长,取决于数据量和网络带宽,整个迁移过程需要停服。 |
数据一致性 | 准实时同步,最终可达到数据一致。 | 迁移数据为执行备份命令时间点的数据快照。 |
适用场景 | 对业务连续性要求高的生产核心系统。 | 开发测试环境、可接受长时间停机的业务、或一次性全量数据迁移。 |
操作复杂度 | 较高,涉及网络配置、DTS任务配置与监控。 | 较低,主要为命令行工具操作。 |
成本 | 需要支付DTS相关任务费用。 | 无工具费用,但业务停机可能带来部分成本。 |
使用DTS进行在线迁移
使用数据传输服务(DTS)完成从MongoDB到PolarDB PostgreSQL版的在线迁移。该过程包括结构迁移、全量数据迁移和增量数据迁移,可将业务停机时间缩短至分钟级。
操作流程概述
在目标端PolarDB PostgreSQL版中创建用于迁移的专属账号。
登录DTS控制台,配置并启动数据迁移任务。
监控迁移任务状态,待增量数据同步无延迟后,执行业务切换。
验证业务并释放DTS任务。
步骤一:创建迁移账号
创建供DTS用于连接PolarDB PostgreSQL版并写入数据的数据库账号,遵循最小权限原则。不可直接使用高权限账号与文档数据库专用账号。
使用MongoDB客户端连接到PolarDB PostgreSQL版集群的文档数据库。
执行以下命令创建账号。将命令中的
<your_user>和<your_password>替换为实际的用户名和密码。db.createUser({ user: "<<your_user>>", pwd: "<<your_password>", roles: [ { role: "readWrite" } ] })预期返回结果:
{ ok: 1 }
步骤二:创建并配置DTS迁移任务
配置从源MongoDB到目标PolarDB PostgreSQL版的数据迁移链路,本文以云数据库MongoDB版副本集实例为例。
登录数据传输服务DTS控制台。在左侧导航栏中,单击数据迁移,并在页面左上角选择实例所属地域。
单击创建任务,进入任务配置页面。
配置源库及目标库。
类别
配置
说明
示例图片
无
任务名称
DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。

源库信息
数据库类型
根据源库的部署位置进行选择。本示例以为例介绍配置流程。
说明若源或目标库为其他云平台的数据库,您还需要进行其他的准备工作。
接入方式
选择云实例。
说明您可按实际业务需求调整。
实例地区
选择MongoDB实例所在地区。
说明若源或目标库为其他云平台的数据库,您可以选择就近地区。
是否跨阿里云账号
您可按实际业务需求调整。本示例以不跨账号(同账号)为示例。
说明架构类型
您可按实际业务需求调整。本示例以副本集架构为示例。
迁移方式
选择Oplog
实例ID
选择账号下面的MongoDB实例。
鉴权数据库名称
填写鉴权数据库名称。
数据库账号
填写MongoDB实例的账号。
数据库密码
填写MongoDB实例的密码。
连接方式
请根据MongoDB实例的实际情况,选择非加密连接或SSL安全连接。
目标库信息
数据库类型
固定为。

接入方式
选择专线/VPN网关/智能网关。
实例地区
选择PolarDB集群所在地区。
已和目标端数据库联通的VPC
选择PolarDB集群的专有网络VPC。
架构类型
固定为副本集架构,暂不支持分片集群架构。
连接地址类型
固定为单节点。
域名或IP地址
填写文档数据库私有地址。
端口
填写文档数据库私有地址对应的端口,默认为5432。
鉴权数据库名称
填写
postgres。数据库账号
填写步骤一创建的迁移账号。
数据库密码
填写步骤一创建的迁移账号对应的密码。
连接方式
选择非加密连接。
VPC数据通道主备交换机
选择DTS使用的VPC数据通道访问您的数据源:
交换机(主):选择PolarDB集群所属的交换机。
交换机(备):您可按实际业务需求进行选择。
单击测试连接以进行下一步。请将DTS服务器访问授权弹窗中的目标端IP地址添加到PolarDB集群的白名单中。点击确认授权并测试链接若无异常则自动跳转第二步配置任务对象。
警告DTS自动添加或您手动添加DTS服务的公网IP地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各API使用鉴权方式通信、定期检查并限制不需要的网段,或者使用通过内网(专线/VPN网关/智能网关)的方式接入。
配置任务对象。
对象配置
配置
说明
示例图片
迁移类型
勾选库表结构迁移、全量迁移与增量迁移。

目标已存在表的处理模式
预检查并报错拦截:检查目标端是否为空。如果待迁移的目标端为空,则通过该检查项目;如果不为空,则在预检查阶段提示错误,数据迁移作业不会被启动。
忽略报错并继续执行:跳过目标库对象数据存在性检查的检查项。
警告选择为忽略报错并继续执行后,如果在迁移过程中遇到目标端的Key与源端中的Key相同,会将源端的数据覆盖写入目标端中,从而可能会导致目标端原有的数据丢失,请谨慎选择。
迁移对象
在源库对象框中单击待迁移的对象,然后单击
将其移动到已选择对象框。
单击下一步高级配置,按照实际情况选择即可。
单击下一步数据校验,按照实际情况选择即可。
说明若您需要进行数据校验,全量校验中可选择按表行数进行校验。
预检查:单击页面右下角的下一步保存任务并预检查,等待检查完成。在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。
说明如果预检查失败,单击具体检查项后的
,查看失败详情。您可以根据提示修复后重新进行预检查。
如无需修复告警检测项,您也可以选择确认屏蔽,跳过告警检测项重新进行预检查。
购买DTS实例:
在购买页面,选择链路规格并选中《数据传输(按量付费)服务条款》。
单击购买并启动,迁移任务正式开始。
步骤三:监控任务并执行业务切换
在数据完全同步后,将业务应用切换至PolarDB数据库,完成迁移。
监控同步状态:返回DTS控制台,观察迁移任务的状态。任务会依次经历结构迁移、全量数据迁移和增量数据迁移。
业务切换:等待增量数据无延迟的时候,就可以进行实例切换。

结束DTS任务:在PolarDB上平稳运行一段时间后,可在DTS控制台停止并释放迁移任务以节省相关费用。
使用mongodump/mongorestore进行离线迁移
此方法通过MongoDB官方工具进行全量备份和恢复,适用于可接受较长停机时间的场景。
步骤一:备份源端数据(mongodump)
在可连接到源MongoDB的服务器上,执行mongodump命令,从源MongoDB数据库创建全量数据备份。建议添加以下参数:
--uri:指定源数据库的连接字符串。--oplog:在备份期间记录oplog,确保备份数据的一致性。--out:指定备份文件的输出目录。
# 示例命令
mongodump --uri="mongodb://<username>:<password>@<source_ip>:<source_port>/<source_db>" --oplog --out /path/to/backup_dir/执行备份操作可能对源库性能产生影响,建议在业务低峰期进行。确保备份目录所在磁盘有足够空间。
步骤二:恢复数据至目标端(mongorestore)
将备份文件目录传输到可连接目标PolarDB集群的服务器上,然后执行mongorestore命令,将备份数据导入目标PolarDB集群。
# 推荐:省略密码,交互式输入
mongorestore --uri="mongodb://<username>@<polardb_endpoint>:<port>/<dest_db>" /path/to/backup_dir/<username>:在PolarDB集群中创建的文档数据库专用账号。<polardb_endpoint>:<port>:PolarDB集群的文档数据库兼容地址和端口。
为避免密码在命令行历史或进程列表中泄露,建议不在--uri参数中直接提供密码。执行命令后,系统会提示交互式的输入密码。
步骤三:验证数据
确认数据已完整与准确地恢复到目标数据库。连接到目标PolarDB集群,执行以下检查:
检查集合数量:确认所有预期的集合都已创建。
抽样检查文档内容:随机抽取几条文档,对比其内容是否与源端一致。