

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Keyspaces에서 시점 복구 사용
<a name="PointInTimeRecovery_Tutorial"></a>

Amazon Keyspaces(Apache Cassandra용)를 사용하면 시점 복원(PITR)을 사용하여 테이블을 특정 시점으로 복원할 수 있습니다. PITR을 사용하면 테이블을 지난 35일 이내의 이전 상태로 복원하여 데이터 보호 및 복구 기능을 제공할 수 있습니다. 이 기능은 우발적인 데이터 삭제, 애플리케이션 오류 또는 테스트 목적과 같은 경우에 유용합니다. 데이터를 빠르고 효율적으로 복구하여 가동 중지 시간과 데이터 손실을 최소화할 수 있습니다. 다음 섹션에서는 Amazon Keyspaces에서 PITR을 사용하여 테이블을 복원하는 프로세스를 안내하여 데이터 무결성과 비즈니스 연속성을 보장합니다.

**Topics**
+ [Amazon Keyspaces PITR에 대한 복원 테이블 IAM 권한 구성](howitworks_restore_permissions.md)
+ [Amazon Keyspaces의 테이블에 대한 PITR 구성](configure_PITR.md)
+ [Amazon Keyspaces 테이블의 PITR 끄기](disable_PITR.md)
+ [Amazon Keyspaces에서 백업에서 지정된 시점으로 테이블 복원](restoretabletopointintime.md)
+ [Amazon Keyspaces PITR을 사용하여 삭제된 테이블 복원](restoredeleted.md)

# Amazon Keyspaces PITR에 대한 복원 테이블 IAM 권한 구성
<a name="howitworks_restore_permissions"></a>

이 섹션에서는 Amazon Keyspaces 테이블을 복원하기 위해 AWS Identity and Access Management (IAM) 보안 주체에 대한 권한을 구성하는 방법을 요약합니다. IAM의 AWS 관리형 정책 `AmazonKeyspacesFullAccess`에는 Amazon Keyspaces 테이블을 복원할 수 있는 권한이 포함됩니다. 최소 필수 권한으로 사용자 지정 정책을 구현하려면 다음 섹션에 설명된 요구 사항을 고려하세요.

테이블을 성공적으로 복원하려면 IAM 위탁자에게 다음과 같은 최소 권한이 필요합니다.
+ `cassandra:Restore` - 대상 테이블을 복원하려면 복원 작업이 필요합니다.
+ `cassandra:Select` - 소스 테이블에서 읽으려면 선택 작업이 필요합니다.
+ `cassandra:TagResource` - 태그 작업은 선택 사항이며 복원 작업에서 태그를 추가하는 경우에만 필요합니다.

이는 키스페이스 `mykeyspace`에서 테이블을 복원하는 데 필요한 최소 권한을 사용자에게 부여하는 정책의 예입니다.

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "cassandra:Restore",
            "cassandra:Select"
         ],
         "Resource":[
            "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/*",
            "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*"
         ]
      }
   ]
}
```

선택한 다른 기능에 따라 테이블을 복원하기 위한 추가 권한이 필요할 수 있습니다. 예를 들어 소스 테이블을 고객 관리형 키로 암호화한 경우 Amazon Keyspaces가 소스 테이블의 고객 관리형 키에 액세스할 수 있는 권한을 가져야 테이블을 성공적으로 복원할 수 있습니다. 자세한 내용은 [암호화된 테이블의 PITR 복원](PointInTimeRecovery_HowItWorks.md#howitworks_backup_encryption) 단원을 참조하십시오.

IAM 정책을 [조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)와 함께 사용하여 들어오는 트래픽을 특정 소스로 제한하는 경우 Amazon Keyspaces가 보안 주체를 대신하여 복원 작업을 수행할 권한이 있는지 확인해야 합니다. 정책이 수신 트래픽을 다음 중 하나로 제한하는 경우 IAM 정책에 `aws:ViaAWSService` 조건 키를 추가해야 합니다.
+ `aws:SourceVpce`의 VPC 엔드포인트
+ `aws:SourceIp`의 IP 범위
+ `aws:SourceVpc`의 VPC

`aws:ViaAWSService` 조건 키는 AWS 서비스가 주체의 자격 증명을 사용하여 요청할 때 액세스를 허용합니다. 자세한 내용은 **IAM 사용 설명서의 [IAM JSON 정책 요소: 조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)를 참조하세요.

다음은 소스 트래픽을 특정 IP 주소로 제한하고 Amazon Keyspaces가 보안 주체를 대신하여 테이블을 복원하도록 허용하는 정책의 예입니다.

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"CassandraAccessForCustomIp",
         "Effect":"Allow",
         "Action":"cassandra:*",
         "Resource":"*",
         "Condition":{
            "Bool":{
               "aws:ViaAWSService":"false"
            },
            "ForAnyValue:IpAddress":{
               "aws:SourceIp":[
                  "123.45.167.89"
               ]
            }
         }
      },
      {
         "Sid":"CassandraAccessForAwsService",
         "Effect":"Allow",
         "Action":"cassandra:*",
         "Resource":"*",
         "Condition":{
            "Bool":{
               "aws:ViaAWSService":"true"
            }
         }
      }
   ]
}
```

 `aws:ViaAWSService` 글로벌 조건 키를 사용하는 예제 정책은 [VPC 엔드포인트 정책 및 Amazon Keyspaces 시점 복구(PITR)](vpc-endpoints.md#VPC_PITR_restore) 섹션을 참조하세요.

# Amazon Keyspaces의 테이블에 대한 PITR 구성
<a name="configure_PITR"></a>

백업 및 복원 작업을 위해 Amazon Keyspaces에서 콘솔, CQL 및 AWS CLI와 함께 PITR을 사용하여 테이블을 구성할 수 있습니다.

CQL 또는를 사용하여 새 테이블을 생성할 때는 테이블 생성 문에서 PITR을 명시적으로 활성화 AWS CLI해야 합니다. 콘솔을 사용하여 새 테이블을 생성하면 PITR이 기본적으로 활성화됩니다.

테이블을 복원하는 방법은 [Amazon Keyspaces에서 백업에서 지정된 시점으로 테이블 복원](restoretabletopointintime.md) 섹션을 참조하세요.

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

**콘솔을 사용하여 테이블에 대한 PITR 구성**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) Amazon Keyspaces 콘솔을 엽니다.

