AWS Database Migration Service의 대상으로 Amazon Redshift 데이터베이스 사용 - AWS Database Migration Service

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

AWS Database Migration Service의 대상으로 Amazon Redshift 데이터베이스 사용

AWS Database Migration Service을 사용하여 Amazon Redshift 데이터베이스로 데이터를 마이그레이션할 수 있습니다. Amazon Redshift는 클라우드에서 완전히 관리되는 페타바이트급 데이터 웨어하우스 서비스입니다. Amazon Redshift 데이터베이스를 대상으로 사용할 때에는 지원되는 다른 소스 데이터베이스에서 가져온 데이터를 마이그레이션할 수 있습니다.

Amazon Redshift Serverless를 AWS DMS의 대상으로 사용할 수 있습니다. 자세한 내용은 대상으로서 Amazon Redshift Serverless와 함께 AWS DMS를 사용 단원을 참조하십시오.

Amazon Redshift 클러스터는 복제 인스턴스와 동일한 AWS 계정 및 AWS 리전에 있어야 합니다.

Amazon Redshift로 데이터베이스를 마이그레이션하는 동안 AWS DMS는 먼저 데이터를 Amazon S3 버킷으로 이동합니다. 파일이 Amazon S3 버킷에 있으면 AWS DMS는 sAmazon Redshift 데이터 웨어하우스의 해당 테이블로 이 파일을 전송합니다. AWS DMS는 Amazon Redshift 데이터베이스와 동일한 AWS 리전에 S3 버킷을 생성합니다. AWS DMS 복제 인스턴스는 동일한 AWS 리전에 있어야 합니다.

AWS CLI 또는 DMS API를 사용하여 데이터를 Amazon Redshift로 마이그레이션하는 경우, S3 액세스를 허용하도록 AWS Identity and Access Management(IAM) 역할을 설정합니다. 이 IAM 역할 생성에 관한 자세한 내용은 AWS CLI 및 AWS DMS API와 함께 사용할 IAM 역할 생성 섹션을 참조하십시오.

Amazon Redshift 엔드포인트가 전체 자동화를 지원하는 경우는 다음과 같습니다.

  • 스키마 생성 및 데이터 형식 매핑

  • 소스 데이터베이스 테이블 전체 로드

  • 원본 테이블에 적용된 변경 사항을 증분식으로 로드

  • 원본 테이블에 적용된 데이터 정의 언어(DDL)에서 스키마 변경 사항 적용

  • 전체 로드와 변경 데이터 캡처(CDC) 프로세스 동기화.

AWS Database Migration Service은 전체 로드와 변경 처리 작업을 모두 지원합니다. AWS DMS는 소스 데이터베이스에서 데이터를 읽고 일련의 쉼표로 구분된 값(.csv) 파일을 생성합니다. 전체 로드 작업에서 AWS DMS는 테이블별로 파일을 생성합니다. 그런 다음 AWS DMS는 각 테이블의 테이블 파일을 Amazon S3에 있는 별도의 폴더에 복사합니다. 파일이 Amazon S3에 업로드되면, AWS DMS에서 COPY 명령을 전송하고 이 파일의 데이터가 Amazon Redshift에 복사됩니다. 변경 처리 작업에서 AWS DMS는 최종 변경 사항을 .csv 파일에 복사합니다. 그런 다음 AWS DMS는 최종 변경 파일을 Amazon S3에 업로드하고 이 데이터를 Amazon Redshift에 복사합니다.

Amazon Redshift를 AWS DMS의 대상으로 사용하여 작업하는 방법에 관한 자세한 내용은 다음 단원을 참조하십시오.

Amazon Redshift 데이터베이스를 AWS Database Migration Service의 대상으로 사용할 때의 사전 조건

다음 목록에는 데이터 마이그레이션에서 Amazon Redshift를 대상으로 사용할 때 필요한 사전 조건에 대한 설명이 나와 있습니다.

  • AWS Management Console을 사용하여 Amazon Redshift 클러스터를 시작합니다. 암호, 사용자 이름, 데이터베이스 이름과 같은 AWS 계정과 사용자의 Amazon Redshift 클러스터에 대한 기본 정보를 기록합니다. Amazon Redshift 대상 엔드포인트를 생성할 때 이 값이 필요합니다.

  • Amazon Redshift 클러스터는 복제 인스턴스와 동일한 AWS 계정과 동일한 AWS 리전에 있어야 합니다.

  • AWS DMS 복제 인스턴스는 클러스터가 사용하는 Amazon Redshift 엔드포인트와의 네트워크 연결(호스트 이름과 포트)이 필요합니다.

  • AWS DMS Amazon S3 버킷을 사용하여 Amazon Redshift 데이터베이스로 데이터를 전송합니다. AWS DMS에서 버킷을 생성하는 경우, 콘솔은 IAM 역할인 dms-access-for-endpoint를 사용합니다. AWS CLI 또는 DMS API를 사용하여 대상 데이터베이스인 Amazon Redshift를 통해 데이터베이스 마이그레이션을 생성하는 경우 이 IAM 역할을 생성해야 합니다. 이 역할 생성에 관한 자세한 내용은 AWS CLI 및 AWS DMS API와 함께 사용할 IAM 역할 생성 섹션을 참조하십시오.

  • AWS DMS는 대상 Amazon Redshift 인스턴스에서 BLOB, CLOB 및 NCLOB를 lVARCHAR로 변환합니다. Amazon Redshift는 64KB보다 큰 VARCHAR 데이터 형식을 지원하지 않으므로 Amazon Redshift에는 기존 LOB를 저장할 수 없습니다.

  • CDC 중에 Amazon Redshift 대상 테이블에 대한 변경 사항을 처리하려면 AWS DMS에 대한 대상 메타데이터 작업 설정 BatchApplyEnabledtrue로 설정합니다. 소스와 대상 테이블에 모두 기본 키가 필요합니다. 기본 키가 없으면 변경 사항이 문별로 적용됩니다. 또한 대상 지연 시간이 발생하고 클러스터 커밋 대기열에 영향을 주므로 CDC 중에 작업 성능이 저하될 수 있습니다.

