操作场景
腾讯云 数据传输服务(Data Transmission Service,DTS)是提供数据迁移、数据同步、数据订阅于一体的数据库数据传输服务,可帮助用户在业务不停服的前提下轻松完成数据库迁移上云。DTS for MongoDB 可一次性将数据迁移到云上数据库,支持全量 + 增量数据的迁移,即迁移前源库的历史数据,和迁移过程中源库新增的写入数据一并进行迁移。
适用场景
适合通过 DTS 进行数据迁移上云的源端与目标端数据库形态如下表所示。
源端 | 目标端 | 说明 |
自建数据库 MongoDB(IDC 自建、腾讯云 CVM 上自建) | 腾讯云 MongoDB | 同时,支持从腾讯云 MongoDB 迁移至自建数据库。 |
第三方云厂商 MongoDB | 腾讯云 MongoDB | - |
腾讯云 MongoDB | 腾讯云 MongoDB | 腾讯云 MongoDB 与 MongoDB 实例之间迁移场景包括: 腾讯云同地域或不同地域间的迁移。 腾讯云同账号或跨账号之间的迁移。 腾讯云 MongoDB 实例不同版本之间的迁移。 腾讯云 MongoDB 副本集群与分片集群之间迁移。 |
使用限制
迁移过程中请勿进行如下操作,否则会导致迁移任务失败。
请勿修改、删除源数据库和目标数据库中用户信息(包括用户名、密码和权限)和端口号。
请勿在源库上执行清除 oplog 的操作。
在数据迁移阶段,请勿删除目的端数据库 TencetDTSData。
在数据迁移阶段,请谨慎操作目的端数据,避免最终数据不一致。
如果仅执行全量数据迁移,请勿在迁移过程中向源实例中写入新的数据,否则会导致源和目标数据不一致。针对有数据写入的场景,为实时保持数据一致性,建议选择全量+增量数据迁移。
源端为腾讯云 MongoDB3.2版本的分片集群,迁移时默认将所有分片片键作为哈希片键处理;如果希望在目标端使用范围片键,请在数据迁移前,预先在目标端创建范围片键。
分片集群迁移前,建议提前清理源端集群孤儿文档(Orphaned Document)。否则,可能导致迁移后数据校验不一致的问题。如何清理孤儿文档,请参见MongoDB 官方文档 cleanupOrphaned。
分片迁移中,请勿在源端对迁移的库表启用分片,避免源端和目标端数据分布不一致。若迁移中,源端对迁移的库表存在启用分片的操作,请在目标端检查分片状态,如果目标端没有启用分片,请手动执行下启用分片的操作。启用分片的具体操作,请参见 MongoDB 官方文档 Shard a Collection。
DTS 迁移源端副本集与分片进群迁移支持 DDL 操作。
操作类型 | 支持的 SQL 操作 |
DML | INSERT、UPDATE、DELETE |
DDL | INDEX:createIndexes、createIndex、dropIndex、dropIndexes COLLECTION:createCollection、drop、collMod、renameCollection DATABASE:dropDatabase、copyDatabase |
使用须知
DTS 在执行全量数据迁移时,会占用一定源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果您的数据库配置过低,建议您在业务低峰期进行迁移。
外网实例迁移时,请确保源实例服务在外网环境下可访问。
由于单节点无 Oplog,所以自建实例是单节点时,不支持增量迁移。
迁移准备
DTS 迁移之前,请对源端与目标端的环境进行如下检查。
类型 | 环境要求 |
源数据库要求 | 源库所在的服务器需具备足够的出口带宽,否则将影响迁移速率。 源库提供的用户需要有读取数据库的权限。 源库不能有和 TencetDTSData 同名的库。 源库若是集群模式,需在增量同步之前关闭 balancer。 进行全量 + 增量迁移时,需要能够从源端获取到 Oplog。 |
目标数据库要求 | 目标库的空间大小须是源库待迁移库表空间的1.3倍以上。 目标库提供的用户需要 root 权限。 目标库不能有和 TencetDTSData 同名的库。 目标库不能有和源库同名的库表。 源库为分片时,需要正确填写对应 mongos、config server、mongod 节点信息。 目标库不能有负载业务进行,否则会报警告。 源库和目标库的片键信息需要一致,否则会报警告。 迁移时,腾讯云 MongoDB 不支持免密访问。 |
请检查源数据库和目标数据库版本要求,请参见 数据迁移支持的数据库 进行核对。
确认源端网络环境接入类型是否互通。具体信息,请参见 准备工作。
获取源端数据库与目标端数据库访问账号和密码。腾讯云 MongoDB 迁移
建议在源实例创建一个只读账号供迁移使用,创建方式,如下所示:
use admindb.createUser({user: "username",pwd: "password",roles:[{role: "readAnyDatabase", db: "admin"},{role: "read", db: "local"}]})
操作步骤
1. 登录 DTS 控制台,在左侧导航选择数据迁移页,单击新建迁移任务,进入数据传输服务页面。
2. 在数据传输服务页面,参见下表,选择迁移的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。

