通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure DocumentDB 迁移扩展(公共预览版)将 MongoDB 联机迁移到 Azure DocumentDB

本教程使用 Visual Studio Code 中的 Azure DocumentDB 迁移扩展来创建和管理从 MongoDB 的本地或云实例到 Azure DocumentDB 的迁移作业。 此扩展提供开发人员友好的界面来执行迁移,而不会中断服务。 该扩展无需额外的基础设施,并提供安全连接、零成本使用,以及对要迁移的数据库和集合进行精细控制。

本文的重点是使用扩展的集成工作流直接在 Visual Studio Code 中简化迁移步骤。 此方法非常适合需要简化的托管体验且复杂性最低且可靠性最高的方案。

先决条件

  • Azure订阅

在开始迁移之前,请准备 Azure DocumentDB 帐户和现有的 MongoDB 实例进行迁移。

MongoDB 实例(源)

  • 完成迁移前评估,以确定源实例和目标帐户之间是否存在不兼容和警告信息。
  • 添加一个具有 readAnyDatabaseclusterMonitor 权限的用户,除非已存在。 在扩展中创建迁移作业时,请使用此凭据。

Azure DocumentDB (target)

  • 收集 Azure DocumentDB 账户凭据
  • 确保用户具有createCollectiondropCollectioncreateIndexinsertlistCollections权限。

所需的最低权限

使用以下最低角色以创建和运行迁移作业。

最低角色 Scope 适用于连接模式 Purpose
读取器 Subscription 公共和专用 列出订阅和资源组。 每个迁移作业所需。
Azure 数据库迁移服务 参与者 资源组 公共和专用 创建Azure 数据库迁移服务(DMS)。 无需为每个迁移创建新的 DMS。 每个地区一个 DMS 就足够了。
参与者 Subscription 公共和专用 在订阅中注册 DMS。 这是一次性活动,可以委托给另一个用户。
用户访问管理员 虚拟网络 仅限专用 将网络参与者角色分配给 DMS 对象主体。 这是每个虚拟网络的一次性活动,可以委托给其他用户。
参与者 Azure DocumentDB 公共和专用 触发迁移作业。

有关提供程序注册详细信息,请参阅 在您的订阅中注册 Microsoft.DataMigration 资源提供程序

重要

迁移作业当前不支持Microsoft Entra ID身份验证。 请使用本机 DocumentDB 身份验证。

执行迁移

有关迁移大小、速度和直接转换的规划指南,请参阅 迁移最佳做法

连接到源

  1. 打开 DocumentDB for VS Code 扩展。
  2. 添加要迁移到 “文档数据库连接 ”列表的 MongoDB 服务器。
  3. 选择“ 添加新连接”。
  4. 在导航栏上,选择 “连接字符串”。
  5. 请粘贴您的连接字符串:mongodb://<YOUR_USERNAME>:<YOUR_PASSWORD>@localhost:10260/?tls=true&tlsAllowInvalidCertificates=true&authMechanism=SCRAM-SHA-256
  6. 从 DocumentDB 连接列表中,选择一个连接并展开以进行连接。

调用迁移扩展

可以从 DocumentDB 连接调用迁移扩展。

  1. 右键单击已展开(已连接)的连接。

  2. 从上下文菜单中选择 “数据迁移 ”。

    Visual Studio Code 中上下文菜单的截屏。

  3. 在命令面板中,选择迁移到 Azure DocumentDB 命令面板中列出了 Visual Studio Code 内的迁移工具的截图。

  4. 然后选择 迁移到 Azure DocumentDB。 命令面板的截图,显示了 Visual Studio Code 中的迁移选项。

  5. 迁移向导将指导你完成该过程。

创建迁移作业

迁移作业用于将一组集合从源迁移到目标Azure DocumentDB。 创建迁移作业向导有六个步骤。

步骤 1:创建作业