Redshift를 대상으로 사용하는 데 필요한 권한

GRANT 명령을 사용하여 사용자 또는 사용자 그룹의 액세스 권한을 정의합니다. 권한은 테이블과 뷰에서 데이터를 읽거나 쓰고 테이블을 만들 수 있는 것과 같은 액세스 옵션을 포함합니다. Amazon Redshift에서 GRANT를 사용하는 방법에 관한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서GRANT를 참조하십시오.

다음은 테이블, 데이터베이스, 스키마, 함수, 프로시저 또는 Amazon Redshift 테이블 및 뷰의 언어 수준 권한에 대한 특정 권한을 부여하는 구문입니다.

GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

다음은 Amazon Redshift 테이블 및 뷰에서 열 수준 권한에 대한 구문입니다.

GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | GROUP group_name | PUBLIC } [, ...]

다음은 지정된 역할을 가진 사용자 및 그룹에 부여된 ASSUMEROLE 권한에 대한 구문입니다.

GRANT ASSUMEROLE ON { 'iam_role' [, ...] | ALL } TO { username | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD } [, ...]

AWS Database Migration Service의 대상으로서 Amazon Redshift 사용 시 제한 사항

다음 제한 사항은 Amazon Redshift 데이터베이스를 대상으로 사용 시 적용됩니다.

  • Amazon Redshift 대상의 중간 스토리지로 사용하는 S3 버킷의 버전 관리를 활성화하지 마십시오. S3 버전 관리가 필요한 경우, 수명 주기 정책을 사용하여 이전 버전을 적극적으로 삭제하십시오. 그렇지 않으면 S3 list-object 직접 호출 시간 초과로 인해 엔드포인트 테스트 연결 실패가 발생할 수 있습니다. S3 버킷의 수명 주기 정책을 생성하려면 스토리지 수명 주기 관리를 참조하세요. S3 객체의 버전을 삭제하려면 버전 관리 활성화 버킷에서 객체 버전 삭제를 참조하십시오.

  • 다음 DDL은 지원되지 않습니다.

    ALTER TABLE table name MODIFY COLUMN column name data type;
  • AWS DMS는 이름이 밑줄(_)로 시작하는 스키마로 변경 사항을 마이그레이션하거나 복제할 수 없습니다. 밑줄로 시작하는 이름의 스키마가 있다면 매핑 변환을 사용하여 대상에 있는 스키마의 이름을 바꿉니다.

  • Amazon Redshift는 64KB를 초과하는 VARCHAR를 지원하지 않습니다. 기존 데이터베이스의 LOB는 Amazon Redshift에 저장할 수 없습니다.

  • 기본 키 열 이름 중 하나에서 예약어를 사용하는 경우 다중 열 기본 키가 있는 테이블에 DELETE 문을 적용하는 것은 지원되지 않습니다. Amazon Redshift 예약어 목록을 보려면 여기로 이동합니다.

  • 소스 시스템이 소스 테이블의 기본 키에 대해 UPDATE 작업을 수행하는 경우 성능 문제가 발생할 수 있습니다. 이러한 성능 문제는 대상에 변경 내용을 적용할 때 발생합니다. 이는 UPDATE(및 DELETE) 작업이 대상 행을 식별하는 기본 키 값에 의존하기 때문입니다. 소스 테이블의 기본 키를 업데이트하면 작업 로그에 다음과 같은 메시지가 포함됩니다.

    Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  • DMS는 Redshift 클러스터의 엔드포인트를 구성할 때 사용자 지정 DNS 이름을 지원하지 않으므로 Amazon에서 제공한 DNS 이름을 사용해야 합니다. Amazon Redshift 클러스터는 복제 인스턴스와 동일한 AWS 계정 및 리전에 있어야 하므로 사용자 지정 DNS 엔드포인트를 사용하면 검증이 실패합니다.

  • Amazon Redshift에는 기본적으로 4시간의 유휴 세션 제한 시간이 있습니다. DMS 복제 작업 내에 활동이 없는 경우, Redshift는 4시간 후에 세션 연결을 끊습니다. DMS를 연결할 수 없고 다시 시작해야 할 수도 있기 때문에 오류가 발생할 수 있습니다. 해결 방법으로 DMS 복제 사용자의 세션 제한 시간을 4시간 이상으로 설정하십시오. 또는 Amazon Redshift 데이터베이스 개발자 안내서ALTER USER에 관한 설명을 참조하십시오.

  • AWS DMS가 기본 키 또는 고유 키 없이 소스 테이블 데이터를 복제하는 경우, CDC 지연 시간이 길어져 허용 불가능한 수준의 성능이 발생할 수 있습니다.

