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

최종 업데이트 날짜: 2019년 9월 30일

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

간략한 설명

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

  • 작업 상태는로드 완료, 복제 진행 중이지만 대상에 데이터가 로드되지 않습니다.
  • 작업 상태는 로드 완료, 복제 진행 중이지만 [Table statistics] 섹션에 테이블이 없습니다.
  • 작업 상태는 실행 중이고 테이블이 대상 엔드포인트에 생성되지만 데이터가 로드되지 않습니다. 복제 로그에 응답 본문 없음 오류가 표시됩니다.

해결 방법

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] 등 세 가지 중요한 필드가 있습니다. 이전 예에서 Amazon S3 소스 엔드포인트를 생성할 때 dms-folder/sub-folder/Bucket 폴더이고 dms-cdc-path/dms-cdc-sub-path/CDC 경로입니다 이 예제는 다음 테이블 구조를 참조하십시오.

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

중요: 테이블 구조의 TablePath에 버킷 폴더 경로를 포함하지 마십시오.

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

  • 버킷 폴더는 선택 사항입니다. 버킷 폴더를 지정한 경우 변경 데이터 캡처(CDC) 경로와 테이블 경로(전체 로드에 대한 [TablePath] 필드)가 Amazon S3의 동일한 폴더에 있어야 합니다. 버킷 폴더를 지정하지 않으면 TablePathCDC 경로가 S3 버킷 바로 아래에 있습니다. 예를 들어 AWS DMS는 3-bucket/dms_schema/dms_table/data.csv에서 data.csv를 읽습니다.
  • 버킷 폴더 또는 CDC 경로는 폴더 또는 하위 폴더일 수 있습니다. 예: dms-folder 또는 dms-folder/sub-folder.
  • Amazon S3 소스 엔드포인트의 [Bucket folder] 필드는 S3 버킷 이름과 테이블 구조의 스키마 이름 사이에 있습니다. 예를 들어 Amazon S3 경로가 s3://dms-test/dms-folder/my_schema/my_table/data.csv인 경우, 예제에서 dms-test는 버킷 이름이고 my_schema가 데이터베이스 스키마 이름입니다. 동일한 예제를 사용하여 Amazon S3 소스 엔드포인트를 생성한 경우 [Bucket folder] 필드는 dms-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: 파일 다운로드 실패 </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms_table/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/bucketFolder/d/d/bucketFolder/d/d/d/d/d/d/d/bucketFolms-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에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?