1. 탐색 창에서 **테이블**을 선택하고 편집하려는 테이블을 선택합니다.

1. **백업** 탭에서 **편집**을 선택합니다.

1. **시점 복구 설정 편집** 섹션에서 **시점 복구 활성화**를 선택합니다.

1. **변경 사항 저장**을 선택합니다.

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

**CQL을 사용하여 테이블에 대한 PITR 구성**

1. `point_in_time_recovery` 사용자 지정 속성을 사용하여 테이블의 PITR 설정을 관리할 수 있습니다.

   새 테이블을 생성할 때 PITR을 활성화하려면 `point_in_time_recovery`의 상태를 `enabled`로 설정해야 합니다. 다음 CQL 명령을 예제로 사용할 수 있습니다.

   ```
   CREATE TABLE "my_keyspace1"."my_table1"(
   	"id" int,
   	"name" ascii,
   	"date" timestamp,
   	PRIMARY KEY("id"))
   WITH CUSTOM_PROPERTIES = {
   	'capacity_mode':{'throughput_mode':'PAY_PER_REQUEST'}, 
   	'point_in_time_recovery':{'status':'enabled'}
   }
   ```
**참고**  
시점 복구 사용자 지정 속성이 지정되지 않은 경우 시점 복구는 기본적으로 비활성화됩니다.

1. CQL을 사용하여 기존 테이블에 대해 PITR을 활성화하려면 다음 CQL 명령을 실행합니다.

   ```
   ALTER TABLE mykeyspace.mytable
   WITH custom_properties = {'point_in_time_recovery': {'status': 'enabled'}}
   ```

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

**를 사용하여 테이블에 대한 PITR 구성 AWS CLI**