界面参数 | 参数含义 | 参数配置 |
服务类型 | 选择腾讯云数据传输服务所需提供的服务类型。数据传输服务包括数据迁移、数据同步、数据订阅服务。 | 选择数据迁移。 |
创建模式 | 选择创建任务的模式。 新建任务:新建一个全新的任务。 创建类似任务:基于已存在的一个迁移任务,创建其类似任务,方便快速完成任务创建。 | 依实际情况选择即可。 |
任务 ID | 创建模式为创建类似任务时,显示该参数。配置类似任务的 ID信息。 | 创建类似任务,在任务 ID 的输入框,输入当前已有的类似任务 ID 编号。 |
计费模式 | - | |
源实例类型 | 选择源数据库类型。 | 选择 MongoDB,购买后不支持修改。 |
源实例地域 | 选择源数据库所属地域。 | 如果源库为自建数据库,选择离自建数据库最近的一个地域即可。 |
目标实例类型 | 请根据您的目标数据库类型选择。 | 选择 MongoDB,购买后不支持修改。 |
目标实例地域 | 选择目标数据库所属地域。 | - |
规格 | 固定为 Medium。 | |
标签 | 给迁移任务设置具体的标签,方便使用标签管理任务。 | 单击添加,在标签键与标签值下拉列表分别选择具体的标签键值对。 |
任务名 | 设置任务名称。 | 选择创建后命名,默认任务名称与任务 ID 一致。在迁移任务创建完成之后,可重新设置任务名称。 选择立即命名,在下面输入框,输入任务名称。 不支持除 - 之外的任意特殊符号。 支持小写字母、大写字母、汉字及数字。 长度限制请以控制台为准。 建议设置便于识别业务的名称。 |
协议条款 | 了解数据迁移的服务条款。 |
勾选我已阅读并同意《云数据库服务条款》。
|
3. 自动返回至迁移任务列表,找到新建的迁移任务,观察任务状态 / 进度,等待迁移任务创建完成。单击其操作列的配置,进入修改迁移任务的配置向导。在设置源和目标数据库页签,进行源库设置和目标库设置。
注意:
建议在源实例创建一个只读账号用于迁移使用,否则迁移前校验步骤会提示告警,请依据实际情况选择忽略告警提醒。


