

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

# Time Travel 작업 설정
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel"></a>

복제 작업을 로깅하고 디버깅하려면 AWS DMS Time Travel을 사용할 수 있습니다. 이 방식에서는 Amazon S3를 사용하여 로그를 저장하고 암호화 키를 사용하여 로그를 암호화합니다. Time Travel S3 버킷에 액세스할 경우에만 날짜-시간 필터를 사용하여 S3 로그를 검색한 다음, 필요에 따라 로그를 보고 다운로드하며 난독화할 수 있습니다. 이렇게 하면 안전하게 ‘과거로 이동’하여 데이터베이스 활동을 조사할 수 있습니다. Time Travel은 CloudWatch 로깅과는 상관없이 독립적으로 작동합니다. CloudWatch 로깅에 관한 자세한 내용은 [작업 설정 로깅](CHAP_Tasks.CustomizingTasks.TaskSettings.Logging.md)을 참조하세요.

 AWS DMS지원되는 Oracle, Microsoft SQL Server 및 PostgreSQL 소스 엔드포인트와 AWS DMS지원되는 PostgreSQL 및 MySQL 대상 엔드포인트가 있는 모든 AWS 리전에서 Time Travel을 사용할 수 있습니다. Time Travel은 전체 로드 및 변경 데이터 캡처(CDC) 작업과 CDC 전용 작업에만 사용할 수 있습니다. Time Travel을 켜거나 기존의 Time Travel 설정을 수정하려면 복제 작업을 중지해야 합니다.

Time Travel 설정에는 다음과 같은 `TTSettings` 속성이 포함됩니다.
+ `EnableTT` – 이 옵션을 `true`로 설정하면 작업에 대한 Time Travel 로깅이 켜집니다. 기본값은 `false`입니다.

  유형: 부울

  필수 항목 여부: 아니요
+ `EncryptionMode` – S3 버킷에서 데이터 및 로그를 저장하는 데 사용되는 서버 측 암호화 유형입니다. `"SSE_S3"`(기본값) 또는 `"SSE_KMS"`를 지정할 수 있습니다.

  `EncryptionMode`를 `"SSE_KMS"`에서 `"SSE_S3"`으로 변경할 수 있지만 그 반대로 변경할 수는 없습니다.

  유형: 문자열

  필수 항목 여부: 아니요
+ `ServerSideEncryptionKmsKeyId` - `"SSE_KMS"`에를 지정하는 경우 사용자 지정 관리형 AWS KMS 키의 ID를 `EncryptionMode`제공합니다. 사용하는 키에 AWS Identity and Access Management (IAM) 사용자 권한을 켜고 키 사용을 허용하는 연결된 정책이 있는지 확인합니다.

  이 `"SSE_KMS"` 옵션에서는 사용자 지정 관리형 대칭 KMS 키만 지원됩니다.

  유형: 문자열

  필수: `EncryptionMode`이 `"SSE_KMS"`로 설정된 경우에만 해당됨
+ `ServiceAccessRoleArn` – 서비스에서 IAM 역할에 액세스하는 데 사용되는 Amazon 리소스 이름(ARN)입니다. 역할 이름을 `dms-tt-s3-access-role`로 설정합니다. 이는가 S3 버킷에서 객체 AWS DMS 를 쓰고 읽을 수 있도록 허용하는 필수 설정입니다.

  유형: 문자열

  필수: Time Travel이 켜진 경우

  다음은 이 역할에 대한 정책 예제입니다.

------
#### [ JSON ]

****  

  ```
  {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
          {
              "Sid": "VisualEditor0",
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "kms:GenerateDataKey",
                  "kms:Decrypt",
                  "s3:ListBucket",
                  "s3:DeleteObject"
              ],
              "Resource": [
                  "arn:aws:s3:::S3bucketName*",
                  "arn:aws:kms:us-east-1:112233445566:key/1234a1a1-1m2m-1z2z-d1d2-12dmstt1234"
              ]
          }
      ]
  }
  ```

------

  다음은 이 역할에 대한 신뢰 정책 예제입니다.

------
#### [ JSON ]

****  

  ```
  {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "dms.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------
+ `BucketName` – Time Travel 로그를 저장할 S3 버킷의 이름입니다. Time Travel 로그를 켜기 전에 이 S3 버킷을 생성해야 합니다.

  유형: 문자열

  필수: Time Travel이 켜진 경우
+ `BucketFolder` – S3 버킷의 폴더 이름을 설정하는 선택적 파라미터입니다. 이 파라미터를 지정하면 DMS는 경로 `"/BucketName/BucketFolder/taskARN/YYYY/MM/DD/hh"`에 Time Travel 로그를 생성합니다. 이 파라미터를 지정하지 않으면가 기본 경로를 로 AWS DMS 생성합니다`"/BucketName/dms-time-travel-logs/taskARN/YYYY/MM/DD/hh`.

  유형: 문자열

  필수 항목 여부: 아니요
