教程:将 MongoDB 脱机迁移到适用于 MongoDB 的 Azure Cosmos DB API

适用于: Azure Cosmos DB API for MongoDB

重要

在执行迁移步骤之前,请完整阅读本指南。

本 MongoDB 迁移指南是 MongoDB 迁移系列的一部分。 关键的 MongoDB 迁移步骤包括迁移前步骤、迁移步骤和迁移后步骤,如下所示。

迁移步骤示意图。

使用 DMS 以脱机方式将数据从 MongoDB 迁移到 Azure Cosmos DB 概述

使用 Azure 数据库迁移服务将数据库从 MongoDB 的本地或云实例脱机(一次性)迁移到适用于 MongoDB 的 Azure Cosmos DB API。

本教程介绍如何执行下列操作:

  • 创建 Azure 数据库迁移服务的实例。
  • 使用 Azure 数据库迁移服务创建迁移项目。
  • 运行迁移。
  • 监视迁移。

在本教程中,你将迁移在 Azure 虚拟机中托管的 MongoDB 中的数据集。 通过使用 Azure 数据库迁移服务,你可以将数据集迁移到适用于 MongoDB 的 Azure Cosmos DB API。 如果尚未设置 MongoDB 源,请参阅在 Azure 中的 Windows VM 上安装并配置 MongoDB

先决条件

要完成本教程,需要:

  • 完成预迁移步骤,如估计吞吐量和选择分区键。

  • 为适用于 MongoDB 的 Azure Cosmos DB API 创建帐户

  • 使用 Azure 资源管理器为 Azure 数据库迁移服务创建 Azure 虚拟网络。 此部署模型使用 Azure ExpressRouteVPN 为本地源服务器提供站点到站点的连接。 有关创建虚拟网络的详细信息,请参阅 Azure 虚拟网络文档,尤其是提供分步详细信息的“快速入门”文章。

    备注

    在虚拟网络设置期间,如果将 ExpressRoute 与 Microsoft 的网络对等互连一起使用,则请将以下服务终结点添加到要在其中预配该服务的子网:

    • 目标数据库终结点(例如,SQL 终结点或 Azure Cosmos DB 终结点)
    • 存储终结点
    • 服务总线终结点

    Azure 数据库迁移服务缺少 Internet 连接,因此必须提供此配置。

  • 确保虚拟网络的网络安全组 (NSG) 规则不阻止以下通信端口:53、443、445、9354 和 10000-20000。 有关详细信息,请参阅使用网络安全组筛选网络流量

  • 打开 Windows 防火墙,使 Azure 数据库迁移服务能够访问源 MongoDB 服务器(默认情况下为 TCP 端口 27017)。

  • 如果在源数据库的前面使用防火墙设备时,则可能需要添加防火墙规则,以允许 Azure 数据库迁移服务访问要迁移的源数据库。

配置服务器端重试功能

如果从 MongoDB 迁移到 Azure Cosmos DB,则资源调控功能将非常有用。 利用这些功能,你可以充分利用预配吞吐量的请求单位(RU/秒)。 如果该请求超出了容器预配的请求单位,则 Azure Cosmos DB 可能会在迁移过程中限制该请求。 然后,需要重试该请求。

数据库迁移服务能够执行重试。 数据库迁移服务与 Azure Cosmos DB 之间的网络跃点所涉及的往返时间会影响该请求的整体响应时间,了解这一点很重要。 缩短受限请求的响应时间可缩短迁移所需的总时间。

借助 Azure Cosmos DB 的服务器端重试功能,服务可截获限制错误代码,并以更短的往返时间重试,从而大幅缩短请求响应时间。

若要使用服务器端重试,请在 Azure Cosmos DB 门户中选择“功能” > “服务器端重试”。

显示服务器端重试功能位置的屏幕截图。

如果该功能被禁用,请选择“启用”。

显示如何启用服务器重试功能的屏幕截图。