配置类别 | 配置参数 | 参数含义 | 配置方法 |
任务设置 | 任务名称 | 设置数据迁移任务的名称。 | 新建数据迁移任务时已设置任务名称,此配置项便默认为已创建的名称。 新建数据任务时,未配置任务名称,请在输入框设置便于识别的任务名称。 不支持除 - 之外的任意特殊符号。 支持小写字母、大写字母、汉字及数字。 长度限制请以控制台为准。 |
| 运行模式 | 配置数据迁移任务的运行时刻。 立即执行:完成任务校验通过后,立即启动任务。 定时执行:可设置具体的执行时间,迁移将在设定的执行时间开始运行。 配置迁移任务之后,支持在执行时间之前修改定时执行时间。 迁移任务设置定时执行时间之后,而又需在定时时间之前立即运行任务,可在迁移任务列表操作列,单击立即启动。 | 按需选择。如果选择定时执行,请在下方执行时间的输入框,选择任务启动的具体时刻。 配置迁移任务之后,支持在执行时间之前修改定时执行时间。 迁移任务设置定时执行时间之后,而又需在定时时间之前立即运行任务,可在迁移任务列表操作列,单击立即启动。 |
源库设置 | 源库类型 | 购买时选择的源库类型。 | 确认源库类型正确即可,无法修改。如需要更改,只能终止当前任务,重新创建迁移任务。 |
| 所属地域 | 购买时选择的源库所在的地域。 | 确认源库地域信息正确即可,无法修改。 |
| 接入类型 | 选择源库接入迁移任务的网络类型。 公网:源数据库可以通过公网 IP 访问。 云主机自建:源数据库部署在 腾讯云服务器 CVM 上。 专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络连通。 VPN 接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络连通。 云数据库:源数据库属于腾讯云数据库实例。 云联网:源数据库可以通过 云联网 与腾讯云私有网络连通。 私有网络 VPC:源数据库和目标数据库可通过腾讯云 私有网络 连通。 | 请根据您的实际网络环境选择。接入网络类型不同,其相应配置的网络参数也有差异。 |
| 源库所在网络环境 | 接入类型为云联网时,显示该参数。配置源库是否为腾讯云数据库。 | 根据源库的实际情况选择即可。 |
| 架构 | 接入类型为公网、云主机自建、专线接入、VPN 接入、云联网时,显示该参数。选择源库的架构形态。 副本集:指源库为副本集,每一个副本集由一个 Primary 节点和一个或多个 Secondary 节点组成的架构。 集群迁移:指分片集群,每一个分片集群由 mongos 节点、config server、shard 节点等组件组成的架构。 单节点:指源库集群为单个节点来进行读写操作。 | 根据源库的集群架构来选择。选择架构类型后,并且已进行连通性测试,无法再修改为其他架构类型。 |
| 私有网络专线网关 | 接入类型为专线接入时,显示该参数。设置私有网络的专线网关 ID。 | 在下拉列表选择私有网络的专线网关 ID。专线接入时只支持私有网络专线网关,请确认网关关联网络类型。 |
| 私有网络 | 接入类型为专线接入、VPN 接入时,显示该参数。配置源库通过专线与 VPN 方式接入的私有网络信息。 | 在下拉列表,分别选择私有网络 ID 与子网。 |
| VPN 类型 | 接入类型为 VPN 接入时,显示该参数。说明 VPN 的类型。 | 固定为:云 VPN 服务。 |
| 主机地址 | 接入类型为公网、主线接入、VPN 接入、云联网时,显示该参数。设置源库主机的 IP 地址或者域名。 | 请在输入框输入源库的 IP 地址或域名。例如:10.20.3.21。 |
| 端口 | 接入类型为公网、主线接入、VPN 接入、云联网时,显示该参数。设置源库的网络端口。 | 请在输入框输入网络端口号。例如:6379。 |
| 云主机实例 | 接入类型为云主机自建时,显示该参数。配置云主机 CVM 主机信息。 | 在下拉列表选择腾讯云主机 CVM 的实例 ID。 |
| 是否需要认证 | 接入类型为公网、云主机自建、专线接入、VPN 接入、云联网时,显示该参数。配置是否需要对源库的访问账户进行权限验证。 | 请根据数据的安全级别要求进行选择。 需要:源库需要进行身份验证,则需同时配置认证库与认证机制。 不需要:源库无需进行身份验证即可访问。 |
| 认证库 | 当是否需要认证为需要时,显示该参数。云数据库 MongoDB 固定使用 admin 库作为登录鉴权的认证数据库。 | - |
| 认证机制 | 当是否需要认证为需要时,显示该参数。配置源库进行身份验证的认证方式。 | 当前仅支持 SCRAM-SHA-1方式认证。 |
| 是否跨账号 | 接入类型为云数据库时,显示该参数。配置腾讯云源数据库实例是否需要跨账号访问。 | 跨账号:指源库与当前账号是不同的腾讯云账号。 本账号:指源库与当前账号属于同一个腾讯云账号。 |
| 数据库实例 | 接入类型为云数据库时,显示该参数。配置腾讯云数据库的实例信息。 | 在下拉列表,选择腾讯云源数据库实例 ID。 |
| 私有网络云联网 | 接入类型为云联网时,显示该参数。配置腾讯云云联网信息。 | 在下拉列表,选择腾讯云私有网络的云联网 ID。 |
| 节点 - mongod | 架构选择集群迁移时,显示该参数。配置源 MongoDB 数据库 Mongod 的节点信息。 | 请在输入框中输入 mongod 节点 IP 地址 和端口,多个节点请换行。例如:10.3.55.77:6379 |
| 节点 - mongos | 架构选择集群迁移时,显示该参数。配置 Mongos 节点信息。 | 请在输入框分别输入 mongos 节点 IP 地址和端口。 |
| 节点 - Config Server | 架构选择集群迁移时,显示该参数。配置 Config Server 节点的 IP 地址和端口。 | 请在输入框分别输入 Config Server 节点的 IP 和端口。 |
| 账号及密码选择 | 架构选择集群迁移,且是否需要认证为需要时,显示该参数。该参数用于配置源库 Mongod、Mongos、Config Server 节点的账号是否相同。 | 相同账号及密码:指 Mongod、Mongos、Config Server 节点的账号与密码相同。 不同的账号及密码:指 Mongod、Mongos、Config Server 节点的账号与密码不相同,需要分别配置。请在下方节点 - mongod、节点 - mongos、节点 - Config Server的账号和密码的输入框分别输入对应的账号信息。 |
| 账号 | 当是否需要认证为需要时,显示该参数。配置需认证的账号信息。 | 输入访问源库的账号信息。 |
| 密码 | 当是否需要认证为需要时,显示该参数。配置认证账户对应的密码。 | 输入访问源库账号对应的密码信息,不支持免密访问。 |
目标库设置 | 目标库类型 | 购买时选择的目标库类型。 | 确认目标库类型正确即可,无法修改。如需要更改,只能终止当前任务,重新创建迁移任务。 |
| 所属地域 | 购买时选择的目标库地域。 | 确认目标库地域信息正确即可,无法修改。 |
| 接入类型 | 配置目标库的网络接入类型。 | 固定为云数据库。指目标数据库属于腾讯云数据库实例。 |
| 数据库实例 | 选择目标库的实例 ID。 | 选择目标数据库实例 ID。 |
| 账号 | 目标库的数据库账号信息。 | 请在输入框输入账号信息。 |
| 密码 | 目标库的数据库账号的密码。 | 请在输入框输入账号对应的密码信息。 |
4. 配置完源库与目标库,请分别单击测试连通性,对源库与目标库分别进行网络连通性测试。如果连通性测试未通过,请参考 连通性测试不通过 进行处理。