AWS Database Migration Service에서 Amazon Redshift 데이터베이스를 대상으로 구성

AWS Database Migration Service은 Amazon Redshift 인스턴스를 사용할 수 있도록 구성해야 합니다. 다음 표에는 Amazon Redshift 엔드포인트에서 사용할 수 있는 구성 속성에 관한 설명이 나와 있습니다.

속성

Description

서버

사용 중인 Amazon Redshift 클러스터의 이름입니다.

포트

Amazon Redshift에 대한 포트 번호입니다. 기본값은 5439입니다.

사용자 이름

등록된 사용자의 Amazon Redshift 사용자 이름입니다.

비밀번호

사용자 이름 속성에 명명된 사용자의 암호입니다.

데이터베이스

사용 중인 Amazon Redshift 데이터 웨어하우스(서비스)의 이름입니다.

Amazon Redshift 엔드포인트에 추가 연결 문자열 속성을 추가하려면 maxFileSizefileTransferUploadStreams 속성을 지정합니다. 이 속성에 관한 자세한 내용은 Amazon Redshift를 AWS DMS의 대상으로 사용 시 엔드포인트 설정 섹션을 참조하십시오.

AWS Database Migration Service에서 대상으로서 Amazon Redshift와 함께 Enhanced VPC Routing 사용

Amazon Redshift 대상에 Enhanced VPC Routing을 사용하는 경우, Amazon Redshift 클러스터와 데이터 리포지토리 간 모든 COPY 트래픽은 VPC를 통과합니다. Enhanced VPC Routing은 Amazon Redshift가 다른 리소스에 액세스하는 방식에 영향을 주기 때문에 VPC를 올바르게 구성하지 않았다면 COPY 명령이 실패할 수 있습니다.

AWS DMS는 COPY 명령을 사용하여 S3의 데이터를 Amazon Redshift 클러스터로 이동하기 때문에 이 동작의 영향을 받을 수 있습니다.

다음은 AWS DMS에서 Amazon Redshift 대상으로 데이터를 로드하는 데 필요한 단계입니다.

  1. AWS DMS는 소스에서 복제 서버에 있는 .csv 파일로 데이터를 복사합니다.

  2. AWS DMS는 AWS SDK를 사용하여 .csv 파일을 계정에 있는 S3 버킷으로 복사합니다.

  3. 그런 다음 AWS DMS는 Amazon Redshift에서 COPY 명령을 사용하여 S3의 .csv 파일에서 Amazon Redshift의 해당 테이블로 데이터를 복사합니다.

Enhanced VPC Routing을 사용 설정하지 않은 경우, Amazon Redshift는 AWS 네트워크 내의 다른 서비스로 전송되는 트래픽을 포함하여 인터넷을 통해 트래픽을 라우팅합니다. 이 기능이 활성화되지 않을 경우, 네트워크 경로를 구성하지 않아도 됩니다. 이 기능이 활성화되면 특히 클러스터의 VPC와 사용자의 데이터 리소스 사이의 네트워크 경로를 생성해야 합니다. 필요한 구성에 관한 자세한 내용은 Amazon Redshift 설명서의 Enhanced VPC Routing을 참조하십시오.

Amazon Redshift 대상 데이터 암호화를 위한 AWS KMS 키 생성 및 사용

Amazon Redshift에 복사되기 전에 Amazon S3로 푸시되는 대상 데이터를 암호화할 수 있습니다. 이를 위해 사용자 지정 AWS KMS 키를 생성하고 사용할 수 있습니다. 생성한 키를 사용하여 Amazon Redshift 대상 엔드포인트를 생성할 때 다음 메커니즘 중 하나를 사용하여 대상 데이터를 암호화할 수 있습니다.

KMS 키를 사용하여 Amazon Redshift 대상 데이터를 암호화하려면 Amazon Redshift 데이터에 액세스할 권한이 있는 AWS Identity and Access Management(IAM) 역할이 필요합니다. 그런 다음, 생성한 암호화 키에 연결된 정책(키 정책)에서 이 IAM 역할에 액세스합니다. 이 작업은 IAM 콘솔에서 다음을 생성하여 수행할 수 있습니다.

  • AWS 관리형 정책이 있는 IAM 역할.

  • 이 역할을 참조하는 키 정책이 있는 KMS 키.

다음 절차에서 그 방법을 설명합니다.