Register the Microsoft.DataMigration resource provider

  1. Sign in to the Azure portal. Search for and select Subscriptions.

    Show portal subscriptions

  2. Select the subscription in which you want to create the instance of Azure Database Migration Service, and then select Resource providers.

    Show resource providers

  3. Search for migration, and then select Register for Microsoft.DataMigration.

    Register resource provider

创建实例

  1. 在 Azure 门户中,选择 + 创建资源,搜索 Azure 数据库迁移服务,然后从下拉列表选择 Azure 数据库迁移服务

    显示 Azure 市场的屏幕截图。

  2. 在“Azure 数据库迁移服务”屏幕上,选择“创建” 。

    显示如何创建 Azure 数据库迁移服务实例的屏幕截图。

  3. 在“创建迁移服务”上,为服务、订阅以及新的或现有资源组指定名称。

  4. 选择要在其中创建 Azure 数据库迁移服务实例的位置。

  5. 选择现有虚拟网络或新建一个。

    虚拟网络为 Azure 数据库迁移服务提供了对源 MongoDB 实例和目标 Azure Cosmos DB 帐户的访问权限。

    如需详细了解如何在 Azure 门户中创建虚拟网络,请参阅使用 Azure 门户创建虚拟网络

  6. 选择定价层。

    有关成本和定价层的详细信息,请参阅价格页

    显示 Azure 数据库迁移服务实例的配置设置的屏幕截图。

  7. 选择“创建” 来创建服务。

创建迁移项目

创建服务后,请在 Azure 门户中找到并打开它。 然后创建新的迁移项目。

  1. 在 Azure 门户中,选择“所有服务”,搜索 Azure 数据库迁移服务,然后选择“Azure 数据库迁移服务”。

    显示如何查找所有 Azure 数据库迁移服务实例的屏幕截图。

  2. 在“Azure 数据库迁移服务”屏幕上,搜索你创建的 Azure 数据库迁移服务实例名称,然后选择该实例。

  3. 选择“+ 新建迁移项目”。

  4. 在“新建迁移项目”上指定项目的名称,并在“源服务器类型”文本框中选择“MongoDB” 。 在“目标服务器类型”文本框中选择“CosmosDB (MongoDB API)”,然后在“选择活动类型”中选择“脱机数据迁移”。

    显示项目选项的屏幕截图。

  5. 选择“创建并运行活动”,以便创建项目并运行迁移活动。

指定源详细信息

  1. 在“源详细信息” 屏幕上,指定源 MongoDB 服务器的连接详细信息。

    重要

    Azure 数据库迁移服务不支持将 Azure Cosmos DB 作为源。

    可通过三种模式连接到源:

    • 标准模式:接受完全限定的域名或 IP 地址、端口号和连接凭据。

    • 连接字符串模式:接受 连接字符串 URI 格式中所述的 MongoDB 连接字符串。

    • Azure 存储中的数据:接受 Blob 容器 SAS URL。 如果 Blob 容器包含 MongoDB bsondump 工具生成的 BSON 转储,请选择“Blob 包含 BSON 转储”。 如果容器包含 JSON 文件,请勿选择该选项。

      如果选择此选项,则请确保存储帐户连接字符串按以下格式显示:

      https://blobnameurl/container?SASKEY
      

      可以在 Azure 存储资源管理器中找到此 blob 容器 SAS 连接字符串。 为相关容器创建 SAS 将为你提供所请求格式的 URL。

      此外,根据 Azure 存储中的类型转储信息,记住以下信息:

      • 对于 BSON 转储,blob 容器中的数据必须采用 bsondump 格式。 将数据文件放置到格式为 collection.bson 且以包含数据库命名的文件夹中。 使用 collection.metadata.json 格式命名任何元数据文件。

      • 对于 JSON 转储,blob 容器中的文件必须放置到以包含数据库命名的文件夹中。 在每个数据库文件夹中,数据文件必须放置到名为“data”且使用格式 collection.json 命名的子文件夹中 。 将元数据文件放置到名为“metadata”且使用相同格式 collection.json 命名的子文件夹中 。 元数据文件必须采用由 MongoDB bsondump 工具所生成的相同格式。

    重要

    我们不建议在 MongoDB 服务器上使用自签名证书。 如果必须使用自签名证书,请使用连接字符串模式连接到服务器,并确保连接字符串有引号 ("")。

    &sslVerifyCertificate=false
    

    在无法使用 DNS 名称解析的情况下,还可使用 IP 地址。

    显示指定源详细信息的屏幕截图。

  2. 选择“保存” 。

