You need to enable JavaScript to run this app.
导航

迁移至火山引擎版 MongoDB

最近更新时间2023.11.28 16:20:48

首次发布时间2023.01.18 10:43:33

本场景介绍如何在数据库传输服务 DTS 控制台创建火山引擎 ECS 自建 MongoDB 迁移至火山引擎版 MongoDB 任务。

前提条件

  • 已注册火山引擎账号并完成实名认证。关于账号的创建方法和实名认证,请参见如何进行账号注册实名认证

  • 已创建文档数据库 MongoDB 版实例和账号。详细操作,请参见创建实例创建账号

  • 已在火山引擎 ECS 中搭建 MongoDB ,且创建实例和账号。

  • 当源库、目标库部署在火山引擎的 ECS 中通过私网连接,且开启了访问限制时,您需要在 ECS 的安全组规则中添加 DTS 服务器的 IP 地址。

  • 创建数据迁移任务之前,请确认源库和目标库的网络连通性与服务可用性。

  • 您还可以根据预检查项中的说明,来检查源库和目标库中各迁移对象做相应准备。更多详情,请参见预检查项(MongoDB)

注意事项

  • 若未选中增量迁移,数据迁移期间请勿在源实例中写入新的数据,以确保数据一致性。

  • 为实时保障数据的一致性,建议选择结构迁移、全量数据迁移和增量数据迁移。

  • 由于全量数据迁移会并发执行 INSERT 操作,导致目标库的集合产生碎片,因此全量迁移完成后目标库的集合存储空间会比源库的集合存储空间大。

  • 若暂时不需要启动迁移任务,您可以在完成迁移对象配置后,单击页面右下角的保存。保存后会跳转回迁移任务列表页,此时任务状态为待启动,您可以在合适的时候再配置迁移任务。配置方法,请参见配置迁移任务

  • 在数据迁移的过程中,若遇到目标库中已存在同主键值或唯一键的情况,DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。当数据进行冲突覆盖时,如果目标库中存在同名表,可能会导致数据不一致等问题,具体如下所示。建议您通过表名映射的方式、删除或重命名目标库中同名表的方式避免数据不一致等问题降低业务风险。

    • 表结构一致时:迁移的数据将覆盖目标表中与源库主键或唯一键的值相同的记录。

    • 表结构不一致时:可能会导致无法初始化数据,只能迁移部分列数据。

  • 在预检查时,如果选择忽略告警并启动迁移任务,可能会导致数据不一致,带来业务风险。关于预检查的具体说明,请参见预检查项(MongoDB)

  • 当您想通过专线实现数据迁移时,您可以提交工单联系技术人员。

限制条件

应用限制

类型说明

源库限制

  • 带宽要求,源库所属的服务器需具备足够出口带宽,否则将影响数据迁移的速率。

  • 待迁移对象的集合需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标库出现重复数据。

  • 当迁移的对象是集合级别,且需进行编辑例如集合的名称映射时,则单次迁移任务最多支持迁移 1000 张集合。当超出该限制时,任务提交后会显示请求报错,此时建议您拆分待迁移的集合,分批配置任务。

  • 当您需要进行增量迁移时,您需要完成以下配置:

    • 开启 Oplog 日志,否则预检查阶段将提示报错,且无法启动迁移任务。

    • 在全量迁移期间,Oplog 日志建议至少保留 7 天及以上,如需调整 Oplog 大小,请参见 Change the Size of the Oplog。您也可以在全量迁移完成后,再清理数据库传输服务 DTS 源库在任务运行后产生的 oplog 日志。

其他限制

  • 建议源库和目标库的 MongoDB 的版本保持一致,或者从低版本迁移至高版本以保障兼容性。当高版本迁移至低版本时,可能存在数据库兼容性或数据丢失问题。

  • 不支持迁移 admin 和 local 库中的数据。

  • 不保留事务信息,即源库中的事务迁移到目标库时会转变为单条记录。

  • 执行数据迁移前,您需要评估源库和目标库的性能,建议在业务低峰期执行数据迁移。否则数据库传输服务 DTS 在全量迁移时会占用源库和目标库一定的读写资源,可能导致数据库的负载上升。

  • 目标 MongoDB 数据库的存储空间需大于源 MongoDB 数据库占用的存储空间。

  • 数据库传输服务 DTS 会通过 ROUND(COLUMN,PRECISION) 读取 FLOAT 列和 DOUBLE 列的迁移精度,FLOAT 的默认迁移精度为 38 位,DOUBLE 的默认迁移精度为 308 位。当不符合业务预期时,请提交工单。