필요한 AWS 관리형 정책으로 IAM 역할을 생성하려면
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 여세요.

  2. 탐색 창에서 역할을 선택합니다. 역할 페이지가 열립니다.

  3. 역할 생성을 선택합니다. 역할 생성 페이지가 열립니다.

  4. AWS 서비스를 신뢰할 수 있는 엔터티 유형으로 선택한 상태에서 해당 역할을 사용할 서비스로 DMS를 선택합니다.

  5. 다음: 권한을 선택합니다. 권한 정책 연결 페이지가 나타납니다.

  6. AmazonDMSRedshiftS3Role 정책을 찾아 선택합니다.

  7. 다음: 태그를 선택합니다. 태그 추가 페이지가 나타납니다. 여기서 원하는 태그를 추가할 수 있습니다.

  8. 다음: 검토를 선택하고 결과를 검토합니다.

  9. 필요한 설정이 되었다면 역할의 이름(예: DMS-Redshift-endpoint-access-role)과 추가 설명을 입력한 다음 역할 생성을 선택합니다. 역할이 생성되었다는 메시지와 함께 역할 페이지가 열립니다.

이제 암호화를 위해 Amazon Redshift 리소스에 액세스할 수 있는 지정된 이름의 새 역할이 생성되었습니다(예: DMS-Redshift-endpoint-access-role).

IAM 역할을 참조하는 키 정책이 있는 AWS KMS 암호화 키를 생성하려면
참고

