我正在考虑将 AWS DynamoDB 用于我们正在构建的应用程序。我了解设置将数据从 DynamoDB 导出到 S3 的备份作业涉及使用 EMR 的数据管道。但我的问题是我是否需要担心在第一天设置备份作业?发生数据丢失的可能性有多大?
4 回答
DynamoDB 表数据复制在其他地方有多个用例:
(1) 每天在 S3 中创建一个备份,以便在意外删除数据或更糟糕的情况下删除表(代码错误?)
(2) 在 S3 中创建备份以成为分析工作流的起点。在 S3 中备份此数据后,您可以将其与您的 RDBMS 系统(RDS 或本地)或日志文件中的其他 S3 数据相结合。数据集成工作流可能涉及最终将 EMR 作业加载到 Redshift (ETL) 中以进行 BI 查询。或者直接将它们加载到 Redshift 中以执行更多 ELT 风格 - 因此在 Redshift 中发生转换
(3) 将数据(整个集合或子集)从一个表复制到另一个表(在同一区域内或另一个区域内)——因此可以对旧表进行垃圾收集,以控制增长和成本控制。这种表到表的副本也可以用作易于使用的备份表,以防出现特定区域的可用性问题。或者,使用此机制将数据从一个区域复制到另一个区域,以便从更靠近使用它的 DynamoDB 客户端应用程序的端点提供数据。
(4) 从 S3 定期恢复数据。可能作为一种将分析后数据加载回 DynamoDB 的方式,以便在具有高并发、低延迟要求的在线应用程序中提供服务。
AWS Data Pipeline 通过灵活的数据传输解决方案(在下面使用 EMR)帮助安排所有这些场景。
使用这些解决方案时需要注意的一点是,这不是时间点备份:因此在备份期间发生的对基础表的任何更改都可能不一致。
这真的很主观。海事组织你不应该“现在”担心他们。您还可以使用pipleline 以外的更简单的解决方案。也许这将是一个很好的起点。
在将 DynamoDB 作为我们的主要生产数据库运行了一年多之后,我可以说这是一次很棒的体验。没有数据丢失,也没有停机时间。我们唯一关心的是有时 SDK 行为不端和调整预置吞吐量。
我建议设置一个数据管道以每天备份到 S3 存储桶 - 如果您想真正安全的话。
Dynamo DB 本身可能非常可靠,但是没有人可以保护您免受自己的意外删除(如果您或您的同事错误地最终从控制台删除了一个表怎么办)。所以我建议每天设置一个备份 - 无论如何都不会花费这么多。
您可以告诉管道在备份进行时仅消耗大约 25% 的容量,这样您的真实用户就不会看到任何延迟。每个备份都是“完整的”(不是增量的),因此如果您担心存储,可以在某个定期间隔内删除一些旧备份。