【发布时间】:2018-12-13 15:06:55
【问题描述】:
目前我正在尝试将 cosmos db 集合从一个数据库克隆到 cosmos db 中的另一个数据库。 cosmos db的API设置为Mongo API。
我已经尝试过使用 Azure 数据工厂,但目前似乎不支持 Mongo API。
有没有人知道如何在效率、自动化和性能方面做到这一点?
感谢任何想法。
【问题讨论】:
标签: mongodb azure azure-cosmosdb
目前我正在尝试将 cosmos db 集合从一个数据库克隆到 cosmos db 中的另一个数据库。 cosmos db的API设置为Mongo API。
我已经尝试过使用 Azure 数据工厂,但目前似乎不支持 Mongo API。
有没有人知道如何在效率、自动化和性能方面做到这一点?
感谢任何想法。
【问题讨论】:
标签: mongodb azure azure-cosmosdb
我使用mongodump 和mongorestore 复制我的数据库(安装了mongodb 版本4.0.9)。在 windows 命令行中,我从我的 mongodb bin 目录(在我的情况下为 c:\Program Files\MongoDB\Server\4.0\bin)运行了以下命令。
这会将数据库中的所有集合(包括索引)复制到指定的/out 目录作为.json 文件。
mongodump.exe /uri:URI /out:A_DIRECTORY_TO_DUMP_TO
然后我运行以下命令以获取/out 目录中的所有内容并将其写入目标数据库:
mongorestore.exe /uri:URI /dir:DIRECTORY_TO_RESTORE_FROM
注意:在导入之前,我还必须增加集合的吞吐量,否则会遇到速率限制错误。如果您已在数据库级别设置吞吐量,则可能需要更改。
【讨论】:
您可以使用 Microsoft 建议的数据 Migration tool 来做同样的事情。
没有办法备份和导入 cosmosdb。
EDIT:
使用新的Cosmic Clone 工具,您可以使用数据/存储过程/触发器/udf 等进行克隆/备份。同时阅读my blog。
【讨论】:
我已经尝试过使用 Azure 数据工厂,但它看起来像这样 目前还不支持 Mongo API。
实际上,Cosmos DB Mongo API 和 SQL API 都属于 Azure Cosmos DB 服务。因此,您仍然可以在 azure 数据工厂中为您的数据库创建 cosmos db 链接服务和数据集。
然后您可以创建copy activity 将数据从一个集合导入到另一个集合。
如果您想将其作为自动化任务,我建议使用以下两种方式来运行复制活动。
1.Azure Time Trigger Function.
2.Web job 在 Azure Web App 后台运行。
希望对您有所帮助。如有任何疑问,请随时告诉我。
【讨论】: