如何使用Azure Function App备份Azure Cosmos DB

时间:2018-08-31 08:18:08

标签: azure azure-functions azure-cosmosdb

问题:

我尝试为Azure Cosmos DB构建备份解决方案,以便在我们以编程方式破坏数据库中数据的情况下,定期为我们提供数据库转储。 问题在于,Azure德国尚未(现在)存在Data Factory,并且我们不能依赖Azure的自动备份(仅可使用8个小时)。 我不想在云之外使用任何其他应用程序。

我到目前为止发现的内容:

https://www.npmjs.com/package/mongo-dump-stream

Mongo Dump Stream应该能够连接到我们的数据库并从中读取数据。

我的想法是在Azure Functions中使用此npm并将转储的结果发送到blob存储。

我的问题:

如何将结果发送到Blob存储区?

您能举一个具体实施的例子吗?

1 个答案:

答案 0 :(得分:2)

这里是个主意:

不要为整个集合创建备份,而要为更改(增量)创建备份,并保存随时间推移发生的更改。稍后,您可以实现还原机制,以遍历增量文件。

以下是实现的概念,但仅针对您请求的备份机制:

enter image description here

Here是专用的仓库。我还添加了Azure CLI脚本,以帮助您在Azure租户中快速重现我的想法。

概述:

  1. 依赖关系:azure-storage, unix-timestamp, documentdb
  2. 我有一个时间触发功能。频率会创建以日期时间戳记命名的斑点。
  3. 我将上次导入时间存储在存储表中。
  4. 要获取增量,我使用CosmosDb中任何文档的_ts字段。

此方法的优点:

  1. delta-s更轻巧,导入/备份速度更快
  2. 您可以设置增量生成的频率
  3. 还原时可以看到处于不同状态的数据库

缺点:

  1. 您没有要还原的单个文件,但是要还原许多