使用 MongoDB 本机工具将 MongoDB 脱机迁移到 Azure Cosmos DB for MongoDB vCore
适用对象: MongoDB vCore
在本教程中,可以使用 MongoDB 本机工具将数据库从 MongoDB 的本地或云实例脱机(一次性)迁移到 Azure Cosmos DB for MongoDB vCore。 MongoDB 本机工具是一组二进制文件,有助于对现有 MongoDB 实例进行数据操作。 此文档的重点是使用 mongoexport/mongoimport 或 mongodump/mongorestore 将数据从 MongoDB 实例中迁移出来 。 由于本机工具使用连接字符串连接到 MongoDB,因此可以在任意位置运行这些工具。 对于不考虑总迁移时间的小型数据集,本机工具可能是最简单的解决方案。
先决条件
- 现有的 Azure Cosmos DB for MongoDB vCore 群集。
- 如果你没有 Azure 订阅,请创建一个帐户。
- 如果有现有 Azure 订阅,请创建新的 Azure Cosmos DB for MongoDB vCore 群集。
- 计算机上已安装 MongoDB 本机工具。
准备
在开始迁移之前,请确保已准备好 Azure Cosmos DB for MongoDB 帐户和用于迁移的现有 MongoDB 实例。
- MongoDB 实例(源)
- 完成预迁移评估以确定源实例和目标帐户之间是否存在不兼容和警告的列表。
- 请确保你的 MongoDB 本机工具版本与现有的(源)MongoDB 实例匹配。
- 如果 MongoDB 实例的版本与 Azure Cosmos DB for MongoDB vCore 的版本不同,则请安装这两个 MongoDB 本机工具版本,并分别为 MongoDB 和 Azure Cosmos DB for MongoDB vCore 使用适当的工具版本。
- 添加具有
readWrite
权限的用户,除非已存在这样的用户。 最终将此凭据与 mongoexport 和 mongodump 工具配合使用。
- Azure Cosmos DB for MongoDB vCore(目标)
- 收集 Azure Cosmos DB for MongoDB vCore 帐户凭据。
- 配置 Azure Cosmos DB for MongoDB vCore 上的防火墙设置。
提示
建议在 MongoDB 实例所在的同一网络中运行这些工具,以避免进一步的防火墙问题。
选择适当的 MongoDB 本机工具
为脱机迁移选择正确的 MongoDB 本机工具时,需要考虑一些高级注意事项。
执行迁移
使用首选本机工具将集合从源 MongoDB 实例迁移到目标 Azure Cosmos DB for MongoDB vCore 帐户。 有关选择工具的详细信息,请参阅本机 MongoDB 工具
提示
如果只想要将小型 JSON 文件导入 Azure Cosmos DB for MongoDB vCore,则 mongoimport 工具是用于引入数据的快速解决方案。
- mongoexport/mongoimport
- mongodump/mongorestore
若要从源 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 Cosmos DB for MongoDB vCore 导出数据。
mongoexport \ --uri <target-connection-string> --db <database-name> \ --collection <collection-name> \ --query '{ "quantity": { "$gte": 15 } }' \ --out <filename>.json
将以前导出的文件导入目标 Azure Cosmos DB for MongoDB vCore 帐户。
mongoimport \ --file <filename>.json \ --type json \ --db <database-name> \ --collection <collection-name> \ --ssl \ --uri <target-connection-string>
监视 mongoimport 的终端输出。 输出会向终端打印文本行,并显示导入操作的最新状态。