AWS DMS 작업이 성공했지만 Amazon S3 소스 엔드포인트에서 데이터가 마이그레이션되지 않습니다. 이유가 무엇입니까?

최종 업데이트 날짜: 2020년 1월 23일

AWS Database Migration Service(AWS DMS) 작업이 성공했지만 Amazon Simple Storage Service(Amazon S3) 소스 엔드포인트에서 데이터가 마이그레이션되지 않습니다. 데이터가 마이그레이션되지 않는 이유는 무엇이며 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

다음은 AWS DMS 작업이 성공했지만 데이터가 마이그레이션되지 않는 가장 일반적인 시나리오입니다.

  1. 작업 상태는 Load complete, replication ongoing(로드 완료, 복제 진행 중)이지만 대상에 데이터가 로드되지 않습니다.
    작업 상태는 Load complete, replication ongoing(로드 완료, 복제 진행 중)이지만 [Table statistics(테이블 통계)] 섹션에 테이블이 없습니다.
    작업 상태는 Running(실행 중)이고 테이블이 대상 엔드포인트에 생성되지만 데이터가 로드되지 않습니다. 또한 복제 로그에 No response body(응답 본문 없음) 오류가 표시됩니다.

해결 방법

1. 작업 상태는 로드 완료, 복제 진행 중이지만 대상에 데이터가 로드되지 않습니다.

이 시나리오에서는 소스 엔드포인트에 대해 정의된 Amazon S3 경로가 올바른지 확인합니다. 복제 로그에서 AWS DMS가 소스 엔드포인트에 대해 정의된 Amazon S3 경로에서 데이터 파일을 찾을 수 없음을 나타내는 로그 항목을 검토합니다. 다음 예제 복제 로그 항목을 참조하십시오.

메시지
[SOURCE_UNLOAD ]I: 테이블 'dms_schema'.'dms_table'(Id = 1)에 대한 언로드 완료. 0개 행이 전송되었습니다. (streamcomponent.c: 3396)
[TARGET_LOAD ]I: 테이블 'dms_schema'.'dms_table' (Id = 1)에 대한 로드 완료. 0개 행을 수신했습니다. 0개 행을 건너뛰었습니다. 전송된 볼륨 0. (streamcomponent.c: 3667)

Amazon S3에서는 전체 로드 단계(data.csv)에 대한 데이터 파일과 지속적인 변경을 위한 데이터 파일(change_data.csv)이 다음과 같이 파일 경로에 저장됩니다.

  • S3-bucket/dms-folder/sub-folder/dms_schema/dms_table/data.csv
  • S3-bucket/dms-folder/sub-folder/dms-cdc-path/dms-cdc-sub-path/change_data.csv

Amazon S3 소스 엔드포인트가 데이터 파일을 찾으려면 [Bucket folder], [CDC path], [Table structure] 등 세 가지 중요한 필드가 있습니다. 이전에 나열된 예제 파일 경로에서 dms-folder/sub-folder/Bucket 폴더이고 dms-cdc-path/dms-cdc-sub-path/는 Amazon S3 소스 엔드포인트를 생성할 때 입력한 CDC 경로입니다 다음 Table structure(테이블 구조) 예제에서는 앞서 나열한 동일한 예제 파일 경로를 사용합니다.

{
  "TableCount": 1,
  "Tables": [
    {
      "TableColumns": […],
      "TableColumnsTotal": "1",
      "TableName": "dms_table",
      "TableOwner": "dms_schema",
      "TablePath": "dms_schema/dms_table/"
    }
  ]
}

중요: 테이블 구조의 TablePath에 버킷 폴더 경로(dms-folder/sub-folder)를 포함하지 마십시오.

