DynamoDB - 如何进行增量备份?

Niz*_*een 7 backup amazon-dynamodb

我正在使用具有针对应用程序用例优化的密钥和吞吐量的DynamoDB表.为了支持其他临时管理和报告用例,我想在S3中保留一个完整的备份(一天的备份是可以的).同样,我无法扫描整个DynamoDB表来进行备份.我所拥有的钥匙不足以找出什么是"新".如何进行增量备份?我是否必须修改我的DynamoDB架构,或者只是添加额外的表来执行此操作?任何最佳做法?

更新: DynamoDB Streams解决了这个问题.

DynamoDB Streams捕获任何DynamoDB表中按时间排序的项级修改序列,并将此信息存储在日志中长达24小时.应用程序可以访问此日志,并以近乎实时的方式查看修改前后出现的数据项.

Ste*_*ood 6

我看到两个选择:

  1. 生成当前快照.您必须从表中读取这样做,您可以以非常慢的速率执行此操作以保持在容量限制之下(扫描操作).然后,在一段时间内保持内存中的更新列表.你可以将它们放在另一个表中,但是你也必须阅读它们,这可能会花费同样多的钱.这个时间间隔可以是一分钟,10分钟,一小时,如果你的应用程序退出,你会感到很舒服.然后,定期从S3获取快照,在快照上重播这些更改,并上载新快照.我不知道你的数据集有多大,所以这可能不太实际,但我已经看到这对于高达1-2GB的数据集非常成功.

  2. 每天使用完整扫描添加读取吞吐量并备份数据.你说你负担不起,但是你不清楚你是否意味着支付容量,或者扫描会耗尽所有容量而应用程序会开始失败.从DynamoDB中提取数据的唯一方法是读取它,强烈或最终一致.如果备份是您业务需求的一部分,那么我认为您必须确定它是否值得.您可以通过检查ConsumedCapacityUnits结果中的属性来自行调整读数."扫描"操作具有"限制"属性,可用于限制每个操作中读取的数据量.扫描还使用最终一致的读取,这是强一致读取的一半.