你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本教程使用 MongoDB 本机工具将数据库从本地或云实例的 MongoDB 脱机(一次性)迁移到 Azure DocumentDB。 MongoDB 本机工具是一组二进制文件,便于对现有 MongoDB 实例进行数据操作。 本文档的重点在于使用 mongoexport/mongoimport 或mongodump/mongorestore 将数据从 MongoDB 实例中迁移出来。 由于本机工具使用连接字符串连接到 MongoDB,因此可以在任意位置运行这些工具。 原生工具可以是处理小型数据集的最简单解决方案,因为在这种情况下,总迁移时间不太重要。
先决条件
Azure 订阅服务
- 如果没有 Azure 订阅,请创建 一个免费帐户
现有的 Azure DocumentDB 群集
- 如果没有群集,请 创建新群集
- 计算机上安装的 MongoDB 本机工具。
Prepare
在开始迁移之前,请确保已准备好 Azure DocumentDB 帐户和现有的 MongoDB 实例进行迁移。
- MongoDB 实例(源)
- 完成预迁移评估以确定源实例和目标帐户之间是否存在不兼容和警告的列表。
- 确保 MongoDB 本机工具与现有 (源) MongoDB 实例的版本匹配。
- 如果 MongoDB 实例的版本与 Azure DocumentDB 不同,请安装 MongoDB 本机工具版本,并分别使用适用于 MongoDB 和 Azure DocumentDB 的相应工具版本。
- 添加具有
readWrite权限的用户,除非已存在。 最终将此凭据与 mongoexport 和 mongodump 工具一起使用。
- Azure DocumentDB (目标)
小窍门
建议在 MongoDB 实例所在的同一网络中运行这些工具,以避免进一步的防火墙问题。
选择适当的 MongoDB 本机工具
为脱机迁移选择正确的 MongoDB 本机工具时,需要考虑一些高级注意事项。
执行迁移
使用首选本机工具将集合从源 MongoDB 实例迁移到目标 Azure DocumentDB 帐户。 有关选择工具的详细信息,请参阅 迁移选项。
小窍门
如果你只是有一个小的 JSON 文件想要导入到 Azure DocumentDB,mongoimport 工具是快速导入数据的解决方案。
若要从源 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
将以前导出的文件导入目标 Azure DocumentDB 帐户。
mongoimport \ --file <filename>.json \ --type json \ --db <database-name> \ --collection <collection-name> \ --ssl \ --uri <target-connection-string>监视 mongoimport 的终端输出。 输出将在终端打印文本行,同时更新导入操作的状态。