在此步骤中,你将提供作业的基本详细信息。

  • 作业名称:提供用户友好名称来标识迁移作业。

  • 迁移模式:选择最适合用例的迁移模式。

    • 联机 迁移会复制收集的数据,并确保在此过程中更新内容也能被同步复制。 此方法的优势在于停机时间最小,确保持续运行以实现业务连续性。 如果正在进行的操作至关重要,需要优先考虑减少停机时间,则可以使用此选项。
    • 脱机迁移一开始会捕获数据库的快照,提供了一种更简单、更可预测的方法。 如果可以接受使用数据库的静态副本,实时更新并不重要,则可以使用这种方法。

    重要

    若要确保从 MongoDB 成功联机迁移,必须在源 MongoDB 服务器上启用 ChangeStream。 如果没有 ChangeStream,则不会捕获初始迁移后对数据所做的任何修改。 因此,仅在源 MongoDB 服务器上启用了 ChangeStream 时,才使用联机迁移模式。

  • 连接:根据组织的安全授权和网络设置,从 “公共 ”和 “专用”中进行选择。

    • 当源服务器和目标服务器可以通过公有IP地址在互联网上访问时,使用公共。 它支持需要外部辅助功能的服务。
    • 当源服务器或目标服务器只能通过虚拟网络中的专用 IP 进行访问时使用 专用 服务器。 它通过消除对公共 Internet 的曝光来提高安全性。

选择“下一步”继续操作。

向导中“创建作业”步骤的屏幕截图。

步骤 2:选择目标

在此步骤中,选择现有的 Azure DocumentDB 帐户并提供其连接字符串。

  1. 从下拉列表中选择订阅、资源组和 Azure DocumentDB 帐户。

  2. 输入 Azure DocumentDB 帐户的连接字符串。

  3. 请确保 Azure DocumentDB 防火墙允许屏幕上显示的 IP 地址。

  4. 选择“下一步”继续操作。

向导中选择目标步骤的屏幕截图。

步骤 3:选择数据库迁移服务(DMS)

Azure 数据库迁移服务是一项服务,它使用云基础结构进行数据传输,而不是依赖本地资源,将数据迁移到Azure数据平台。 从下拉列表中选择现有的Azure 数据库迁移服务实例,或选择 Create DMS 创建新的迁移服务。

重要

确保在你的订阅中注册 Microsoft.DataMigration 资源提供程序。 每个订阅只需执行一次。

选择“下一步”继续操作。

在向导中,选择“数据库迁移服务”步骤的屏幕截图。

步骤 4:配置连接

此屏幕取决于在步骤 1 中选择的连接模式。

公共连接

在公共连接模式下,迁移作业使用公共 Internet 连接到源和目标。 若要启用通信,需要更新源和目标防火墙。 若要启用来自 DMS 服务器的通信,请将屏幕中列出的 IP 地址添加到源防火墙和目标防火墙。 有关网络模型的详细信息,请参阅 公共连接。 有关防火墙配置指南,请参阅 configure Azure DocumentDB 群集防火墙。

向导中公共连接配置步骤的屏幕截图。

私有连接

在专用连接中,迁移作业在其虚拟网络中运行。 为了与你的虚拟网络安全通信,我们使用虚拟网络对等互连。 有关网络模型的详细信息,请参阅 专用连接

  1. 该工具允许与两个虚拟网络对等互连,一个用于源网络,另一个用于目标网络。 根据网络配置,从下拉列表中选择订阅、资源组和虚拟网络。

  2. “DMS 配置” 部分中,选择不与虚拟网络冲突的 CIDR 范围。

  3. 运行屏幕上提供的 PowerShell 脚本以启用虚拟网络集成。

  4. 选择“下一步”继续操作。

向导中专用连接配置步骤的屏幕截图。

步骤 5:选择集合

在此步骤中,选择要包含在迁移作业中的集合。 使用提供的搜索选项从集合列表中选择。 目标中已存在的集合会自动在“目标中的存在”列中标记为“是”。

小窍门

在创建迁移作业之前,请务必选择要包括在内的所有集合,因为一旦创建后,无法再添加集合列表。

选择“下一步”继续操作。

向导中“选择集合”步骤的屏幕截图。

步骤 6:确认并启动

选择 “开始迁移”之前,请查看迁移作业详细信息。 如果需要更新详细信息,请使用 “编辑详细信息 ”按钮。

