首页 > 解决方案 > 如何使用 Azure Function App 备份 Azure Cosmos DB

问题描述

问题:

我尝试为 Azure Cosmos DB 构建一个备份解决方案,它会定期为我们提供 DB 转储,以防我们以编程方式损坏数据库中的数据。问题是 Azure 德国(尚)不存在数据工厂,我们不能依赖 Azure 的自动备份(仅 8 小时可用)。我不想在云之外使用任何额外的应用程序。

到目前为止我发现了什么:

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

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

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

我的问题:

如何将结果发送到 blob 存储?

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

标签: azureazure-functionsazure-cosmosdb

解决方案


这是想法:

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

以下是实现作为一个概念的外观,但仅适用于您要求的备份机制:

在此处输入图像描述

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

一般说明:

  1. 依赖项:azure-storage, unix-timestamp, documentdb
  2. 我有一个时间触发功能。频率创建由日期时间戳命名的 blob。
  3. 我将上次导入时间存储在存储表中。
  4. 为了获得增量,我使用_tsCosmosDb 中任何文档的字段。

这种方法的好处:

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

缺点:

  1. 您没有一个文件要恢复,但有很多

推荐阅读