+ `EnableDeletingFromS3OnTaskDelete` -이 옵션을 로 설정하면 작업이 `true` AWS DMS 삭제되면가 S3에서 Time Travel 로그를 삭제합니다. 기본 값은 `false`입니다.

  유형: 문자열

  필수 항목 여부: 아니요
+ `EnableRawData` – 이 옵션을 `true`로 설정하면 Time Travel 로그의 DML(데이터 조작 언어) 원시 데이터가 Time Travel 로그의 `raw_data` 열 아래에 나타납니다. 자세한 내용은 [Time Travel 로그 사용](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.LogSchema.md)을 참조하세요. 기본값은 `false`입니다. 이 옵션을 `false`로 설정하면 DML 유형만 캡처됩니다.

  유형: 문자열

  필수 항목 여부: 아니요
+ `RawDataFormat` - AWS DMS 버전 3.5.0 이상에서 `EnableRawData`가 로 설정된 경우`true`. 이 속성은 Time Travel 로그의 DML 원시 데이터 형식을 지정하며 다음과 같이 표시할 수 있습니다.
  + `"TEXT"` – CDC 중에 캡처한 DML 이벤트의 구문 분석된 읽을 수 있는 열 이름과 값을 `Raw` 필드로 표시합니다.
  + `"HEX"` – CDC 중에 DML 이벤트에 대해 캡처한 열 이름 및 값의 원래 16진수입니다.

  이 속성은 Oracle 및 Microsoft SQL Server 데이터베이스 원본에 적용됩니다.

  유형: 문자열

  필수 항목 여부: 아니요
+ `OperationsToLog` – Time Travel 로그에 로그인하기 위한 DML 작업의 유형을 지정합니다. 다음 중 한 가지를 지정할 수 있습니다.
  + `"INSERT"`
  + `"UPDATE"`
  + `"DELETE"`
  + `"COMMIT"`
  + `"ROLLBACK"`
  + `"ALL"`

  기본값은 `"ALL"`입니다.

  유형: 문자열

  필수 항목 여부: 아니요
+ `MaxRecordSize` - 각 행에 기록되는 Time Travel 로그 레코드의 최대 크기를 지정합니다. 이 속성을 사용하여 특히 사용량이 많은 테이블의 Time Travel 로그 증가를 제어할 수 있습니다. 기본값은 64KB입니다.

  유형: 정수

  필수 항목 여부: 아니요

Time Travel 로그를 켜고 사용하는 방법에 관한 자세한 내용은 다음 주제를 참조하세요.

**Topics**
+ [작업의 Time Travel 로그 켜기](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.TaskEnabling.md)
+ [Time Travel 로그 사용](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.LogSchema.md)
+ [가 Time Travel 로그를 S3에 AWS DMS 업로드하는 빈도](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.UploadsToS3.md)

# 작업의 Time Travel 로그 켜기
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.TaskEnabling"></a>

앞서 설명한 AWS DMS 작업 설정을 사용하여 작업에 대한 Time Travel을 켤 수 있습니다. Time Travel을 켜기 전에 복제 작업이 중지되었는지 확인하세요.

**를 사용하여 Time Travel을 켜려면 AWS CLI**

