

# 在 DynamoDB 中启用时间点恢复
<a name="PointInTimeRecovery_Howitworks"></a>

Amazon DynamoDB 时间点恢复 (PITR) 提供 DynamoDB 表数据的自动备份。本部分概述在 DynamoDB 中此过程如何运行。

**注意**  
DynamoDB 根据每个 DynamoDB 表的大小（包括表数据和本地二级索引）收取 PITR 费用。更改恢复时段（例如，从 35 天更改为 1 天）并不会降低价格。无论您选择哪个恢复期，费用都保持不变。所配置的最大恢复期不会影响您开启 PITR 所支付的费用。为了确定您的备份费用，DynamoDB 会持续监控已开启 PITR 的表的大小。在您为每个表关闭 PITR 之前，您需要按照 PITR 使用量付费。

**Topics**
+ [启用时间点恢复](#howitworks_enabling)
+ [启用 PITR（控制台）](#howitworks-enable-pitr-console)
+ [启用 PITR（AWS CLI）](#howitworks-enable-pitr-cli)
+ [启用 PITR（CloudFormation）](#howitworks-enable-pitr-cfn)
+ [启用 PITR（API）](#howitworks-enable-pitr-api)
+ [恢复期](#howitworks-pitr-recovery-period)
+ [编辑 PITR](#howitworks-pitr-editing)
+ [在启用了 PITR 的情况下删除表](#howitworks-pitr-deleting-table)

## 启用时间点恢复
<a name="howitworks_enabling"></a>

您可以使用 AWS 管理控制台、AWS Command Line Interface (AWS CLI) 或 DynamoDB API 来启用时间点恢复。启用后，时间点恢复将提供持续备份，直到您明确将其关闭。

在启用时间点恢复后，您可以还原到 `EarliestRestorableDateTime` 和 `LatestRestorableDateTime` 之间的任何时间点。`LatestRestorableDateTime` 通常比当前时间早 5 分钟。有关更多信息，请参阅 [将 DynamoDB 表还原到某个时间点](PointInTimeRecovery.Tutorial.md)。

**注意**  
时间点恢复过程始终还原到新表。

## 启用 PITR（控制台）
<a name="howitworks-enable-pitr-console"></a>

**使用 DynamoDB 控制台启用 PITR**

1. 导航到 DynamoDB 控制台。

1. 从左侧导航栏中选择**表**，然后选择您的 DynamoDB 表。

1. 在**备份**选项卡中，对于**时间点故障恢复**选项，选择**编辑**。

1. 选择**开启时间点故障恢复**。

1. 为备份恢复期选择 1 到 35 天之间的值。这表示可以恢复连续备份的最大时间范围。

## 启用 PITR（AWS CLI）
<a name="howitworks-enable-pitr-cli"></a>

**注意**  
如果您在运行 AWS CLI 命令时收到错误，请参阅 [Troubleshoot AWS CLI errors](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-troubleshooting.html)。确保您使用最新的 AWS CLI 版本。

在开启了 **point-in-time-recovery-specification** 设置的情况下运行 [update-continuous-backups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/dynamodb/update-continuous-backups.html) 命令：

```
aws dynamodb update-continuous-backups \
--table-name Music \
--point-in-time-recovery-specification PointInTimeRecoveryEnabled=true,RecoveryPeriodInDays=35
```

## 启用 PITR（CloudFormation）
<a name="howitworks-enable-pitr-cfn"></a>

在开启了 `PointInTimeRecoverySpecification` 属性的情况下使用 [AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html) 资源：

```
Resources:
  iotCatalog:
    Type: AWS::DynamoDB::Table
      Properties:
      ...
      PointInTimeRecoverySpecification:
        PointInTimeRecoveryEnabled: true
        RecoveryPeriodInDays: 35
```

**请求语法示例：**

```
{
   "PointInTimeRecoverySpecification": { 
      "PointInTimeRecoveryEnabled": boolean,
      "RecoveryPeriodInDays: number
   },
   "TableName": "string"
}
```

## 启用 PITR（API）
<a name="howitworks-enable-pitr-api"></a>

在开启了 `PointInTimeRecoverySpecification` 参数的情况下运行 [UpdateContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContinuousBackups.html) API 操作。

**请求语法示例：**

```
{
   "PointInTimeRecoverySpecification": { 
      "PointInTimeRecoveryEnabled": boolean,
      "RecoveryPeriodInDays" : number
   },
   "TableName": "string"
}
```

**响应语法示例：**

```
{
   "ContinuousBackupsDescription": { 
      "ContinuousBackupsStatus": "string",
      "PointInTimeRecoveryDescription": { 
         "PointInTimeRecoveryStatus": "string",
         "EarliestRestorableDateTime": number,
         "RecoveryPeriodInDays": number,
         "LatestRestorableDateTime": number
      }
   }
}
```

**Python**

```
import boto3

dynamodb = boto3.client('dynamodb')

response = dynamodb.update_continuous_backups(
    TableName=<table_name>,
    PointInTimeRecoverySpecification={
        'PointInTimeRecoveryEnabled': True,
        'RecoveryPeriodInDays': 35
    }
)
```

## 恢复期
<a name="howitworks-pitr-recovery-period"></a>

可以将连续备份的恢复期设置为 1 到 35 天之间的任何数字。此 `RecoveryPeriodInDays` 决定了保持连续备份的时间段。例如，如果将此值设置为 30 天，则只能将表还原到过去 30 天的任何时间点。

**注意**  
DynamoDB 根据每个 DynamoDB 表的大小（包括表数据和本地二级索引）收取 PITR 费用。所配置的最大恢复期不会影响您开启 PITR 所支付的费用。有关定价的详细信息，请参阅 [DynamoDB 定价](https://aws.amazon.com/dynamodb/pricing/on-demand/)。

## 编辑 PITR
<a name="howitworks-pitr-editing"></a>

您可以编辑表上的 PITR 设置并更改恢复期。如果您更改恢复期并将其增加到高于先前设置的值，`EarliestRestorePoint` 并不会立即更改。由于恢复期是一个滚动时间窗口，因此 DynamoDB 将继续进行自动备份，直到达到延长后的新期限。如果您更改恢复期并将其缩短到低于先前设置的值，`EarliestRestorePoint` 将立即缩小以匹配您的恢复期，并且任何在新设置值范围之外的连续备份都将无法恢复。

## 在启用了 PITR 的情况下删除表
<a name="howitworks-pitr-deleting-table"></a>

删除已启用时间点恢复的表时，DynamoDB 将自动创建一个备份快照（称为*系统备份*），该备份快照将保留 35 天（无额外费用）。您可以使用系统备份，将已删除的表还原到删除点之前此表所处的状态。所有系统备份都遵循 *table-name*`$DeletedTableBackup` 标准命名约定。

**注意**  
启用了时间点故障恢复的表在删除之后，您可以使用系统备份将该表恢复到某个时间点。系统备份在删除表时创建，是在删除表那一刻表的快照。