

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

# 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 (US) 區域之間進行跨區域還原。您只需為從來源區域中傳輸出來的資料，以及還原為目標區域中的新資料表付費。
+ AWS CloudTrail 記錄所有主控台和 API 動作來進行時間點復原，以啟用日誌記錄、持續監控和稽核。如需更多詳細資訊，請參閱 [使用 記錄 DynamoDB 操作 AWS CloudTrail](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 資料表的大小計算 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`的標準命名慣例。

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