

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# DynamoDB 的時間點復原
<a name="PointInTimeRecovery_Howitworks"></a>

Amazon DynamoDB 時間點復原 (PITR) 可自動備份 DynamoDB 資料表的資料。本章節將概要說明該過程如何在 DynamoDB 中運作。

**注意**  
根據每個 DynamoDB 資料表的大小計算 PITR 的 DynamoDB 費用，包括資料表資料和本機次要索引。變更復原時段 (例如，從 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 啟用point-in-time復原。啟用後，時間點復原會提供連續備份，直到您明確表示將其關閉。

在啟用時間點復原之後，您可以還原到 `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 命令時收到錯誤，請參閱[故障診斷 AWS CLI 錯誤](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 資料表的大小計算 PITR 的 DynamoDB 費用，包括資料表資料和本機次要索引。設定的最長復原期間不會影響您開啟 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 天 (無需額外費用)。你可以使用系統備份將已刪除的資料表還原到刪除之前的狀態。所有的系統備份都遵循*資料表-名稱*`$DeletedTableBackup`的標準命名慣例。

**注意**  
刪除已啟用時間點復原的資料表後，您可以使用系統還原，將該資料表還原到單一時間點。系統備份將在刪除資料表時建立，並且是在刪除資料表之前資料表的快照。