你当前正在访问 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 DocumentDB 群集

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

MongoDB 实例(源)

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

Azure DocumentDB (目标)

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

重要

微软 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。 创建迁移作业向导有六个步骤。

步骤 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 数据库迁移服务实例,或选择“ 创建 DMS ”以创建新的迁移服务。

重要

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

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

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

步骤 4:配置连接

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

公共连接

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

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

私有连接

在专用连接中,迁移作业在其虚拟网络中运行。 为了与虚拟网络安全通信,我们将使用虚拟网络对等互连。

  1. 从下拉列表中选择订阅、资源组和虚拟网络。

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

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

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

步骤 5:选择集合

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

小窍门

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

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

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

步骤 6:确认并启动

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

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

小窍门

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

监视现有迁移作业

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

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

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

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

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

监视在线迁移

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

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

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

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

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

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

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

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

注释

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

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

在你的订阅中注册 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 客户端执行的命令直接在向导 UI 中列出数据库和集合。 此功能需要在运行 VS Code 的计算机与源环境和目标环境之间建立网络连接。

数据迁移任务由 Azure 数据库迁移服务(DMS)执行。 DMS 是一种 Azure 托管服务,用于协调和管理数据移动活动。 创建迁移任务后,不再需要维护与源环境和目标环境的连接。

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

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

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

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

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

另请参阅 VS Code 连接性

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

单个迁移最多可以包含 25 个集合 。 但是,可以创建并运行 多个迁移作业 来迁移其他集合。

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

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

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

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

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

后续步骤