

# DynamoDB 的时间点备份
<a name="Point-in-time-recovery"></a>

Amazon DynamoDB 时间点故障恢复（PITR）提供 DynamoDB 表数据的自动持续备份。时间点故障恢复（PITR）备份由 DynamoDB 完全管理，以每秒粒度提供长达 35 天的恢复点。使用时间点恢复，您不必担心创建、维护或计划按需备份。本部分概述在 DynamoDB 中此过程如何运行。

## 开始前的准备工作
<a name="Point-in-time-before-beginning"></a>

在 Amazon DynamoDB 表上启用时间点恢复 (PITR) 之前，请考虑以下事项：
+ 通过设置 `RecoveryPeriodinDays`，可以缩短进行连续备份的时间段。默认情况下，`RecoveryPeriodinDays` 为 35。但是，可以将其设置为 1 到 35 之间的任何值。缩短 `RecoveryPeriodinDays` 对 PITR 定价没有影响，因为价格基于表的大小和本地二级索引。
+ 如果对表禁用了时间点恢复并且稍后重新启用了它，则会重置可以恢复该表的开始时间。因此，您只能立即使用 `LatestRestorableDateTime` 还原该表。
+ 您可以对全局表的每个本地副本启用时间点恢复。在还原表时，备份将还原到不属于全局表的一部分的独立表。如果使用[全局表版本 2019.11.21（当前版）](GlobalTables.md)的全局表，则可以从还原的表中创建一个新的全局表。有关更多信息，请参阅 [DynamoDB 全局表工作原理](V2globaltables_HowItWorks.md)。
+ 还可以跨 AWS 区域还原您的 DynamoDB 表数据，以便在源表所在的其他区域中创建还原的表。可以在 AWS 商业区域、AWS 中国区域和 AWS GovCloud（美国）区域之间执行跨区域还原。只需为从源区域传输的数据以及在目标区域中还原为新表的操作付费。
+ AWS CloudTrail 记录时间点恢复的所有控制台和 API 操作以启用日志记录、持续监控和审核。有关更多信息，请参阅 [使用 AWS CloudTrail 记录 DynamoDB 操作日志](logging-using-cloudtrail.md)。

**Topics**
+ [开始前的准备工作](#Point-in-time-before-beginning)
+ [在 DynamoDB 中启用时间点恢复](PointInTimeRecovery_Howitworks.md)

# 在 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` 标准命名约定。

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