指定目标详细信息

  1. 在“迁移目标详细信息”屏幕上,指定目标 Azure Cosmos DB 帐户的连接详细信息。 此帐户是适用于 MongoDB 的 Azure Cosmos DB API 的预配置的帐户(你要将 MongoDB 数据迁移到该帐户)。

    显示指定目标详细信息的屏幕截图。

  2. 选择“保存” 。

映射到目标数据库

  1. 在“映射到目标数据库” 屏幕上,映射源和目标数据库以进行迁移。

    如果目标数据库包含的数据库名称与源数据库的相同,则 Azure 数据库迁移服务默认会选择目标数据库。

    如果“创建”显示在数据库名称旁边,则表明 Azure 数据库迁移服务没有找到目标数据库,因此会为你创建该数据库。

    在迁移的这个时候,可以预配吞吐量。 在 Azure Cosmos DB 中,可在数据库级别预配吞吐量,也可为每个集合单独进行预配。 吞吐量以请求单位度量。 深入了解 Azure Cosmos DB 定价

    显示映射到目标数据库的屏幕截图。

  2. 选择“保存” 。

  3. 在“集合设置”屏幕上,展开集合列表,然后查看要迁移的集合的列表。

    Azure 数据库迁移服务会自动选择存在于源 MongoDB 实例上但不存在于目标 Azure Cosmos DB 帐户上的所有集合。 若要重新迁移已含数据的集合,需要在此窗格上明确选择集合。

    可以指定希望集合使用的 RU 数量。 Azure 数据库迁移服务建议使用根据集合大小设置的智能默认值。

    备注

    并行执行数据库迁移和收集。 如果有必要,可以使用 Azure 数据库迁移服务的多个实例加快运行速度。

    也可指定分片键来利用 Azure Cosmos DB 中的分区,以便优化可伸缩性。 请查看选择分片/分区键的最佳做法

    显示选择集合表的屏幕截图。

  4. 选择“保存” 。

  5. 在“迁移摘要”屏幕的“活动名称”文本框中指定迁移活动的名称。

    显示 nigration 摘要的屏幕截图。

运行迁移

选择“运行迁移”。 迁移活动窗口随即出现,活动状态为“未启动”。

显示活动状态的屏幕截图。

监视迁移

在迁移活动屏幕上选择“刷新”,以更新显示,直到迁移的状态显示为“已完成” 。

备注

可以选择“活动”,获取数据库级别和集合级别迁移指标的详细信息。

显示活动状态为“已完成”的屏幕截图。

验证 Azure Cosmos DB 中的数据

完成迁移后,可以检查你的 Azure Cosmos DB 帐户,验证是否已成功迁移所有集合。

显示在何处检查 Azure Cosmos DB 帐户,以验证所有集合是否已成功迁移的屏幕截图。

迁移后优化

将 MongoDB 数据库中存储的数据迁移到 MongoDB的 Azure Cosmos DB API 后,你可以连接到 Azure Cosmos DB 并管理数据。 还可以执行其他迁移后的优化步骤。 其中可能包括优化索引策略、更新默认一致性级别或者为 Azure Cosmos DB 帐户配置全局分发。 有关详细信息,请参阅迁移后的优化

后续步骤

Azure 数据库迁移指南中查看用于其他场景的迁移指南。