1. `UpdateTable` API를 사용하여 테이블의 PITR 설정을 관리할 수 있습니다.

   새 테이블을 생성할 때 PITR을 활성화하려면 테이블 생성 명령에 `point-in-time-recovery 'status=ENABLED'`를 포함해야 합니다. 다음 AWS CLI 명령을 예제로 사용할 수 있습니다. 가독성을 높이기 위해 명령을 별도의 줄로 나누었습니다.

   ```
   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. 테이블에 대한 point-in-time 복구 설정을 확인하려면 다음 AWS CLI 명령을 사용할 수 있습니다.

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

1. 를 사용하여 기존 테이블에 대해 PITR을 활성화하려면 다음 명령을 AWS CLI실행합니다.

   ```
   aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=ENABLED'
   ```

------

# Amazon Keyspaces 테이블의 PITR 끄기
<a name="disable_PITR"></a>

콘솔, CQL 또는 AWS CLI를 사용하여 언제든지 Amazon Keyspaces 테이블의 PITR을 끌 수 있습니다.

**중요**  
PITR을 비활성화하면 35일 이내에 테이블에서 PITR을 다시 활성화하더라도 백업 기록이 즉시 삭제됩니다.

테이블을 복원하는 방법은 [Amazon Keyspaces에서 백업에서 지정된 시점으로 테이블 복원](restoretabletopointintime.md) 섹션을 참조하세요.

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

**콘솔을 사용하여 테이블에 대한 PITR 비활성화**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) Amazon Keyspaces 콘솔을 엽니다.

1. 탐색 창에서 **테이블**을 선택하고 편집하려는 테이블을 선택합니다.

1. **백업** 탭에서 **편집**을 선택합니다.

1. **시점 복구 설정 편집** 섹션에서 **시점 복구 활성화** 확인란을 선택 취소합니다.

1. **변경 사항 저장**을 선택합니다.

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

**CQL을 사용하여 테이블에 대한 PITR 비활성화**
+ 기존 테이블에 대한 PITR을 비활성화하려면 다음 CQL 명령을 실행합니다.

  ```
  ALTER TABLE mykeyspace.mytable
  WITH custom_properties = {'point_in_time_recovery': {'status': 'disabled'}}
  ```

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

**를 사용하여 테이블에 대해 PITR 비활성화 AWS CLI**
+ 기존 테이블에 대해 PITR을 비활성화하려면 다음 AWS CLI 명령을 실행합니다.

  ```
  aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=DISABLED'
  ```

------

# 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 Management Console하고 [https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) Amazon Keyspaces 콘솔을 엽니다.

1. 콘솔 왼쪽의 탐색 창에서 **테이블**을 선택합니다.

1. 테이블 목록에서 복원할 테이블을 선택합니다.

1. 테이블에 있는 **백업** 탭의 **시점 복구** 섹션에서 **복원**을 선택합니다.

1. 새 테이블 이름에 복원된 테이블의 새 이름을 입력합니다(예: **mytable\$1restored**).

1. 복원 작업의 시점을 정의하려면 다음 두 옵션 중에서 선택할 수 있습니다.
   + 사전 구성된 **가장 이른** 시간을 선택합니다.
   + **날짜 및 시간 지정**을 선택하고 새 테이블을 복원하려는 날짜와 시간을 입력합니다.
**참고**  
**가장 이른** 시간과 현재 시간 내 어느 특정 시점으로든 복원할 수 있습니다. Amazon Keyspaces는 테이블 데이터를 선택한 날짜와 시간(요일:시:분:초)을 기준으로 한 상태로 복원합니다.

1. **복원**을 선택하여 복원 프로세스를 시작합니다.

   복원 중인 테이블은 상태가 **복원 중**으로 표시됩니다. 복원 프로세스가 완료되면 복원된 테이블의 상태가 **활성**으로 변경됩니다.

------
#### [ 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;
     ```
   + 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 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
   ```

   복원 중인 테이블은 상태가 **복원 중**으로 표시됩니다. 복원 프로세스가 완료되면 테이블의 상태가 **활성**으로 변경됩니다.

------
#### [ 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'"
     ```

------

# Amazon Keyspaces PITR을 사용하여 삭제된 테이블 복원
<a name="restoredeleted"></a>

다음 절차는 삭제된 테이블을 백업에서 삭제 시점으로 복원하는 방법을 보여줍니다. CQL 또는를 사용하여이 작업을 수행할 수 있습니다 AWS CLI.

**참고**  
이 절차에서는 삭제된 테이블에서 PITR이 활성화되었다고 가정합니다.



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

**CQL을 사용하여 삭제된 테이블 복원**

1. 삭제된 테이블에 대해 특정 시점 복구가 활성화되었는지 확인하려면 시스템 테이블을 쿼리합니다. 시점 복구가 활성화된 테이블만 표시됩니다.

   ```
   SELECT custom_properties
   FROM system_schema_mcs.tables_history 
   WHERE keyspace_name = 'mykeyspace' AND table_name = 'my_table';
   ```

   쿼리는 다음 출력을 보여 줍니다.

   ```
   custom_properties
   ------------------
   {
       ...,
      "point_in_time_recovery":{
         "restorable_until_time":"2020-08-04T00:48:58.381Z",
         "status":"enabled"
      }
   }
   ```

1. 다음 샘플 문을 사용하여 테이블을 삭제 시점으로 복원합니다.

   ```
   RESTORE TABLE mykeyspace.mytable_restored
   FROM TABLE mykeyspace.mytable;
   ```

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

**를 사용하여 삭제된 테이블 복원 AWS CLI**

1. 이전에 생성했으며 PITR이 활성화된 테이블을 삭제합니다. 다음 명령은 예제입니다.

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

1. 다음 명령을 사용하여 삭제된 테이블을 삭제 시점으로 복원합니다.

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

   이 명령의 출력은 복원된 테이블의 ARN을 반환합니다.

   ```
   {
       "restoredTableARN": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/myKeyspace/table/myTable_restored2"
   }
   ```

------