AWS DMS 태스크가 성공했지만 Amazon S3 소스 엔드포인트에서 데이터가 마이그레이션되지 않습니다.

4분 분량
0

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

간략한 설명

AWS DMS 태스크가 성공했지만 데이터가 마이그레이션되지 않는 가장 일반적인 이유는 다음과 같습니다.

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

해결 방법

태스크 상태는 로드 완료, 복제 진행 중(Load complete, replication ongoing)이지만 대상에 데이터가 로드되지 않습니다.

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

[SOURCE_UNLOAD ]I: Unload finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows sent. (streamcomponent.c:3396)
[TARGET_LOAD ]I: Load finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows received. 0 rows skipped. Volume transferred 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 원본 엔드포인트는 세 가지 중요한 필드를 사용하여 데이터 파일을 찾습니다.

  • 버킷 폴더
  • 변경 데이터 캡처(CDC) 경로
  • 테이블 구조

이전에 나열된 예제 파일 경로에서 dms-folder/sub-folder버킷 폴더입니다. Amazon S3 소스 엔드포인트를 생성할 때 입력하는 CDC 경로는 dms-cdc-path/dms-cdc-sub-path입니다. 다음 테이블 구조 예제에서는 앞서 나열한 동일한 예제 파일 경로를 사용합니다.

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

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

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

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

DMS 태스크 설정에서 Amazon S3를 소스 엔드포인트로 사용하는 경우 테이블 매핑에 스키마와 테이블을 포함해야 합니다. 이 작업은 데이터를 대상으로 성공적으로 마이그레이션하는 데 필요합니다. 자세한 내용은 Amazon S3의 소스 데이터 유형을 참조하십시오.

태스크에 대한 테이블 준비 모드로 **대상에 테이블 삭제(Drop tables on target)**를 사용하는 경우 DMS는 대상 테이블 dms_schema.dms_table을 생성합니다. 다음 예를 참조하세요.

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

참고: Amazon S3의 폴더 및 객체 이름은 대/소문자를 구분합니다. S3 엔드포인트에 올바른 대/소문자를 사용하여 폴더와 객체 이름을 모두 지정해야 합니다.

태스크 상태는 로드 완료, 복제 진행 중(Load complete, replication ongoing)이지만 테이블 통계 섹션에 테이블이 없습니다.

**대상에 테이블 삭제(Drop tables on target)**가 사용되었을 때 대상 엔드포인트에 테이블이 생성되지 않았을 수 있습니다. 즉, Amazon S3 소스 엔드포인트에 대해 지정된 테이블 구조로 인해 문제가 발생할 수 있습니다.

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

Amazon S3 경로가 올바르고 데이터 유형이 지원되는지 확인한 후 DMS 태스크의 테이블 매핑에 의해 정의된 필터를 확인합니다. 필터 때문에 테이블이 누락됐는지 확인합니다. 테스크 테이블 매핑 내에서 필요한 테이블을 검토하고 테이블이 Amazon S3 소스 엔드포인트의 테이블 구조에 정의되어 있는지 확인합니다.

태스크 상태는 실행 중(Running)이고 테이블이 대상 엔드포인트에 생성되지만 데이터가 로드되지 않습니다. 또한 복제 로그에 응답 본문 없음(No response body) 오류가 표시됩니다.

AWS DMS가 Amazon S3 경로에서 콘텐츠를 가져올 수 없는 경우 복제 로그에서 오류를 찾을 수 있습니다. 다음 예제를 참조하십시오.

[SOURCE_CAPTURE ]E: No response body. Response code: 403 [1001730] (transfer_client.cpp:589)
[SOURCE_CAPTURE ]E: failed to download file </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에 대한 권한이 있는지 확인합니다.
참고: 원본 Amazon S3 버킷의 버전 관리가 활성화된 경우 추가적인 s3:GetObjectVersion 권한이 필요합니다.


관련 정보

Amazon S3을 AWS DMS용 원본으로 사용