

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

# 還原 DynamoDB 資料表至某個時間點
<a name="PointInTimeRecovery.Tutorial"></a>

Amazon DynamoDB 時間點復原 (PITR) 可持續備份 DynamoDB 資料表的資料。您可使用 DynamoDB 主控台或 AWS Command Line Interface (AWS CLI)，以將資料表還原至某個時間點。時間點復原過程會還原到新資料表。

如果您想要使用 AWS CLI，您必須先進行設定。如需詳細資訊，請參閱[存取 DynamoDB](AccessingDynamoDB.md)。

**Topics**
+ [

## 還原 DynamoDB 資料表至某個時間點 (主控台)
](#restoretabletopointintime_console)
+ [

## 還原資料表至某個時間點 (AWS CLI)
](#restorepointintime_cli)

## 還原 DynamoDB 資料表至某個時間點 (主控台)
<a name="restoretabletopointintime_console"></a>

以下範例示範如何使用 DynamoDB 主控台將名為 `Music` 的現有資料表還原至某個時間點。

**注意**  
此程序假設您已經啟用時間點復原。若要啟用 `Music` 資料表，在 **Backups** (備份)索引標籤的 **Point-in-time recovery (PITR)** (時間點復原) 區段中，選擇**Edit** (編輯)，然後勾選 **Enable point-in-time-recovery** (啟用時間點復原)。

**還原資料表至某個時間點**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) 開啟 DynamoDB 主控台。

1. 在主控台左側的導覽窗格中，選擇 **Tables** (資料表)。

1. 在資料表清單中，選擇 `Music` 資料表。

1. 在 `Music` 資料表 **Backups** (備份) 索引標籤上的 **Point-in-time recovery** (時間點復原) 區段，選擇 **Restore** (還原)。

1. 輸入 **MusicMinutesAgo** 做為新資料表的名稱。
**注意**  
您可以將資料表還原至與來源資料表所在的相同 AWS 區域或不同區域。您也可以阻止在還原的資料表上建立次要索引。此外，您可以指定不同的加密模式。

1. 若要確認可還原時間，請將還原日期和時間設為 **Earliest** (最近)。然後選擇 **Restore** (還原) 啟動還原程序。

   正在還原的資料表會顯示為 **Restoring (正在還原)** 狀態。還原程序完成後，`MusicMinutesAgo` 資料表的狀態會變更為 **Active** (作用中)。

## 還原資料表至某個時間點 (AWS CLI)
<a name="restorepointintime_cli"></a>

下列程序說明如何使用 AWS CLI 將名為 的現有資料表還原`Music`至某個時間點。

**注意**  
此程序假設您已經啟用時間點復原。若要針對 `Music` 資料表啟用程序，請執行下列命令。  

```
aws dynamodb update-continuous-backups \
    --table-name Music \
    --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
```



**還原資料表至某個時間點**

1. 使用 `Music` 命令以確認為 `describe-continuous-backups` 資料表啟用了時間點復原。

   ```
   aws dynamodb describe-continuous-backups \
       --table-name Music
   ```

   連續備份 (在建立資料表時自動啟用) 和時間點復原已啟用。

   ```
   {
       "ContinuousBackupsDescription": {
           "PointInTimeRecoveryDescription": {
               "PointInTimeRecoveryStatus": "ENABLED", 
               "EarliestRestorableDateTime": 1519257118.0, 
               "LatestRestorableDateTime": 1520018653.01
           }, 
           "ContinuousBackupsStatus": "ENABLED"
       }
   }
   ```

1. 還原資料表至某個時間點。在本例中，`Music` 資料表會還原至相同 AWS 區域的 `LatestRestorableDateTime` (\$15 分鐘前)。

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time
   ```
**注意**  
 您也可還原至特定時間點。若要執行此作業，請使用 `--restore-date-time` 引數執行該命令，並指定時間戳記。您可以指定在設定的復原期間內的任何時間點，這可以設定為 1 到 35 天之間的任何值。例如，下列命令可復原資料表至 `EarliestRestorableDateTime`。  

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicEarliestRestorableDateTime \
       --no-use-latest-restorable-time \
       --restore-date-time 1519257118.0
   ```
 當復原到特定時間點時，指定 `--no-use-latest-restorable-time` 引數是選擇性的。

1. 利用自訂的資料表設定，將資料表還原至某個時間點。在此案例中，`Music` 資料表會還原至 `LatestRestorableDateTime` (\$15 分鐘以前)。

   您可以為還原的資料表指定不同的加密模式，如下所示。
**注意**  
`sse-specification-override` 參數採用的數值與 `CreateTable` 命令中使用的 `sse-specification-override` 參數相同。如需詳細資訊，請參閱 [在 DynamoDB 中管理加密資料表](encryption.tutorial.md)。

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time \
       --sse-specification-override Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
   ```

   您可以將資料表還原到與來源資料表所在的不同 AWS 區域。
**注意**  
執行跨區域還原必須使用 `sse-specification-override` 參數，而還原至與來源資料表相同的區域時則可選用此參數。
執行跨區域還原必須提供 `source-table-arn` 參數。
從命令列執行跨區域還原時，您必須將預設 AWS 區域設定為所需的目的地區域。如需進一步了解，請參閱《AWS Command Line Interface 使用者指南》中的[命令列選項](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html)。

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-arn arn:aws:dynamodb:us-east-1:123456789012:table/Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time \
       --sse-specification-override Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
   ```

   您可以覆寫帳單模式及佈建給還原資料表的輸送量。

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time \
       --billing-mode-override PAY_PER_REQUEST
   ```

   您可以阻止在還原的資料表上建立部分或全部次要索引。
**注意**  
如果您阻止在新還原的資料表上建立部分或全部次要索引，可加速還原且更符合經濟效益。

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time \
       --global-secondary-index-override '[]'
   ```

   您可以使用不同覆寫的組合。例如，您可以使用單一全域次要索引，同時變更所佈建的輸送量，如下所示。

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --billing-mode-override PROVISIONED \
       --provisioned-throughput-override ReadCapacityUnits=100,WriteCapacityUnits=100 \
       --global-secondary-index-override IndexName=singers-index,KeySchema=["{AttributeName=SingerName,KeyType=HASH}"],Projection="{ProjectionType=KEYS_ONLY}",ProvisionedThroughput="{ReadCapacityUnits=50,WriteCapacityUnits=50}" \
       --sse-specification-override Enabled=true,SSEType=KMS \
       --use-latest-restorable-time
   ```

若要確認還原，請使用 `describe-table` 命令描述 `MusicEarliestRestorableDateTime` 資料表。

```
aws dynamodb describe-table --table-name MusicEarliestRestorableDateTime
```

正在還原的資料表會顯示為 **Creating** (正在建立) 的狀態，且復原會做為 **true** 進行。還原程序完成後，`MusicEarliestRestorableDateTime` 資料表的狀態會變更為 **Active** (作用中)。

**重要**  
還原進行中時，請勿修改或刪除授予 IAM 實體 （例如使用者、群組或角色） 執行還原許可的 AWS Identity and Access Management (IAM) 政策。否則，可能會造成意外行為。例如，假設您在資料表還原時移除資料表的寫入許可。在此案例中，基礎 `RestoreTableToPointInTime` 操作無法將任何還原的資料寫入資料表。涉及存取目標還原資料表的來源 IP 限制的 IAM 政策可能也會導致問題。  
只有在復原操作完成後，才能修改或刪除許可。