操作限制

源库需满足以下操作限制:

  • 在结构迁移和全量迁移阶段,请勿执行库或集合的结构变更,否则数据迁移任务会失败。

  • 当只执行全量数据迁移时,请勿向源库中写入新的数据,否则将导致源和目标数据不一致。

数据库最小权限策略

用于数据迁移的账号需具备以下权限:

  • 源库待迁移对象 FIND 权限。

  • 源库 changestream 权限。

  • 目标库 INSERTUPDATEREMOVEDROPDATABASEDROPCOLLECTION 权限。

操作步骤

  1. 登录 DTS 控制台

  2. 在顶部菜单栏,选择项目和地域。

  3. 在左侧导航栏,单击数据迁移

  4. 迁移任务列表页面,单击创建任务

  1. 创建迁移任务页面的配置源库及目标库配置向导页面,配置以下参数信息。

    类别参数说明

    任务名称

    (可选)自定义迁移任务名称。命名规则如下:

    • 以字母开头且不能为空。

    • 长度需在 64 个字符内。

    • 只能包含字母、数字、下划线(_)和中划线(-)。

    链路规格

    按需选择迁移任务的链路规格,当前支持 CompactStandard

    说明

    成功创建任务后,不支持修改任务的链路规格。关于链路规格的详细信息,请参见产品规格

    源库配置实例类型选择 MongoDB

    接入方式

    选择火山引擎 ECS 自建 MongoDB

    说明

    在迁移火山引擎 ECS 自建 MongoDB 实例时,您需要提前在源端的白名单或安全组策略中,添加 DTS IP 段的访问权限。单击查看 DTS IP 段查看和复制 IP 段。

    架构按需选择目标 MongoDB 实例的架构类型,当前支持选择副本集分片集群单节点
    地域选择目标实例所属地域。
    地址输入目标自建实例的主机地址和端口,格式为 IP:Port。在存在多个地址时,需使用英文逗号(,)隔开,最多支持配置 5 个 IP 地址。
    账号校验数据库输入账号所属数据库的库名。
    VPC从下拉列表中选择目标实例所属的 VPC 网络。
    数据库账号输入目标实例的数据库账号。
    数据库密码输入目标实例数据库账号对应的密码。

    测试链接

    单击测试链接,验证是否成功连接实例。
    当测试连接失败时,根据失败提示信息修改相关配置后,再次单击测试连接,验证是否可以成功连接实例。具体提示信息如下:

    • 连接认证失败,请检查网络是否正常:当出现该报错提示时,请确认网络的连通性。

    • 连接认证失败,请检查用户名和密码是否正确:当出现该报错提示时,您需要确认用户名和密码的准确性。

    • 无效的 IP 地址:当出现该报错提示时,请确认 IP 地址的正确性。

    • 连接认证失败,无法正常创建连接,请联系客服:当出现该报错提示时,请提交工单联系技术人员。

    目标库配置

    实例类型

    选择 MongoDB

    接入方式选择火山引擎版 MongoDB
    架构按需选择目标 MongoDB 实例的架构类型,当前支持选择副本集分片集群
    地域选择目标实例所属地域。

    MongoDB 实例

    从下拉列表中选择目标 MongoDB 的实例。

    说明

    下拉列表中仅展示前 10 个实例信息,您也可以通过实例 ID 或名称搜索目标实例。

    数据库账号输入目标实例的数据库账号。
    数据库密码输入目标实例数据库账号对应的密码。

    测试链接

    单击测试链接,验证是否成功连接实例。
    当测试连接失败时,根据失败提示信息修改相关配置后,再次单击测试连接,验证是否可以成功连接实例。具体提示信息如下:

    • 连接认证失败,请检查用户名和密码是否正确:当出现该报错提示时,您需要确认用户名和密码的准确性。

    • 连接认证失败,无法正常创建连接, 请联系客服:当出现该报错提示时,请提交工单联系技术支持。

    项目

    (可选)从下拉列表中选择该任务所属项目,默认在 default(默认项目) 下。您也可以单击创建新项目,创建新的项目。详细操作,请参见新建项目

    说明

    • 关于如何授予子用户访问指定项目下资源的权限操作步骤,请参见修改项目权限

    • 成功创建任务后,如果需要修改实例的所属项目,例如将任务从当前项目移入至其他项目,您可以将资源移入指定项目。详细操作,请参见资源移入项目

    • 项目是一个虚拟的概念,包括一组资源、用户和角色。通过项目可以对一组资源进行统一的查看和管理,并且控制项目内用户和角色对这些资源的权限。

    标签

    (可选)单击添加标签,为实例添加标签,标签可帮您实现云资源的分类、云资源的访问控制、账单与成本分摊等。标签由一个键值对(Key-Value)组成,用于标识云资源,可以帮助您从不同维度(例如用途、所有者等)对具有相同特征的云资源进行分类,便于筛选和聚合,从而轻松管理云上资源。关于标签的详细信息,请参见标签概述。标签的键值对规则如下:

      • 支持任何语言、文字、数字、空格或符号(_.:/=+-@)。

      • 大小写敏感,且长度在 1~128 个字符内。

      • 使用 UTF-8 编码的 Unicode 格式。

      • 不支持设置以 volc: 开头的任何形式的 Key,例如 Volc:VOLC: 等。

      • 支持任何语言、文字、数字、空格或符号(_.:/=+-@)。

      • 大小写敏感,且长度在 0~256 个字符内。

      • 使用 UTF-8 编码的 Unicode 格式。

    说明

    • 单次最多可给任务绑定 20 个标签。单个任务最多可绑定 50 个标签。

    • 同一个资源拥有的标签 Key 不可重复,且一个标签 Key 只有一个值 Value。

    计费方式

    当前仅支持按量计费,您无需选择。

    说明

    关于计费的详细信息,请参见计费说明

  2. 单击下一步:配置迁移对象

  3. 配置迁移对象配置向导页面,配置相关参数信息,如下表所示。

    说明

    • 若暂时不需要启动迁移任务,您可以在完成迁移对象配置后,单击页面右下角的保存

    • 保存后会跳转回迁移任务列表页,此时任务状态为待启动,您可以在合适的时候再配置迁移任务。配置方法,请参见配置迁移任务

    参数说明

    迁移类型

    根据业务需要选择迁移类型,其中:

    • 若仅需要全量迁移,可以同时选中结构迁移全量迁移

    • 若需要进行不停机迁移,可以同时选中结构迁移全量迁移增量迁移

    说明

    若未选中增量迁移,数据迁移期间请勿在源实例中写入新的数据,以确保数据一致性。

    迁移对象迁移对象区域中勾选需要迁移的对象,您可以在已选择对象区域中确认需要迁移的对象。同时,在该区域的搜索框内支持模糊搜索,批量删除不需要的目标。
    错误重试时间在迁移任务中,当源库和目标库断连后导致迁移任务失败时,会立即在指定时间内多次重试连接源库和目标库。取值范围:600~86400,单位:秒(s)。默认值为 7200 秒。

    全量迁移速率

    按需设置全量迁移速率。防止在迁移速率过高时,影响源库的性能,您可以根据源库和目标库的读写压力情况适当调整以下参数:

    • 每秒迁移的行数:按需开启并设置每秒迁移的行数。默认值 100000,取值范围 1~100000。
    • 每秒迁移的数据量:按需开启并设置每秒迁移的数据量。默认值 25000,取值范围 1~25000,单位 KB。

    说明

    迁移类型选择全量迁移时,支持配置该参数。

  1. 单击预检查

  2. 预检查配置向导页面,根据检查结果执行以下操作:

    • 单击预检查结果操作列的详情,查看详细的告警和失败信息,并根据告警或失败信息修改库表后,单击重试

    • 单击操作列的忽略,忽略本次告警继续启动迁移任务。同时,也可以单击忽略全部,一键忽略全部告警信息。

    说明

    • 选择忽略告警并启动迁移任务,可能导致数据不一致,带来业务风险。

    • 关于预检查的具体说明,请参见预检查项

  3. 预检查页面右下角,单击确认订单

  4. 确认订单配置向导页面,再次确认配置信息。阅读《数据库产品和服务条款》并勾选我已阅读并同意《数据库产品和服务条款》,然后单击创建并启动任务

成功创建数据迁移任务后,您可以返回数据库传输服务 DTS 控制台,在数据迁移任务列表查看数据迁移任务的信息。更多信息,请参见查看迁移任务

相关 API

API描述
CreateTransmissionTask调用 CreateTransmissionTask 接口创建数据库传输服务任务。
ModifyTransmissionTask调用 ModifyTransmissionTask 接口修改传输任务。