azure - 如何使用 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 存储?
你能举一个具体实施的例子吗?
解决方案
这是想法:
不要为整个集合创建备份,而是为更改(增量)创建备份,并保存随时间发生的更改。稍后您可以实施将遍历增量文件的还原机制。
以下是实现作为一个概念的外观,但仅适用于您要求的备份机制:
这是专用的回购协议。我还添加了 Azure CLI 脚本,以帮助您在 Azure 租户中快速重现我的想法。
一般说明:
- 依赖项:
azure-storage, unix-timestamp, documentdb
- 我有一个时间触发功能。频率创建由日期时间戳命名的 blob。
- 我将上次导入时间存储在存储表中。
- 为了获得增量,我使用
_ts
CosmosDb 中任何文档的字段。
这种方法的好处:
- delta-s 更轻,导入/备份速度更快
- 您可以设置增量生成的频率
- 还原时可以看到不同状态的数据库
缺点:
- 您没有一个文件要恢复,但有很多
推荐阅读
- javascript - 实现加载微调器
- android - Flutter 如何让 uber 或 ola 像在谷歌地图上移动的汽车图标
- oracle - oracle 遵循什么标准来自动收集 12c 中用户模式表的统计信息
- git - 从 Firebase 下载源文件
- python - 从同一个 .proto 文件生成 Python 和 Go 代码 - 导入问题
- javascript - 带有 React useState 钩子的复选框表过滤器 - 将数组映射到过滤表
- java - ObjectMapper 的两个实例
- sql - 窗口函数 first_value 的意外行为
- javascript - 使用护照js保护节点js中的路由
- android - Android BiometricPrompt:无法解析符号 PromptInfo