问题:
我尝试为 Azure Cosmos DB 构建一个备份解决方案,该解决方案定期为我们提供数据库转储,以防我们以编程方式损坏数据库中的数据。 问题是 Azure 德国尚不存在数据工厂,我们不能依赖 Azure 的自动备份(仅提供 8 小时)。 我不想在云之外使用任何额外的应用程序。
到目前为止我发现了什么:
https://www.npmjs.com/package/mongo-dump-stream
Mongo Dump Stream 应该能够连接到我们的数据库并从中读取数据。
我的想法是在 Azure Functions 中使用此 npm 并将转储结果发送到 blob 存储。
我的问题:
如何将结果发送到 Blob 存储?
能举个具体实现的例子吗?
最佳答案
这个想法是这样的:
不要为整个集合创建备份,而是为更改(增量)创建备份,并保存随时间推移发生的更改。稍后您可以实现恢复机制来遍历增量文件。
以下是实现的概念,但仅适用于您请求的备份机制:
Here是专门的仓库。我还添加了 Azure CLI 脚本来帮助您在 Azure 租户中快速重现我的想法。
一般描述:
- 依赖项:
azure-storage、unix-timestamp、documentdb
- 我有一个时间触发的功能。该频率创建由日期时间戳命名的 blob。
- 我将上次导入时间存储在存储表中。
- 为了获取增量,我使用 CosmosDb 中任何文档的
_ts
字段。
这种方法的好处:
- delta-s 更轻,导入/备份速度更快
- 您可以设置增量生成的频率
- 恢复时可以看到数据库处于不同的状态
缺点:
- 您没有一个文件需要恢复,而是有很多文件
关于azure - 如何使用 Azure Function App 备份 Azure Cosmos DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52111269/