我们正在寻找一种解决方案,该解决方案使用DynamoDB表的最小读/写单元来执行完整备份,增量备份和还原操作。 备份应存储在AWS S3中(对其他备选方案开放)。我们想到了几个选项,例如:
1)使用python多处理和boto模块,我们能够执行完全备份和还原操作,它运行良好,但需要更多的DynamoDB读/写单元。
2)使用AWS Data Pipeline服务,我们能够执行完全备份和还原操作。
3)使用Dynamo Streams和kinesis Adapter / Dynamo Streams和Lambda函数,我们能够执行增量备份。
是否有其他替代方法可用于完全备份,增量备份和还原操作。主要的限制/需求是通过利用DynamoDb表的最小读/写单元来获得可扩展的解决方案。
答案 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/