1. DMS 작업 구성 JSON 파일을 만들고 다음과 같은 `TTSettings` 섹션을 추가합니다. 작업 구성 파일을 사용하여 작업 설정을 지정하는 방법에 관한 자세한 내용은 [작업 설정 예제](CHAP_Tasks.CustomizingTasks.TaskSettings.md#CHAP_Tasks.CustomizingTasks.TaskSettings.Example)을 참조하세요.

   ```
    .
    .
    .
       },
   "TTSettings" : {
     "EnableTT" : true,
     "TTS3Settings": {
         "EncryptionMode": "SSE_KMS",
         "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-west-2:112233445566:key/myKMSKey",
         "ServiceAccessRoleArn": "arn:aws:iam::112233445566:role/dms-tt-s3-access-role",
         "BucketName": "myttbucket",
         "BucketFolder": "myttfolder",
         "EnableDeletingFromS3OnTaskDelete": false
       },
     "TTRecordSettings": {
         "EnableRawData" : true,
         "OperationsToLog": "DELETE,UPDATE",
         "MaxRecordSize": 64
       },
    .
    .
    .
   ```

1. 적절한 작업 동작에서 `--replication-task-settings` 옵션을 사용하여 이 JSON 파일을 지정합니다. 예를 들어, 다음 CLI 코드 조각은 이 Time Travel 설정 파일을 `create-replication-task`의 일부로 지정합니다.

   ```
   aws dms create-replication-task 
   --target-endpoint-arn arn:aws:dms:us-east-1:112233445566:endpoint:ELS5O7YTYV452CAZR2EYBNQGILFHQIFVPWFRQAY \
   --source-endpoint-arn arn:aws:dms:us-east-1:112233445566:endpoint:HNX2BWIIN5ZYFF7F6UFFZVWTDFFSMTNOV2FTXZA \
   --replication-instance-arn arn:aws:dms:us-east-1:112233445566:rep:ERLHG2UA52EEJJKFYNYWRPCG6T7EPUAB5AWBUJQ \
   --migration-type full-load-and-cdc --table-mappings 'file:///FilePath/mappings.json' \
   --replication-task-settings 'file:///FilePath/task-settings-tt-enabled.json' \
   --replication-task-identifier test-task
                               .
                               .
                               .
   ```

   여기서 이 Time Travel 설정 파일의 이름은 `task-settings-tt-enabled.json`입니다.

마찬가지로 이 파일을 `modify-replication-task` 동작의 일부로 지정할 수 있습니다.

다음과 같은 작업 동작에 대한 Time Travel 로그의 특수 처리에 유의하세요.
+ `start-replication-task` – 복제 작업을 실행할 때 Time Travel에 사용되는 S3 버킷에 액세스할 수 없는 경우 작업은 `FAILED`로 표시됩니다.
+ `stop-replication-task` - 작업이 중지되면는 복제 인스턴스에 현재 사용 가능한 모든 Time Travel 로그를 Time Travel에 사용되는 S3 버킷으로 AWS DMS 즉시 푸시합니다.

복제 작업이 실행되는 동안 `EncryptionMode` 값을 `"SSE_KMS"`에서 `"SSE_S3"`로 변경할 수 있지만 그 반대로 변경할 수는 없습니다.

진행 중인 작업의 Time Travel 로그 크기가 1GB를 초과하는 경우, DMS는 해당 크기에 도달한 후 5분 이내에 로그를 S3로 푸시합니다. 작업이 실행된 후 S3 버킷 또는 KMS 키에 액세스할 수 없게 되면 DMS는 이 버킷으로의 로그 푸시를 중단합니다. 로그가 S3 버킷으로 푸시되지 않는 경우 S3 및 AWS KMS 권한을 확인합니다. DMS가 이러한 로그를 S3로 푸시하는 빈도에 관한 자세한 내용은 [가 Time Travel 로그를 S3에 AWS DMS 업로드하는 빈도](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.UploadsToS3.md)을 참조하세요.

콘솔에서 기존 작업에 대한 Time Travel을 켜려면 **작업 설정**에서 JSON 편집기 옵션을 사용하여 `TTSettings` 섹션을 추가하세요.

# Time Travel 로그 사용
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.LogSchema"></a>

*Time Travel 로그 파일*은 다음과 같은 필드가 있는 쉼표로 구분된 값(CSV) 파일입니다.

```
log_timestamp 
component 
dms_source_code_location 
transaction_id 
event_id 
event_timestamp 
lsn/scn 
primary_key
record_type 
event_type 
schema_name 
table_name 
statement 
action 
result 
raw_data
```

S3에서 Time Travel 로그를 사용할 수 있게 되면 Amazon Athena와 같은 도구를 사용하여 이 로그에 직접 액세스하고 쿼리할 수 있습니다. 또는 S3에서 다른 파일처럼 로그를 다운로드할 수 있습니다.

다음 예제는 `mytable`이라는 테이블의 트랜잭션이 기록되는 Time Travel 로그를 보여줍니다. 가독성을 위해 다음 로그의 줄 끝을 추가했습니다.

```
"log_timestamp ","tt_record_type","dms_source_code_location ","transaction_id",
"event_id","event_timestamp","scn_lsn","primary_key","record_type","event_type",
"schema_name","table_name","statement","action","result","raw_data"
"2021-09-23T01:03:00:778230","SOURCE_CAPTURE","postgres_endpoint_wal_engine.c:00819",
"609284109","565612992","2021-09-23 01:03:00.765321+00","00000E9C/D53AB518","","DML",
"UPDATE (3)","dmstest","mytable","","Migrate","","table dmstest.mytable:
UPDATE: id[bigint]:2244937 phone_number[character varying]:'phone-number-482'
age[integer]:82 gender[character]:'f' isactive[character]:'true ' 
date_of_travel[timestamp without time zone]:'2021-09-23 01:03:00.76593' 
description[text]:'TEST DATA TEST DATA TEST DATA TEST DATA'"
```

# 가 Time Travel 로그를 S3에 AWS DMS 업로드하는 빈도
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.UploadsToS3"></a>

복제 인스턴스의 스토리지 사용을 최소화하기 위해는 주기적으로 Time Travel 로그를 AWS DMS 오프로드합니다.

다음과 같은 경우 Time Travel 로그가 Amazon S3 버킷으로 푸시됩니다.
+ 현재 로그 크기가 1GB를 초과하는 경우는 5분 이내에 로그를 S3에 AWS DMS 업로드합니다. 따라서 AWS DMS 는 실행 중인 각 작업에 AWS KMS 대해 S3 및에 대해 시간당 최대 12개의 호출을 수행할 수 있습니다.
+ AWS DMS 는 로그 크기에 관계없이 매시간 S3에 로그를 업로드합니다.
+ 작업이 중지되면는 시간 이동 로그를 S3에 AWS DMS 즉시 업로드합니다.