如何使用最少的读/写单元执行AWS DynamoDB备份和还原操作?

时间:2017-02-01 07:14:02

标签: python-2.7 amazon-web-services amazon-dynamodb amazon-dynamodb-streams

我们正在寻找一种解决方案,该解决方案使用DynamoDB表的最小读/写单元来执行完整备份,增量备份和还原操作。 备份应存储在AWS S3中(对其他备选方案开放)。我们想到了几个选项,例如:

1)使用python多处理和boto模块,我们能够执行完全备份和还原操作,它运行良好,但需要更多的DynamoDB读/写单元。

2)使用AWS Data Pipeline服务,我们能够执行完全备份和还原操作。

3)使用Dynamo Streams和kinesis Adapter / Dynamo Streams和Lambda函数,我们能够执行增量备份。

是否有其他替代方法可用于完全备份,增量备份和还原操作。主要的限制/需求是通过利用DynamoDb表的最小读/写单元来获得可扩展的解决方案。

2 个答案:

答案 0 :(得分:1)

选项#1和#2几乎相同 - 都在DynamoDB表上执行Scan操作,从而消耗最大数量。 RCUs。

选项#3将节省RCU,但恢复成为一项挑战。如果记录多次更新,您将在S3备份中拥有多个副本,因为记录更新将在DynamoDB流中出现两次。所以,在恢复时你需要选择最新的记录。您还需要正确处理已删除的记录。

如果恢复频率较低,则应选择选项#3,在这种情况下,您可以在需要时对增量备份运行EMR作业。否则,您应该选择#1或#2。

答案 1 :(得分:0)

按需备份是DynamoDB服务内置的功能(通过API,AWS管理控制台和CLI可以像往常一样访问),允许您在某个时间点对表进行完整备份。

此任务对表的性能或可用性没有影响。所有备份都会自动加密,编目,轻松发现并保留,直到您明确删除它们为止。

此外,您可以随时将这些备份还原到新表。

与数据一起,备份中包含以下内容:

Global secondary indexes (GSIs)
Local secondary indexes (LSIs)
Streams
Provisioned read and write capacity

以下内容未包含在备份中:

Auto scaling policies
AWS Identity and Access Management (IAM) policies
Amazon CloudWatch metrics and alarms
Tags
Stream settings
Time To Live (TTL) settings

我在博客上发布了更多信息和演练:https://www.abhayachauhan.com/2017/12/dynamodb-scheduling-on-demand-backups/