PointInTimeRecoveryUnavailableException
TL;DR — 这张源表没有启用时间点恢复,因此没有可供恢复的连续备份历史。现在就启用 PITR(UpdateContinuousBackups)——恢复窗口从那一刻开始——而对于此前的任何东西,如果你有按需备份就从中恢复。
含义
PointInTimeRecoveryUnavailableException: Point in time recovery has not
yet been enabled for this source table.PITR 是逐表选择加入的。在它开启之前,DynamoDB 不保留连续变更历史,而 RestoreTableToPointInTime 无从重建——无论表已经存在多久。这是一个配置缺口,而非瞬时错误;重试不会改变答案。
为什么会发生
- 从未启用 PITR——在创建表时未显式打开它,它默认是关闭的。
- 一张新表漏了清单——从一个不设置
PointInTimeRecoverySpecification的模板复制来的基础设施代码。 - 表名错误——你在恢复
orders,但 PITR 是在orders-prod上启用的(或反之),或者表位于另一个区域。
如何修复
确认表的备份状态:
aws dynamodb describe-continuous-backups --table-name orders # PointInTimeRecoveryStatus: DISABLED启用 PITR——保护立即开始累积,恢复窗口从现在增长到配置的恢复期:
aws dynamodb update-continuous-backups --table-name orders \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=true用另一种方式恢复今天的数据——PITR 无法追溯地回到过去。如果存在一个按需备份,就
RestoreTableFromBackup它;否则当前的表内容就是你所拥有的。把 PITR 烘焙进表创建——在你的 IaC 中为每张生产表设置它,让这个缺口不会复发,并记住一张_恢复出来的_表也不会继承 PITR——在新表上重新启用它。
在决定每张表的恢复有多重要之前,先看看它们里面有什么——DynoTable 桌面应用给你一个跨账户和区域的视图,而 DynamoDB 定价计算器会为连续备份的存储成本给出一个数字。
相关错误
- InvalidRestoreTimeException——PITR 开启了,但请求的时间在窗口之外。
- Export requires PITR——表导出也需要 PITR。
- BackupNotFoundException
- 学习:Backups & point-in-time recovery
References
- RestoreTableToPointInTime — Amazon DynamoDB API Reference
- UpdateContinuousBackups — Amazon DynamoDB API Reference
- Point-in-time recovery for DynamoDB — Amazon DynamoDB Developer Guide
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。