我正在考虑将AWS DynamoDB用于我们正在构建的应用程序。据我所知,设置一个将数据从DynamoDB导出到S3的备份作业涉及一个带有EMR的数据管道。但我的问题是,我是否需要担心在第1天设置备份作业?数据丢失的可能性有多大?
答案 0 :(得分:2)
这是非常主观的。 IMO你现在不应该担心它们。 您还可以使用更简单的解决方案other than pipleline。也许这将是一个很好的起点。
将DynamoDB作为我们的主要生产数据库运行了一年多之后,我可以说这是一次很棒的体验。没有数据丢失,也没有停机时间。我们唯一关心的事情是SDK有时会行为不端并调整预配置的吞吐量。
答案 1 :(得分:2)
在其他地方有多个用例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)帮助安排所有这些方案。
使用这些解决方案时需要注意的是,这不是时间点备份:因此,备份期间发生的基础表的任何更改都可能不一致。
答案 2 :(得分:1)
答案 3 :(得分:0)
我建议设置一个数据管道,每天备份到一个S3存储桶 - 如果你想要真正安全。
Dynamo数据库本身可能非常可靠,但是没有人可以保护您免受意外删除(如果您或您的同事错误地从控制台删除了一个表,那该怎么办)。所以我建议每天设置一个备份 - 它没有任何成本这么多。
您可以告诉管道在备份过程中只消耗25%的容量,这样您的真实用户就不会看到任何延迟。每个备份都是“完整”(非增量),因此在某些定期间隔中,如果您担心存储,则可以删除一些旧备份。