使用 MongoDB 本机工具将 MongoDB 脱机迁移到 Azure DocumentDB

本教程使用 MongoDB 本机工具将数据库从本地或云实例的 MongoDB 脱机(一次性)迁移到 Azure DocumentDB。 MongoDB 本机工具是一组二进制文件,便于对现有 MongoDB 实例进行数据操作。 本文档的重点在于使用 mongoexport/mongoimport 或mongodump/mongorestore 将数据从 MongoDB 实例中迁移出来。 由于本机工具使用连接字符串连接到 MongoDB,因此可以在任意位置运行这些工具。 原生工具可以是处理小型数据集的最简单解决方案,因为在这种情况下,总迁移时间不太重要。

先决条件

  • Azure 订阅服务

    • 如果没有 Azure 订阅,请创建 试用版
  • 现有的 Azure DocumentDB 群集

Prepare

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

  • MongoDB 实例(源)
    • 完成预迁移评估,以确定源实例和目标帐户之间是否存在不兼容项和警告的列表。
    • 确保 MongoDB 本机工具与现有 (源) MongoDB 实例的版本匹配。
      • 如果 MongoDB 实例的版本与 Azure DocumentDB 不同,请安装 MongoDB 本机工具版本,并分别使用适用于 MongoDB 和 Azure DocumentDB 的相应工具版本。
    • 添加具有 readWrite 权限的用户,除非已存在。 最终将此凭据与 mongoexportmongodump 工具一起使用。
  • Azure DocumentDB (目标)

小窍门

建议在 MongoDB 实例所在的同一网络中运行这些工具,以避免进一步的防火墙问题。

选择适当的 MongoDB 本机工具

为脱机迁移选择正确的 MongoDB 本机工具时,需要考虑一些高级注意事项。

执行迁移

使用首选本机工具将集合从源 MongoDB 实例迁移到目标 Azure DocumentDB 帐户。 有关选择工具的详细信息,请参阅 迁移选项

小窍门

如果你只是有一个小的 JSON 文件想要导入到 Azure DocumentDB,mongoimport 工具是快速导入数据的解决方案。

  • mongoexport/mongoimport
  • mongodump/mongorestore
  1. 若要从源 MongoDB 实例导出数据,请打开终端并使用此处列出的三种方法中的任何一种。

    • 指定要连接到和导出 JSON 记录的 --host--username参数和 --password 参数。

      mongoexport \
          --host <hostname><:port> \
          --username <username> \
          --password <password> \
          --db <database-name> \
          --collection <collection-name> \
          --out <filename>.json
      
    • 通过添加 --query 参数导出 MongoDB 数据的子集。 此参数确保该工具仅导出与筛选器匹配的文档。

      mongoexport \
          --host <hostname><:port> \
          --username <username> \
          --password <password> \
          --db <database-name> \
          --collection <collection-name> \
          --query '{ "quantity": { "$gte": 15 } }' \
          --out <filename>.json
      
    • 从 Azure DocumentDB 导出数据。

      mongoexport \
          --uri <target-connection-string>
          --db <database-name> \
          --collection <collection-name> \
          --query '{ "quantity": { "$gte": 15 } }' \
          --out <filename>.json
      
  2. 将以前导出的文件导入目标 Azure DocumentDB 帐户。

    mongoimport \
        --file <filename>.json \
        --type json \
        --db <database-name> \
        --collection <collection-name> \
        --ssl \
        --uri <target-connection-string>
    
  3. 监视 mongoimport 的终端输出。 输出将在终端打印文本行,同时更新导入操作的状态。

后续步骤