成功创建迁移作业后,会自动重定向到“ 查看现有作业 ”页

小窍门

数据迁移任务在Azure 数据库迁移服务上运行。 因此,在数据迁移期间,无需连接到源环境和目标环境。 该状态在仪表板上频繁更新。

监视现有迁移作业

使用“ 查看现有作业 ”选项卡监视已初始化作业的迁移状态。 任务根据所选的 DMS 列出。 使用 “更改 DMS ”按钮更改所选内容。

状态会定期自动更新。 将所选集合快照复制到目标后,脱机作业会自动完成。 但是,联机迁移需要手动直接转换。

查看现有作业界面的截图。

若要查看集合状态,请从表中选择一行。

显示脱机迁移的集合状态的屏幕截图。

监视在线迁移

与离线迁移不同,在线迁移不会自动完成。 相反,它们会持续运行,直到被通过选择“直接转换”手动完成。

要完成在线迁移,请按给定顺序执行以下步骤:

  1. 一旦完成所有集合的初始数据加载,“切换”按钮将被启用。 在此阶段,作业处于复制阶段,持续将更新从源实例复制到目标实例,以使其保持最新状态并同步最新更改。

  2. 准备好执行迁移直接转换时,停止到源集合的所有传入事务。

  3. 复制间隔显示上次更新与当前时间之间的时间差距。

  4. 监视表中的复制更改,并等待“已播放的复制更改”指标稳定下来。 稳定的“已播放的复制更改”指标表示源中的所有更新都已成功复制到目标

  5. 当所有集合的复制差距最小并且“已播放的复制更改”指标稳定时,选择“直接转换”。

  6. 手动验证源集合和目标集合之间的行计数是否相同。

注释

在不验证源和目标已同步的情况下执行切换操作可能会导致数据丢失。

显示联机迁移的集合状态的屏幕截图

迁移方案

Azure DocumentDB 迁移扩展支持多个源环境,包括Azure、本地数据中心和其他云提供商中运行的 MongoDB 实例。 该扩展提供了灵活的连接选项,以适应不同的网络配置和安全要求。

支持的源环境

下表汇总了支持的迁移源:

源环境 Description
在 Azure 中 在Azure 虚拟机或其他Azure托管服务上运行的 MongoDB 实例
本地 在本地数据中心或专用基础结构中运行的 MongoDB 服务器
其他云提供商 托管在其他云平台上的 MongoDB 实例

公共连接

在公共连接模式下,Azure 数据库迁移服务(DMS)通过公共 Internet 连接到源服务器和目标服务器。 DMS 提供静态 IP 地址,你可以将这些地址添加到源服务器和目标服务器的防火墙允许列表中。 DMS 将共享公共虚拟网络用于给定区域中的所有迁移。 虽然此虚拟网络在客户之间共享,但每个迁移作业在其自己的独立专用工作节点上运行,以确保作业级别的隔离。

在以下情况下使用公共连接:

  • 源服务器和目标服务器可通过公共 IP 地址访问。
  • 组织的安全策略允许通过公共 Internet 建立连接。
  • 您需要一种不需要虚拟网络配置的更简单设置。

显示公共连接网络架构的图表。

若要启用公共连接,请:

  1. 在迁移向导中,选择 “公共 ”作为连接模式。

  2. 请注意向导中显示的静态 IP 地址。

  3. 将这些 IP 地址添加到源 MongoDB 服务器上的防火墙允许列表。

  4. 将这些 IP 地址添加到 Azure DocumentDB 防火墙

私有连接

在专用连接模式下,DMS 为每个迁移作业预配专用专用虚拟网络,并将其与源和目标虚拟网络对等互连。 这意味着每个作业都获取隔离的工作器节点和隔离网络,确保作业之间没有流量交叉,客户之间不存在共享网络路径。

该扩展最多支持两个虚拟网络:

  • 源虚拟网络:可访问源 MongoDB 服务器的虚拟网络。
  • Target 虚拟网络:可访问 Azure DocumentDB 群集的虚拟网络。

在以下情况下使用专用连接:

  • 源或目标服务器无法通过公共 Internet 访问。
  • 你的组织需要所有流量流经专用网络。
  • 你需要避免将互联网暴露给公众。

