Amazon DynamoDB
开发人员指南 (API 版本 2012-08-10)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使 DynamoDB 表还原到某个时间点

Amazon DynamoDB 时间点恢复 (PITR) 提供 DynamoDB 表数据的持续备份。您可以使用 DynamoDB 控制台或 AWS Command Line Interface (AWS CLI) 将表还原到某个时间点。

如果要使用 AWS CLI,您必须先配置它。有关更多信息,请参阅访问 DynamoDB

使表还原到某个时间点 (控制台)

以下示例演示如何使用 DynamoDB 控制台将名为 MusicCollection 的现有表还原到某个时间点。

注意

此过程假定您已启用时间点恢复。要为 MusicCollection 表启用它,请在 Overview (概述) 选项卡上的 Table details (表详细信息) 部分中,为 Point-in-time recovery (时间点恢复) 选择 Enable (启用)

  1. 登录 AWS 管理控制台 并通过以下网址打开 DynamoDB 控制台:https://console.amazonaws.cn/dynamodb/

  2. 在控制台左侧的导航窗格中,选择 Tables (表)

  3. 在表的列表中,选择 MusicCollection 表。

  4. MusicCollection 表的 Backups (备份) 选项卡上的 Point-in-time recovery (时间点恢复) 部分中,选择 Restore to point-in-time (还原到时间点)

  5. 对于新表名称,输入 MusicCollectionMinutesAgo

    注意

    您可以排除在创建的新还原表中生成二级索引。

  6. 要确认可还原时间,请将还原日期和时间设置为最晚还原日期。然后选择 Restore table (还原表) 来启动还原过程。

    注意

    您可以还原到最早还原日期最晚还原日期之间的任何时间点。DynamoDB 使您的表数据还原到基于选定的日期和时间 (day:hour:minute:second) 的状态。

    正在还原的表显示状态为 Restoring (正在还原)。还原过程完成后,MusicCollection 表的状态更改为 Active (活动)

使表还原到某个时间点 (AWS CLI)

以下过程演示如何使用 AWS CLI 将名为 MusicCollection 的现有表还原到某个时间点。

注意

此过程假定您已启用时间点恢复。要为 MusicCollection 表启用它,请运行以下命令。

aws dynamodb update-continuous-backups \ --table-name MusicCollection \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
  1. 通过使用 MusicCollection 命令来确认已为 describe-continuous-backups 表启用时间点恢复。

    aws dynamodb describe-continuous-backups \ --table-name MusicCollection

    已启用持续备份 (在创建表时自动启用) 和时间点恢复。

    { "ContinuousBackupsDescription": { "PointInTimeRecoveryDescription": { "PointInTimeRecoveryStatus": "ENABLED", "EarliestRestorableDateTime": 1519257118.0, "LatestRestorableDateTime": 1520018653.01 }, "ContinuousBackupsStatus": "ENABLED" } }
  2. 使表还原到某个时间点。在此示例中,MusicCollection 表还原到 LatestRestorableDateTime (~5 分钟前)。

    aws dynamodb restore-table-to-point-in-time \ --source-table-name MusicCollection \ --target-table-name MusicCollectionMinutesAgo \ --use-latest-restorable-time

    注意

    您还可以还原到特定时间点。为此,请运行使用 --restore-date-time 参数的命令,并指定时间戳。您可以指定最近 35 天内的任何时间点。例如,以下命令使表还原到 EarliestRestorableDateTime

    aws dynamodb restore-table-to-point-in-time \ --source-table-name MusicCollection \ --target-table-name MusicCollectionEarliestRestorableDateTime \ --no-use-latest-restorable-time \ --restore-date-time 1519257118.0

    在还原到特定时间点时,指定 --no-use-latest-restorable-time 参数是可选的。

  3. 使用自定义表设置将表还原到某个时间点。在此示例中,MusicCollectionBackup 还原 MusicCollection 表:

    注意

    如果您选择排除在新的还原表上生成某些或所有二级索引,则还原可以更快且更具成本效益。

    aws dynamodb restore-table-to-point-in-time \ --target-table-name MusicCollection \ --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/backup/01489173575360-b308cd7d \ --global-secondary-indexes-override '[]' --local-secondary-indexes-override '[]'

    您还可以选择有选择地包括二级索引列表:

    注意

    提供的二级索引应与现有索引匹配。还原时无法创建新索引。

    aws dynamodb restore-table-to-point-in-time \ --target-table-name MusicCollection \ --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/backup/01489173575360-b308cd7d \ --local-secondary-indexes-override '[{"IndexName":"singers-index","KeySchema":[{"AttributeName":"Singer","KeyType":"HASH"}],"Projection":{"ProjectionType":"ALL"}}]'

    您可以选择覆盖结算表的计费方式和/或预配置的吞吐量:

    aws dynamodb restore-table-to-point-in-time \ --target-table-name MusicCollection \ --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/backup/01489173575360-b308cd7d \ --billing-mode-override PAY_PER_REQUEST

    您可以组合使用不同的替代方式。例如,使用单个全局二级索引并且同时更改预配置吞吐量:

    aws dynamodb restore-table-to-point-in-time \ --target-table-name MusicCollection \ --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/backup/01489173575360-b308cd7d \ --billing-mode-override PROVISIONED \ --provisioned-throughput-override ReadCapacityUnits=100,WriteCapacityUnits=100 \ --global-secondary-index-override '[{"IndexName":"singers-index","KeySchema":[{"AttributeName":"Id","KeyType":"HASH"}],"Projection":{"ProjectionType":"ALL"},"ProvisionedThroughput":{"ReadCapacityUnits": 100,"WriteCapacityUnits": 100}}]'

要验证还原,请使用 describe-table 命令来描述 MusicCollectionEarliestRestorableDateTime 表:

aws dynamodb describe-table --table-name MusicCollectionEarliestRestorableDateTime

正在还原的表显示状态为 Creating (正在创建),并且正在还原为 true。还原过程完成后,MusicCollectionEarliestRestorableDateTime 表的状态更改为活动

重要

正在还原时,请勿修改或删除授予 IAM 实体(例如,用户、组或角色)执行还原的权限的 AWS Identity and Access Management (IAM) 策略。否则,可能会出现意外行为。例如,假设您在还原表时删除了对该表的写入权限。在这种情况下,底层 RestoreTableToPointInTime 操作将无法向表中写入任何还原的数据。涉及有关访问目标还原表的源 IP 限制的 IAM 策略也会类似地导致问题。

您只能在还原操作完成之后修改或删除权限。