5. 连通性测试通过,单击保存,在设置迁移选项及选择迁移对象页面,设置迁移选项和迁移对象,单击保存。


配置参数 | 参数含义 | 配置方法 |
迁移类型 | 请根据您的场景选择。 全量迁移:迁移整个数据库,迁移数据仅针对任务发起时,源数据库已有的内容,不包括任务发起后源库实时新增的数据。 全量 + 增量迁移:迁移数据包括任务发起时源库的已有内容,也包括任务发起后源库实时新增的数据。 | 请依据迁移数据的实际情况选择是否需要进行增量数据的迁移。 |
数据一致性检测 | 配置数据全量迁移完成之后是否进行数据一致性校验。 全量检测迁移对象:迁移任务将对迁移后源库和目标库的数据进行详细的对比。迁移任务将在同步增量阶段,目标与源库数据差距为0MB,目标库与源库时间延迟也为0秒时,自动触发一次一致性校验。 不检测:即不进行数据校验。创建任务之后,用户也可在任务进行到“同步增量”阶段,手动进行触发一致性校验。具体信息,请参见 创建数据一致性校验任务。
| 当迁移类型配置为全量迁移时,数据一致性校验固定为不检测。 当迁移类型配置为全量 + 增量迁移时,支持选择全量检测迁移对象与不检测。 全量检测迁移对象:迁移任务将对迁移后源库和目标库的数据进行详细的对比。迁移任务将在同步增量阶段,目标与源库数据差距为0MB,目标库与源库时间延迟也为0秒时,自动触发一次一致性校验。 不检测:即不进行数据校验。创建任务之后,用户也可在任务进行到“同步增量”阶段,手动进行触发一致性校验。具体信息,请参见 创建数据一致性校验任务。 |
数据校验 | 固定为内容校验,即对数据库的数据进行校验。 | - |
迁移对象 | 配置迁移任务迁移具体范围。 整个实例:迁移整个实例,但不包括系统库,如 postgres 中的系统对象,但是会迁移 role 与用户元数据定义。 指定对象:迁移指定对象。 | 迁移对象为指定对象,请在下面源库对象中选择迁移的具体数据库表。在已选对象,确认需迁移的库表。 |
6. 在校验任务页签,等待迁移前校验工作执行完成,单击启动任务。
如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
校验结果为失败:表示校验项检查未通过,任务阻断。单击查看详情,了解失败原因,修复问题之后,再次进行校验。
校验结果为警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响。单击查看详情,了解告警信息,评估是否忽略警告项。


7. 返回迁移任务列表,等待任务执行完成。
迁移类型选择全量迁移:任务完成后会自动结束,不需要手动结束。
迁移类型选择全量 + 增量迁移:全量迁移完成后会自动进入增量数据同步阶段,增量同步数据持续一直进行,不会自动结束。如需结束任务,请观察迁移阶段为增量同步,目标与源库时间延迟为0秒时,无延迟状态,将源库停写几分钟,在操作列单击完成,即可结束迁移任务。


更多操作
(可选)如果您需要进行查看任务、删除任务等操作,请单击对应的任务,在操作列进行操作,详情可参考 任务管理。
当迁移任务状态变为任务成功时,即可对业务进行正式割接,更多详情可参考 割接说明。