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

标签 azure azure-functions azure-cosmosdb

问题:

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

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

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

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

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

我的问题:

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

能举个具体实现的例子吗?

最佳答案

这个想法是这样的:

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

以下是实现的概念,但仅适用于您请求的备份机制:

enter image description here

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

一般描述:

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

这种方法的好处:

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

缺点:

  1. 您没有一个文件需要恢复,而是有很多文件

关于azure - 如何使用 Azure Function App 备份 Azure Cosmos DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52111269/

相关文章:

azure - 在 Azure 上创建新 VM 实例时,为什么 D1V2 实例不显示?

rest - 使用 oData 访问 Cosmos DB 表端点

Azure Functions 未显示在 Function App 中

azure-functions - 如何获取 Azure 服务总线触发的 Azure Function V3 背后的底层 MessageReceiver 引用

c# - 如果不存在则创建方法不可用

azure - 如何在 2 个 U-SQL 脚本之间传递变量

c# - 从 Azure Web 角色中,检查进程是否正在辅助角色中运行

c# - 计算来自两个Azure函数应用程序的两个服务总线主题之间的时间跨度指标

azure - 具有多个分区键的 Cosmos DB

azure - 为什么 RU 消耗高于预配置吞吐量与自动缩放最大吞吐量的比率?