Azure Cosmos DB:将集合克隆到另一个数据库

Posted

技术标签:

【中文标题】Azure Cosmos DB:将集合克隆到另一个数据库【英文标题】:Azure Cosmos DB: Clone collection to another database 【发布时间】:2018-12-13 15:06:55 【问题描述】:

目前我正在尝试将 cosmos db 集合从一个数据库克隆到 cosmos db 中的另一个数据库。 cosmos db的API设置为Mongo API。

我已经尝试过使用 Azure 数据工厂,但目前似乎不支持 Mongo API。

有没有人知道如何在效率、自动化和性能方面做到这一点?

感谢任何想法。

【问题讨论】:

【参考方案1】:

我使用mongodumpmongorestore 复制我的数据库(安装了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

注意:在导入之前,我还必须增加集合的吞吐量,否则会遇到速率限制错误。如果您已在数据库级别设置吞吐量,则可能需要更改。

【讨论】:

【参考方案2】:

您可以使用 Microsoft 建议的数据 Migration tool 来做同样的事情。

没有办法备份和导入 cosmosdb。

EDIT:

使用新的Cosmic Clone 工具,您可以使用数据/存储过程/触发器/udf 等进行克隆/备份。同时阅读my blog

【讨论】:

我忘了说我每天都需要这个作为自动化任务。该软件似乎无法在自动化环境中使用。 在这种情况下,您需要使用 api 编写函数或 Web 作业来完成此操作 我猜是这样......希望有什么东西可以开箱即用:) 您好 Sajeetharan,我使用迁移工具查找了您的想法。这在此设置中不起作用,如文档所述:“数据迁移工具当前不支持将 Azure Cosmos DB MongoDB API 作为源或目标。” @F*** 现在您可以使用 cosmosdb 进行备份检查更新的答案【参考方案3】:

我已经尝试过使用 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 后台运行。

希望对您有所帮助。如有任何疑问,请随时告诉我。

【讨论】:

我已经这样做了,但迁移过程似乎破坏了我的收藏。作业完成没有错误,但从 Azure 门户以及 Robo 3T 无法再访问该集合... 使用“跳过不兼容的行并记录”错误..关于容错。

以上是关于Azure Cosmos DB:将集合克隆到另一个数据库的主要内容,如果未能解决你的问题,请参考以下文章

azure cosmos db 在 mongodb.com 中创建了集合

如何从 Databrick/PySpark 覆盖/更新 Azure Cosmos DB 中的集合

创建 Azure Cosmos DB 帐户数据库和集合

Azure Cosmos DB 请求存储过程的分区键

如何在 Azure Cosmos DB 的一个查询中选择多个聚合值

Azure Cosmos DB 分区键 - 主键是不是可接受?