

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Keyspaces でテーブルをバックアップから特定の時点に復元する
<a name="restoretabletopointintime"></a>

既存の Amazon Keyspaces テーブルを特定の時点の状態に復元する実際の方法を紹介します。

**注記**  
この手順では、操作対象のテーブルにポイントインタイムリカバリが設定済みであることが前提です。テーブルの PITR を有効にするには、「[Amazon Keyspaces でテーブルの PITR を設定する](configure_PITR.md)」を参照してください。

**重要**  
 復元中は、復元を実行するアクセス許可を IAM プリンシパル (ユーザー、グループ、ロールなど) に付与する AWS Identity and Access Management (IAM) ポリシーを変更または削除しないでください。行った場合、予期しない動作が発生する場合があります。例えば、テーブルの復元中にそのテーブルへの書き込みアクセス許可を削除してしまうと、基盤となる `RestoreTableToPointInTime` オペレーションが復元済みデータをテーブルに書き込むことができなくなります。  
復元オペレーションが完了したら、アクセス許可を変更または削除してもかまいません。

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

**コンソールを使用してテーブルを特定の時点の状態に復元する**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. コンソールの左側のナビゲーションペインで、**[テーブル]** を選択します。

1. テーブルのリストで、復元対象のテーブルを選択します。

1. テーブルの **[バックアップ]** タブの **[ポイントインタイムリカバリ]** セクションで、**[復元]** を選択します。

1. 新しいテーブル名には、復元後のテーブルの新しい名前を入力します (例: **mytable\$1restored**)。

1. 復元オペレーションのポイントインタイムを定義するために、次の 2 つのオプションのいずれかを選択できます。
   + あらかじめ設定されている **[Earliest]** (最も早い時間) を選択します。
   + **[Specify date and time]** (日時の指定) を選択し、新しいテーブルの復元時点の日付と時刻を入力します。
**注記**  
**[Earliest]** (最古) の時点から現在の時点までの期間内の任意の特定時点の状態に復元できます。Amazon Keyspaces により、選択した日時 (day:hour:minute:second) に基づいた状態にテーブルデータが復元されます。

1. [**Restore (復元)**] を選択して、復元プロセスを開始します。

   復元中のテーブルのステータスは、[**Restoring (復元中)**] と表示されます。復元が終わると、復元後のテーブルのステータスが **[アクティブ]** に変わります。

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

**CQL を使用してテーブルを特定の時点の状態に復元する**

1. アクティブなテーブルを、`earliest_restorable_timestamp` から現在の時点までの範囲内の任意の時点の状態に復元できます。デフォルトは現在の時刻です。

   テーブルでポイントインタイムリカバリが有効になっていることを確認するには、次の例に示すように、`system_schema_mcs.tables` をクエリします。

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

   次のサンプル出力に示すように、ポイントインタイムリカバリが有効になります。

   ```
   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;
     ```
   + `restore_timestamp` に ISO 8601 形式で特定の時点を定義し、その時点の状態に復元することもできます。過去 35 日間の任意の時点を指定できます。たとえば、次のコマンドでは `EarliestRestorableDateTime` にテーブルを復元します。

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

     構文の完全な説明については、言語リファレンスの「[RESTORE TABLE](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. PITR を有効にした `myTable` という名前の簡単なテーブルを作成します。コマンドは読みやすくするため、別々の行に分割されています。

   ```
   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. 
   + 特定の時点の状態にテーブルを復元するには、ISO 8601 形式で `restore_timestamp` を指定します。過去 35 日間の任意の時点を 1 秒間隔で選択できます。たとえば、次のコマンドでは `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'"
     ```

------