

# DynamoDB에서 특정 시점 복구 사용
<a name="PointInTimeRecovery_Howitworks"></a>

Amazon DynamoDB의 PITR(특정 시점으로 복구)을 통해 DynamoDB 테이블 데이터를 자동으로 백업할 수 있습니다. 이 단원에서는 DynamoDB에서 이 프로세스가 어떻게 작동하는지 간략히 살펴봅니다.

**참고**  
DynamoDB는 테이블 데이터 및 로컬 보조 인덱스를 포함하여 각 DynamoDB 테이블의 크기를 기준으로 PITR 요금을 부과합니다. 복구 기간을 변경해도(예: 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 Management Console, AWS Command Line Interface(AWS CLI) 또는 DynamoDB API를 사용하여 특정 시점으로 복구를 활성화할 수 있습니다. 특정 시점으로 복구가 활성화되면 사용자가 명시적으로 이 기능을 끌 때까지 지속적으로 백업됩니다.

특정 시점으로 복구를 활성화한 뒤에는 `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\$135 사이의 값을 선택합니다. 이는 연속 백업을 복구할 수 있는 최대 기간을 나타냅니다.

## 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\$135일로 설정할 수 있습니다. 이 `RecoveryPeriodInDays`는 연속 백업이 유지되는 기간을 결정합니다. 예를 들어 이 값을 30일로 설정하면 지난 30일 동안의 특정 시점으로만 테이블을 복원할 수 있습니다.

**참고**  
DynamoDB는 테이블 데이터 및 로컬 보조 인덱스를 포함하여 각 DynamoDB 테이블의 크기를 기준으로 PITR 요금을 부과합니다. 구성된 최대 복구 기간은 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일 동안 유지합니다(추가 비용 없음). 시스템 백업을 사용하면 삭제된 테이블을 삭제 시점 전의 상태로 복원할 수 있습니다. 모든 시스템 백업은 표준 이름 지정 규칙인 *table-name*`$DeletedTableBackup`을 따릅니다.

**참고**  
시점 복구가 활성화된 테이블이 삭제되면 시스템 백업을 사용하여 해당 테이블을 단일 시점으로 복원할 수 있습니다. 시스템 백업은 테이블 삭제 시 생성되며 테이블이 삭제되기 직전의 테이블 스냅샷입니다.