엔드포인트 구성을 지정할 때 다음을 고려하십시오.

  • 버킷 폴더는 선택 사항입니다. 버킷 폴더를 지정한 경우 변경 데이터 캡처(CDC) 경로와 테이블 경로(전체 로드에 대한 [TablePath] 필드)가 Amazon S3의 동일한 폴더에 있어야 합니다. 버킷 폴더를 지정하지 않으면 TablePathCDC 경로가 S3 버킷 바로 아래에 있습니다. 
  • Amazon S3 소스 엔드포인트의 [Bucket folder(버킷 폴더)] 필드는 S3 버킷 이름과 테이블 구조의 스키마 이름(이 예에서는 dms-schema) 간에 있는 모든 폴더 디렉터리가 될 수 있습니다. S3 버킷 아래에 폴더 계층 구조가 없는 경우(예: 이전 예의 dms-folder/sub-folder), 필드를 비워 둘 수 있습니다.
  • 버킷 폴더 또는 CDC 경로는 개별 폴더이거나 하위 폴더를 포함할 수 있습니다. 예: dms-folder 또는 dms-folder/sub-folder.

AWS DMS 작업 설정이 Amazon S3를 소스 엔드포인트로 사용하는 경우, 데이터를 대상으로 성공적으로 마이그레이션하려면 스키마(dms_table)와 테이블(dms_table)이 테이블 매핑에 포함되어야 합니다. 자세한 내용은 Amazon S3의 소스 데이터 형식을 참조하십시오.

AWS DMS 작업의 테이블 준비 모드로 Drop tables on target(대상에 테이블 끌어놓기)을 사용하면 다음 예제와 같이 AWS DMS에서 대상 테이블 dms_schema.dms_table을 생성합니다.

CREATE TABLE 'dms_schema'.'dms_table' (…);

테이블 준비 모드로 Do nothing 또는 Truncate를 사용하는 경우, Amazon S3 소스 엔드포인트에 지정된 것과 동일한 테이블 구조로 테이블 dms_schema.dms_table을 수동으로 생성해야 합니다.

2. 작업 상태는 로드 완료, 복제 진행 중이지만 테이블 통계 섹션에 테이블이 없습니다.

테이블 준비 모드에 Drop tables on target을 사용하지 않을 때 대상 엔드포인트에 테이블이 생성되지 않은 경우, Amazon S3 소스 엔드포인트에 지정된 테이블 구조로 인해 문제가 발생할 수 있습니다.

앞서 설명한 대로 소스 엔드포인트의 Amazon S3 경로가 올바른지 확인합니다. 그런 다음 Amazon S3 엔드포인트에서 데이터 형식을 지원하는지 확인합니다.

Amazon S3 경로가 올바르고 데이터 형식이 지원되는지 확인한 후, AWS DMS 작업의 테이블 매핑이 정의한 필터를 확인하여 필터가 누락된 테이블의 원인인지 확인합니다. 작업 테이블 매핑에 필요한 테이블을 포함시키고 테이블이 Amazon S3 소스 엔드포인트의 테이블 구조에 정의되어 있는지 확인합니다.

3. 작업 상태가 실행 중이고 테이블이 대상 끝에 생성되지만 데이터가 로드되지 않습니다.

AWS DMS가 작업에 대해 정의된 Amazon S3 경로에서 콘텐츠를 가져올 수 없는 경우 복제 로그에 다음과 비슷한 오류가 표시됩니다.

메시지
[SOURCE_CAPTURE ]E: 응답 본문이 없습니다. 응답 코드: 403 [1001730](transfer_client.cpp: 589)
[SOURCE_CAPTURE] E: 파일 다운로드 실패 </dms-folder/sub-folder/dms_schema/dms_table/data.csv> from bucket <dms-test> as </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms-folder/sub-folder/dms_schema/dms_table/data.csv>, status = 4 (FAILED) [1001730] (transfer_client.cpp:592)

대부분의 경우 이 오류는 Amazon S3 소스 엔드포인트에 대한 AWS Identity and Access Management(IAM) 역할에 올바른 권한 s3: GetObject가 없을 때 발생합니다. 이 오류를 해결하려면 먼저 데이터 파일이 오류 메시지에 있는 Amazon S3 경로에 있는지 확인한 다음 IAM 사용자에게 s3: GetObject에 대한 권한이 있는지 확인합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?