从其他云提供商或内部部署

使用首选 VPN 工具在Azure与另一个云或本地的源环境之间建立网络连接。

显示了从其他云提供商或本地进行专用连接的网络体系结构的关系图。

从 Azure 中的专用终结点

为源和目标虚拟网络设置专用终结点。

显示 Azure 中专用连接网络架构的图表

若要启用专用连接,请:

  1. 在迁移向导中,选择“ 专用 ”作为连接模式。

  2. 为源环境选择订阅、资源组和虚拟网络。

  3. 为目标环境选择订阅、资源组和虚拟网络。

  4. “DMS 配置” 部分中,选择不与现有虚拟网络冲突的 CIDR 范围。

  5. 运行向导中提供的 PowerShell 脚本,以实现虚拟网络集成和对等互连。

重要

使用专用访问时,单个虚拟网络一次只能支持一个活动迁移作业。 若要运行多个并发作业,请对每个作业使用不同的虚拟网络。

在您的订阅中注册 Microsoft.DataMigration 资源提供程序

要确保 Microsoft.DataMigration 资源提供程序已在您的订阅中注册,您可以按照以下步骤进行操作:

Azure门户

  1. 转到Azure门户并导航到订阅。

  2. 在左侧菜单中,选择“设置”下的“资源提供程序”。

  3. 在顶部的搜索框中搜索Microsoft.DataMigration

  4. 如果未注册,请选择它,然后选择“ 注册 ”按钮。

Azure CLI

  1. 打开Azure Cloud Shell或本地终端。

  2. 运行以下命令,注册资源提供程序:

    az provider register --namespace Microsoft.DataMigration
    

PowerShell

  1. 打开Azure Cloud Shell或本地 PowerShell。

  2. 运行以下命令,注册资源提供程序:

    Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"
    

FAQ

Azure DocumentDB 支持视图时,为什么选择集合屏幕步骤中缺少视图?

Azure DocumentDB 支持创建新视图。 但是,迁移扩展不支持迁移现有视图。

迁移完成后,始终可以重新创建视图。

从 MongoDB 迁移到 Azure DocumentDB 时会跳过哪些集合和数据库?

对于 MongoDB,以下数据库和集合被视为内部数据库:

类别 Description
数据库 管理员、本地、系统配置
收藏 具有前缀的任何集合 system.

迁移作业是否在本地计算机上运行?

VS Code 中的迁移向导需要从本地计算机到源环境和目标环境的网络连接。 此连接用于枚举数据库和集合并提交迁移作业。 提交作业后,可以关闭 VS Code 或断开与源和目标环境的连接。

数据迁移完全由 Azure 数据库迁移服务 (DMS)(管理所有数据移动的Azure托管服务)执行。 DMS 不依赖于本地计算机或 VS Code 来执行作业,因此在提交作业后不需要本地连接。

是否可以在迁移期间重命名数据库和集合?

扩展不支持迁移期间的数据库和集合重命名。

如何配置源服务器防火墙以避免连接问题?

所需的网络配置取决于所选的连接模式:

  • 公共模式: 必须允许源防火墙和目标防火墙上向导中显示的 IP 地址才能启用通信。
  • 专用模式: 必须启用 虚拟网络集成 ,以便 DMS 服务器可以安全地与虚拟网络中的源终结点和目标终结点通信。

另请参阅 VS Code 连接性

可以在单个迁移中迁移多少个数据库和集合?

可以在单个迁移中包含无限数量的集合。

我可以同时运行多少个迁移任务?

使用公共访问时,可以运行多个迁移作业。 但是,使用 专用访问时,单个虚拟网络每次仅支持一个活动作业。 若要运行具有专用访问的多个作业,需要为每个作业使用不同的 虚拟网络

扩展生成的日志类型是什么?

扩展记录默认日志目录中的错误、警告和其他诊断日志:

  • Windows - C:\Users\<username>\.dmamongo\logs\
  • Linux - ~/.dmamongo/logs
  • macOS - /Users/<username>/.dmamongo/logs

后续步骤