AWS DMS에서 AWS KMS 암호화 키를 사용하는 방법에 관한 자세한 내용은 암호화 키 설정 및 권한 지정 AWS KMS 단원을 참조하십시오.

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/kms에서 AWS Key Management Service(AWS KMS) 콘솔을 엽니다.

  2. AWS 리전을 변경하려면 페이지의 오른쪽 상단 모서리에 있는 리전 선택기를 사용합니다.

  3. 탐색 창에서 고객 관리형 키를 선택합니다.

  4. 키 생성을 선택합니다. 키 구성 페이지가 열립니다.

  5. 키 유형에 대해 대칭을 선택합니다.

    참고

    Amazon Redshift와 같은 모든 AWS 서비스는 대칭 암호화 키로만 작동하므로 이 키를 생성하면 대칭 키만 생성할 수 있습니다.

  6. [Advanced Options]를 선택합니다. 키 구성 요소 오리진KMS가 선택되어 있는지 확인하고 다음을 선택합니다. 레이블 추가 페이지가 열립니다.

  7. 별칭 및 설명 생성에 키의 별칭(예: DMS-Redshift-endpoint-encryption-key)과 추가 설명을 입력합니다.

  8. 태그에서 키 식별과 키 사용 추적에 도움이 되는 태그를 추가한 후 다음을 선택합니다. 키 관리 권한 정의 페이지가 열리고 선택할 수 있는 사용자 및 역할 목록이 표시됩니다.

  9. 키를 관리할 사용자와 역할을 추가합니다. 키를 관리하는 데 필요한 권한이 이러한 사용자와 역할에 있는지 확인합니다.

  10. 키 삭제에서 키 관리자가 키를 삭제할 수 있는지 여부를 선택한 후 다음을 선택합니다. 키 사용 권한 정의 페이지가 열리고 선택할 수 있는 추가 사용자 및 역할 목록이 표시됩니다.

  11. 이 계정의 Amazon Redshift 대상에 대해 암호화 작업을 수행할 사용자를 선택합니다. 또한 이전에 역할에서 생성한 역할을 선택하여 Amazon Redshift 대상 객체 암호화를 위한 액세스를 활성화합니다(예: DMS-Redshift-endpoint-access-role).

  12. 목록에 없는 다른 계정을 추가하여 동일한 액세스 권한을 부여하려면 다른 AWS 계정에 대해 다른 AWS 계정 추가를 선택한 후 다음을 선택합니다. 키 정책 검토 및 편집 페이지가 열리고 기존 JSON을 입력하여 검토하고 편집할 수 있는 키 정책 JSON이 표시됩니다. 여기서 키 정책이 이전 단계에서 선택한 역할 및 사용자(예: AdminUser1)를 참조하는 위치를 확인할 수 있습니다. 다음 예에 나온 것처럼 다양한 보안 주체(사용자 및 역할)에 허용되는 다양한 키 작업도 볼 수 있습니다.

    { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
  13. 마침을 클릭합니다. AWS KMS key이 생성되었다는 메시지와 함께 암호화 키 페이지가 열립니다.

이제 지정된 별칭의 새 KMS 키가 생성되었습니다(예: DMS-Redshift-endpoint-encryption-key). 이 키를 통해 AWS DMS는 Amazon Redshift 대상 데이터를 암호화할 수 있습니다.

Amazon Redshift를 AWS DMS의 대상으로 사용 시 엔드포인트 설정

추가 연결 속성을 사용하는 것과 마찬가지로 엔드포인트 설정을 사용하여 Amazon Redshift 대상을 구성할 수 있습니다. AWS DMS 콘솔을 사용하거나 AWS CLIcreate-endpoint 명령을 --redshift-settings '{"EndpointSetting": "value", ...}' JSON 구문과 함께 사용하여 대상 엔드포인트를 생성할 때 설정을 지정합니다.

Amazon Redshift를 대상으로 하여 사용할 수 있는 엔드포인트 설정은 다음 테이블에 나와 있습니다.

명칭 Description

MaxFileSize

데이터를 Amazon Redshift로 전송할 때 사용되는 .csv 파일의 최대 크기(단위: KB)를 지정합니다.

기본값: 32768KB(32MB)

유효값: 1~1,048,576

예제: --redshift-settings '{"MaxFileSize": 512}'

FileTransferUploadStreams

단일 파일을 업로드할 때 사용되는 스레드 수를 지정합니다.

기본값: 10

유효값: 1~64

예제: --redshift-settings '{"FileTransferUploadStreams": 20}'

Acceptanydate

0000-00-00과 같이 잘못된 날짜 형식을 포함하여 모든 날짜 형식을 수락할지 여부를 지정합니다. 부울 값입니다.

기본값: false

유효값: true/false

예제: --redshift-settings '{"Acceptanydate": true}'

Dateformat

날짜 형식을 지정합니다. 문자열 입력이며 기본적으로 비어 있습니다. 기본 형식은 YYYY-MM-DD이지만 DD-MM-YYYY 등으로 변경할 수 있습니다. 날짜 또는 시간 값에 다른 형식을 사용할 경우 auto 인수와 함께 Dateformat 파라미터를 사용하십시오. auto 인수는 Dateformat 문자열을 사용할 때 지원되지 않는 몇 가지 형식을 인식합니다. auto 키워드는 대/소문자를 구별합니다.

기본값: 비어 있음

유효값: 'dateformat_string' 또는 auto

예제: --redshift-settings '{"Dateformat": "auto"}'

Timeformat

시간 형식을 지정합니다. 문자열 입력이며 기본적으로 비어 있습니다. auto 인수는 Timeformat 문자열을 사용할 때 지원되지 않는 몇 가지 형식을 인식합니다. 날짜 및 시간 값에 사용되는 형식이 서로 다를 경우 auto 인수와 함께 Timeformat 파라미터를 사용하십시오.

기본값: 10

유효값: ‘Timeformat_string’ | ‘auto’ | ‘epochsecs’ | ‘epochmillisecs’

예제: --redshift-settings '{"Timeformat": "auto"}'

Emptyasnull

AWS DMS가 비어 있는 CHAR 및 VARCHAR 필드를 null로 마이그레이션할지 지정합니다. true 값은 빈 CHAR 및 VARCHAR 필드를 null로 설정합니다.

기본값: false

유효값: true/false

예제: --redshift-settings '{"Emptyasnull": true}'

TruncateColumns

열의 데이터를 열 명세에 따라 적합한 수의 문자로 자릅니다. VARCHAR 또는 CHAR 데이터 형식의 열에만 적용되며, 행의 크기는 4MB 이하입니다.

기본값: false

유효값: true/false

예제: --redshift-settings '{"TruncateColumns": true}'

RemoveQuotes

입력 데이터의 문자열에서 묶고 있는 인용 부호를 제거합니다. 인용 부호 안의 문자는 구분자를 포함하여 모두 유지됩니다. Amazon Redshift 대상의 따옴표 제거에 관한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서를 참조하세요.

기본값: false

유효값: true/false

예제: --redshift-settings '{"RemoveQuotes": true}'

TrimBlanks

VARCHAR 문자열에서 후행 공백 문자를 제거합니다. 이 파라미터는 VARCHAR 데이터 형식의 열에만 적용됩니다.

기본값: false

유효값: true/false

예제: --redshift-settings '{"TrimBlanks": true}'

EncryptionMode Amazon Redshift로 복사되기 전에 데이터를 S3로 푸시하는 데 사용할 서버 측 암호화 모드를 지정합니다. 유효값은 SSE_S3(S3 서버 측 암호화) 또는 SSE_KMS(KMS 키 암호화)입니다. SSE_KMS를 선택하는 경우, ServerSideEncryptionKmsKeyId 파라미터를 암호화에 사용할 KMS 키의 Amazon 리소스 이름(ARN)으로 설정합니다.
참고

또한 CLI modify-endpoint 명령을 사용하여 기존 엔드포인트의 EncryptionMode 설정 값을 SSE_KMS에서 SSE_S3로 변경할 수 있습니다. 그러나 EncryptionMode 값을 SSE_S3에서 SSE_KMS로 변경할 수 없습니다.

기본 값: SSE_S3

유효값: SSE_S3 또는 SSE_KMS

예제: --redshift-settings '{"EncryptionMode": "SSE_S3"}'

ServerSideEncryptionKmsKeyId EncryptionModeSSE_KMS로 설정하는 경우, 이 파라미터를 KMS 키의 ARN으로 설정합니다. 이 ARN은 계정을 위해 생성한 AWS KMS 키 목록에서 키 별칭을 선택하면 찾을 수 있습니다. 키를 생성할 때 특정 정책과 역할을 키에 연결해야 합니다. 자세한 내용은 Amazon Redshift 대상 데이터 암호화를 위한 AWS KMS 키 생성 및 사용 섹션을 참조하세요.

예제: --redshift-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'

EnableParallelBatchInMemoryCSVFiles EnableParallelBatchInMemoryCSVFiles 설정은 DMS가 메모리 대신 디스크에 쓰도록 함으로써 대규모 다중 스레드 전체 로드 작업의 성능을 향상시킵니다. 기본 값은 false입니다.
CompressCsvFiles 이 속성을 사용하면 마이그레이션 중에 Amazon Redshift 대상으로 전송되는 데이터를 압축할 수 있습니다. 기본값은 true이며 압축은 기본적으로 활성화되어 있습니다.

데이터 암호화 키와 Amazon S3 버킷을 중간 스토리지로 사용

Amazon Redshift 대상 엔드포인트 설정을 사용하여 다음을 구성할 수 있습니다.

  • 사용자 지정 AWS KMS 데이터 암호화 키. 그런 다음, 이 키를 사용하여 Amazon Redshift에 복사되기 전에 Amazon S3로 푸시되는 데이터를 암호화할 수 있습니다.

  • Amazon Redshift로 마이그레이션한 데이터의 중간 스토리지인 사용자 지정 S3 버킷.

  • PostgreSQL 소스에서 boolean을 부울로 매핑합니다. 기본적으로 부울(BOOLEAN) 형식은 varchar(1)로 마이그레이션됩니다. 다음 예와 같이 Redshift 대상이 부울 형식을 부울로 마이그레이션하도록 MapBooleanAsBoolean을 지정할 수 있습니다.

    --redshift-settings '{"MapBooleanAsBoolean": true}'

    단, 이 설정이 적용되려면 소스 엔드포인트와 대상 엔드포인트 모두에서 이 설정을 지정해야 합니다.

데이터 암호화를 위한 KMS 키 설정

다음 예는 S3로 푸시되는 데이터를 암호화하도록 사용자 지정 KMS 키를 구성하는 방법을 보여 줍니다. 먼저 AWS CLI에서 다음 create-endpoint 호출을 할 수 있습니다.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'

여기서 --redshift-settings 옵션에 의해 지정된 JSON 객체는 다음 두 가지 파라미터를 정의합니다. 하나는 값이 SSE_KMSEncryptionMode 파라미터입니다. 다른 하나는 값이 arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1ServerSideEncryptionKmsKeyId 파라미터입니다. 이 값은 사용자 지정 KMS 키의 Amazon 리소스 이름(ARN)입니다.

기본적으로 S3 데이터 암호화는 S3 서버 측 암호화를 사용하여 수행됩니다. 이전 예의 Amazon Redshift 대상의 경우, 다음 예에서처럼 이것은 엔드포인트 설정을 지정하는 것에 해당합니다.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_S3"}'

자세한 내용은 Amazon Simple Storage Service 사용 설명서서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

참고

또한 CLI modify-endpoint 명령을 사용하여 기존 엔드포인트의 EncryptionMode 파라미터 값을 SSE_KMS에서 SSE_S3로 변경할 수 있습니다. 그러나 EncryptionMode 값을 SSE_S3에서 SSE_KMS로 변경할 수 없습니다.

Amazon S3 버킷 설정

데이터를 Amazon Redshift 대상 엔드포인트로 마이그레이션할 때 AWS DMS는 마이그레이션된 데이터를 Amazon Redshift로 복사하기 전에 중간 작업 저장 영역으로 기본 Amazon S3 버킷을 사용합니다. 예를 들어 AWS KMS 데이터 암호화 키가 있는 Amazon Redshift 대상 엔드포인트를 생성하는 예제에서는 이 기본 S3 버킷을 사용합니다(데이터 암호화를 위한 KMS 키 설정 참조).

대신 AWS CLI create-endpoint 명령의 --redshift-settings 옵션 값에 다음 파라미터를 포함하여 이 중간 스토리지에 대한 사용자 지정 S3 버킷을 지정할 수 있습니다.

  • BucketName – S3 버킷 스토리지의 이름으로 지정하는 문자열. 서비스 액세스 역할이 AmazonDMSRedshiftS3Role 정책을 기반으로 하는 경우, 이 값 앞에는 dms- 접두사(예를 들면 dms-my-bucket-name)가 붙어야 합니다.

  • BucketFolder – (선택 사항) 지정된 S3 버킷의 스토리지 폴더 이름으로 지정할 수 있는 문자열.

  • ServiceAccessRoleArn – S3 버킷에 대한 관리 액세스를 허용하는 IAM 역할의 ARN. 일반적으로 AmazonDMSRedshiftS3Role 정책에 따라 이 역할을 만듭니다. 예를 들어 Amazon Redshift 대상 데이터 암호화를 위한 AWS KMS 키 생성 및 사용에서 필수 AWS 관리형 정책을 사용하여 IAM 역할을 생성하는 절차를 참조하십시오.

    참고

    create-endpoint 명령의 --service-access-role-arn 옵션을 사용하여 다른 IAM 역할의 ARN을 지정하면 이 IAM 역할 옵션이 우선 적용됩니다.

다음 예에서는 AWS CLI를 사용하는 다음 create-endpoint 호출에서 이러한 파라미터를 사용하여 사용자 지정 Amazon S3 버킷을 지정하는 방법을 보여줍니다.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'

Amazon Redshift에 대한 멀티스레드 작업 설정

다중 스레드 작업 설정을 사용하여 Amazon Redshift 대상 엔드포인트에 대한 전체 로드 및 변경 데이터 캡처(CDC) 작업의 성능을 개선할 수 있습니다. 이를 통해 버퍼에 저장할 동시 스레드 수와 레코드 수를 지정할 수 있습니다.

Amazon Redshift에 대한 멀티스레드 전체 로드 작업 설정

전체 로드 성능을 높일 수 있도록 다음과 같은 ParallelLoad* 작업 설정을 사용할 수 있습니다.

  • ParallelLoadThreads – 데이터 레코드를 Amazon Redshift 대상 엔드포인트로 푸시하기 위해 전체 로드 중에 DMS가 사용하는 동시 스레드의 수를 지정합니다. 기본값은 0이고 최대값은 32입니다. 자세한 내용은 전체 로드 작업 설정 섹션을 참조하세요.

    ParallelLoadThreads 작업 설정을 사용할 때 false로 설정된 enableParallelBatchInMemoryCSVFiles 속성을 사용할 수 있습니다. 이 속성은 DMS가 메모리 대신 디스크에 쓰기를 수행함으로써 대규모 멀티스레드 전체 로드 작업의 성능을 향상시킵니다. 기본 값은 true입니다.

  • ParallelLoadBufferSize – Redshift 대상과 함께 병렬 로드 스레드를 사용하는 동안 최대 데이터 레코드 요청을 지정합니다. 기본값은 100이고 최대값은 1,000입니다. ParallelLoadThreads > 1(1보다 큼)인 경우 이 옵션을 사용하는 것이 좋습니다.

참고

전체 로드 중에 Amazon Redshift 대상 엔드포인트에서 ParallelLoad* 작업 설정의 사용에 대한 지원은 AWS DMS 버전 3.4.5 및 이후 버전에서 제공됩니다.

ReplaceInvalidChars Redshift 엔드포인트 설정은 변경 데이터 캡처(CDC) 중이거나 또는 병렬 로드가 활성화된 전체 로드(FULL LOAD) 마이그레이션 작업 중에는 지원되지 않습니다. 병렬 로드가 활성화되지 않은 경우, 이 설정은 전체 로드(FULL LOAD) 마이그레이션에 대해 지원됩니다. 자세한 내용은 AWS Database Migration Service API 참조RedshiftSettings를 참조하세요.

Amazon Redshift에 대한 멀티스레드 CDC 작업 설정

CDC 성능을 높일 수 있도록 다음과 같은 ParallelApply* 작업 설정을 사용할 수 있습니다.

  • ParallelApplyThreads – 데이터 레코드를 Amazon Redshift 대상 엔드포인트로 푸시하기 위해 CDC 로드 중에 AWS DMS가 사용하는 동시 스레드의 수를 지정합니다. 기본값은 0이고 최대값은 32입니다. 최소 권장값은 클러스터 내 조각 수와 같습니다.

  • ParallelApplyBufferSize – Redshift 대상과 함께 병렬 적용 스레드를 사용하는 동안 최대 데이터 레코드 요청을 지정합니다. 기본값은 100이고 최대값은 1,000입니다. ParallelApplyThreads > 1(1보다 큼)인 경우 이 옵션을 사용하는 것이 좋습니다.

    대상으로서 Redshift의 이점을 최대한 활용하려면 ParallelApplyBufferSize의 값을 ParallelApplyThreads 값의 두 배 이상으로 설정하는 것이 좋습니다.

참고

CDC 중에 Amazon Redshift 대상 엔드포인트에서 ParallelApply* 작업 설정의 사용에 대한 지원은 AWS DMS 버전 3.4.3 및 이후 버전에서 제공됩니다.

적용되는 병렬화 수준은 전체 배치 크기와 데이터 전송에 사용된 최대 파일 크기 간의 상관 관계에 따라 달라집니다. 최대 파일 크기에 비해 배치 크기가 클 때 Redshift 대상과 함께 멀티스레드 CDC 작업 설정을 사용하면 이점이 있습니다. 예를 들어, 다음과 같은 엔드포인트 및 작업 설정 조합을 사용하여 최적의 성능을 발휘하도록 조정할 수 있습니다.

// Redshift endpoint setting MaxFileSize=250000; // Task settings BatchApplyEnabled=true; BatchSplitSize =8000; BatchApplyTimeoutMax =1800; BatchApplyTimeoutMin =1800; ParallelApplyThreads=32; ParallelApplyBufferSize=100;

이전 예제의 설정을 사용하면 트랜잭션 워크로드가 많은 고객은 8000개의 레코드를 포함하는 배치 버퍼를 1800초 내에 채우고 최대 파일 크기가 250MB인 병렬 스레드 32개를 활용하여 이점을 얻을 수 있습니다.

자세한 내용은 변경 처리 튜닝 설정 섹션을 참조하세요.

참고

Redshift 클러스터로 계속 복제하는 동안 실행되는 DMS 쿼리는 실행 중인 다른 애플리케이션 쿼리와 동일한 WLM(워크로드 관리) 대기열을 공유할 수 있습니다. 따라서 Redshift 대상으로 계속 복제하는 동안 성능에 영향을 미치도록 WLM 속성을 적절하게 구성하는 것이 좋습니다. 예를 들어, 다른 병렬 ETL 쿼리가 실행 중인 경우 DMS는 더 느리게 실행되며 성능 향상은 사라집니다.

Amazon Redshift에 대한 대상 데이터 형식

AWS DMS의 Amazon Redshift 엔드포인트는 대부분의 Amazon Redshift 데이터 형식을 지원합니다. 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에서 매핑할 때 지원되는 Amazon Redshift 대상 데이터 형식이 나와 있습니다.

AWS DMS 데이터 형식에 관한 추가 정보는 AWS Database Migration Service에서 사용되는 데이터 형식 단원을 참조하십시오.

AWS DMS 데이터 유형

Amazon Redshift 데이터 형식

BOOLEAN

BOOL

BYTES

VARCHAR(길이)

날짜

날짜

TIME

VARCHAR(20)

DATETIME

Redshift 대상 열 유형에 따라 크기가 0이상이고 6이하라면 다음 중 하나가 적용됩니다.

TIMESTAMP (s)

TIMESTAMPTZ (s) — 소스 타임스탬프에 (예를 들면 SQL Server 또는 Oracle 내) 영역 오프셋이 포함된 경우, 삽입/업데이트 시 UTC로 변환됩니다. 오프셋이 없으면 시간은 이미 UTC로 간주됩니다.

크기가 7 이상이고 9 이하인 경우:

VARCHAR(37)

INT1

INT2

INT2

INT2

INT4

INT4

INT8

INT8

NUMERIC

크기가 0 이상이고 37 이하인 경우:

NUMERIC(p,s)

크기가 38 이상이고 127 이하인 경우:

VARCHAR(길이)

REAL4

FLOAT4

REAL8

FLOAT8

STRING

길이가 1~65,535인 경우, VARCHAR(바이트 단위의 길이)를 사용합니다.

길이가 65,536~2,147,483,647인 경우, VARCHAR(65535)를 사용합니다.

UINT1

INT2

UINT2

INT2

UINT4

INT4

UINT8

NUMERIC(20,0)

WSTRING

길이가 1~65,535인 경우, NVARCHAR(바이트 단위의 길이)를 사용합니다.

길이가 65,536~2,147,483,647인 경우, NVARCHAR(65535)를 사용합니다.

BLOB

VARCHAR(최대 LOB 크기 *2)

최대 LOB 크기는 31KB를 초과할 수 없습니다. Amazon Redshift는 64KB를 초과하는 VARCHAR를 지원하지 않습니다.

NCLOB

NVARCHAR(최대 LOB 크기)

최대 LOB 크기는 63KB를 초과할 수 없습니다. Amazon Redshift는 64KB를 초과하는 VARCHAR를 지원하지 않습니다.

CLOB

VARCHAR(최대 LOB 크기)

최대 LOB 크기는 63KB를 초과할 수 없습니다. Amazon Redshift는 64KB를 초과하는 VARCHAR를 지원하지 않습니다.

대상으로서 Amazon Redshift Serverless와 함께 AWS DMS를 사용

AWS DMS에서는 Amazon Redshift Serverless를 대상 엔드포인트로 사용할 수 있습니다. Amazon Redshift Serverless 사용에 관한 자세한 내용은 Amazon Redshift 관리 안내서Amazon Redshift Serverless를 참조하십시오.

이 주제에서는 Amazon Redshift Serverless 엔드포인트를 AWS DMS에서 사용하는 방법을 설명합니다.

참고

Amazon Redshift Serverless 엔드포인트를 생성할 때는 RedshiftSettings 엔드포인트 구성의 DatabaseName 필드에 Amazon Redshift 데이터 웨어하우스의 이름 또는 워크그룹 엔드포인트의 이름을 사용합니다. ServerName 필드에는 서버리스 클러스터의 Workgroup 페이지에 표시된 Endpoint 값(예: default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com)을 사용합니다. 엔드포인트 생성에 관한 자세한 내용은 소스 및 대상 엔드포인트 생성 단원을 참조하십시오. 워크그룹 엔드포인트에 관한 자세한 내용은 Amazon Redshift Serverless에 연결을 참조하십시오.

대상으로서 Amazon Redshift Serverless를 사용하는 신뢰 정책

Amazon Redshift Serverless를 대상 엔드포인트로 사용하는 경우, 다음과 같이 강조 표시된 섹션을 신뢰 정책에 추가해야 합니다. 이 신뢰 정책은 dms-access-for-endpoint 역할에 연결됩니다.

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:service:region:account:resourcetype/id", "Effect": "Allow" }, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "IsDefaultVersion": true } }

AWS DMS에서 신뢰 정책을 사용하는 방법에 관한 자세한 내용은 AWS CLI 및 AWS DMS API와 함께 사용할 IAM 역할 생성 단원을 참조하십시오.

대상으로서 Amazon Redshift Serverless 사용 시 제한 사항

Redshift Serverless를 대상으로 사용할 경우 다음과 같은 제한 사항이 있습니다.