

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

# 將資料表從備份還原到 Amazon Keyspaces 中指定的時間點
<a name="restoretabletopointintime"></a>

下一節示範如何將現有的 Amazon Keyspaces 資料表還原至指定的時間點。

**注意**  
此程序假設您使用的資料表已設定point-in-time復原。若要啟用資料表的 PITR，請參閱 [在 Amazon Keyspaces 中設定資料表的 PITR](configure_PITR.md)。

**重要**  
 還原進行中時，請勿修改或刪除授予 IAM 主體 （例如使用者、群組或角色） 執行還原許可的 AWS Identity and Access Management (IAM) 政策。否則，可能會造成意外行為。例如，如果您在資料表還原時移除資料表的寫入許可，基礎`RestoreTableToPointInTime`操作就無法將任何還原的資料寫入資料表。  
您只能在還原操作完成後修改或刪除許可。

------
#### [ Console ]

**使用主控台將資料表還原至指定的時間點**

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

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

1. 在資料表清單中，選擇您要還原的資料表。

1. 在資料表的**備份**索引標籤的**Point-in-time復原**區段中，選擇**還原**。

1. 針對新的資料表名稱，輸入還原資料表的新名稱，例如 **mytable\$1restored**。

1. 若要定義還原操作的時間點，您可以選擇兩個選項：
   + 選取預先設定的**最早**時間。
   + 選取**指定日期和時間**，然後輸入您要還原新資料表的日期和時間。
**注意**  
您可以在**最早**時間和目前時間還原至任何時間點。Amazon Keyspaces 會根據選取的日期和時間 （日：小時：分鐘：秒） 將資料表資料還原至 狀態。

1. 選擇**還原**以開始還原程序。

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

------
#### [ Cassandra Query Language (CQL) ]

**使用 CQL 將資料表還原至某個時間點**

1. 您可以將作用中資料表還原至介於 point-in-time。 `earliest_restorable_timestamp`目前時間是預設值。

   若要確認資料表已啟用point-in-time復原，請查詢 `system_schema_mcs.tables`，如本範例所示。

   ```
   SELECT custom_properties
   FROM system_schema_mcs.tables
   WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
   ```

   Point-in-time復原已啟用，如下列範例輸出所示。

   ```
   custom_properties
   -----------------
   {
     ...,
       "point_in_time_recovery": {
       "earliest_restorable_timestamp":"2020-06-30T19:19:21.175Z"
       "status":"enabled"
     }
   }
   ```

1. 
   + 將資料表還原至目前時間。當您省略 `WITH restore_timestamp = ...`子句時，會使用目前的時間戳記。

     ```
     RESTORE TABLE mykeyspace.mytable_restored
     FROM TABLE mykeyspace.mytable;
     ```
   + 您也可以還原至特定時間點，由 ISO 8601 格式`restore_timestamp`的 定義。您可以指定過去 35 天內的任何時間點。例如，下列命令可復原資料表至 `EarliestRestorableDateTime`。

     ```
     RESTORE TABLE mykeyspace.mytable_restored
     FROM TABLE mykeyspace.mytable
     WITH restore_timestamp = '2020-06-30T19:19:21.175Z';
     ```

     如需完整的語法描述，請參閱語言參考[RESTORE 資料表](cql.ddl.table.md#cql.ddl.table.restore)中的 。

1. 若要驗證資料表的還原是否成功，請查詢 `system_schema_mcs.tables` 以確認資料表的狀態。

   ```
   SELECT status
   FROM system_schema_mcs.tables
   WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable_restored'
   ```

   查詢會顯示下列輸出。

   ```
   status
   ------
   RESTORING
   ```

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

------
#### [ CLI ]

**使用 將資料表還原至某個時間點 AWS CLI**

1. 建立名為 `myTable`且已啟用 PITR 的簡單資料表。命令已分成不同的行以方便閱讀。

   ```
   aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' 
               --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' 
               --point-in-time-recovery 'status=ENABLED'
   ```

1. 確認新資料表的屬性，並檢閱 PITR `earliestRestorableTimestamp` 的 。

   ```
   aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'
   ```

   此命令的輸出會傳回下列項目。

   ```
   {
       "keyspaceName": "myKeyspace",
       "tableName": "myTable",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/myKeyspace/table/myTable",
       "creationTimestamp": "2022-06-20T14:34:57.049000-07:00",
       "status": "ACTIVE",
       "schemaDefinition": {
           "allColumns": [
               {
                   "name": "id",
                   "type": "int"
               },
               {
                   "name": "date",
                   "type": "timestamp"
               },
               {
                   "name": "name",
                   "type": "text"
               }
           ],
           "partitionKeys": [
               {
                   "name": "id"
               }
           ],
           "clusteringKeys": [],
           "staticColumns": []
       },
       "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": "2022-06-20T14:34:57.049000-07:00"
       },
       "encryptionSpecification": {
           "type": "AWS_OWNED_KMS_KEY"
       },
       "pointInTimeRecovery": {
           "status": "ENABLED",
           "earliestRestorableTimestamp": "2022-06-20T14:35:13.693000-07:00"
       },
       "defaultTimeToLive": 0,
       "comment": {
           "message": ""
       }
   }
   ```

1. 
   + 若要將資料表還原至某個時間點，`restore_timestamp`請以 ISO 8601 格式指定 。您可以選擇過去 35 天內的任何時間點，每隔一秒鐘。例如，下列命令可復原資料表至 `EarliestRestorableDateTime`。

     ```
     aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored' --restore-timestamp "2022-06-20 21:35:14.693"
     ```

     此命令的輸出會傳回還原資料表的 ARN。

     ```
     {
         "restoredTableARN": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/myKeyspace/table/myTable_restored"
     }
     ```
   + 若要將資料表還原至目前時間，您可以省略 `restore-timestamp` 參數。

     ```
     aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored1'"
     ```

------