AWS DMS 작업이 성공했는데도 AWS DMS가 Amazon S3 소스 엔드포인트에서 데이터를 마이그레이션하지 않은 이유는 무엇입니까?

4분 분량
0

AWS Database Migration Service(AWS DMS) 작업이 성공했지만 Amazon Simple Storage Service(Amazon S3) 소스 엔드포인트에서 데이터를 마이그레이션하지 못합니다. 이 문제를 해결하고 싶습니다.

해결 방법

AWS DMS 작업이 성공했지만 데이터를 마이그레이션하지 못하는 이유는 몇 가지가 있습니다. 사용 사례에 맞는 해결 방법을 수행하십시오.

작업 상태가 "로드 완료, 복제 진행 중"이지만 AWS DMS 작업이 대상에 데이터를 로드하지 않음

소스 엔드포인트에 대해 정의한 S3 경로가 올바른지 확인합니다. 복제 로그에서 AWS DMS가 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

데이터 파일을 찾기 위해 S3 소스 엔드포인트는 버킷 폴더, 변경 데이터 캡처(CDC) 경로 및 테이블 구조 필드를 사용합니다.

위의 예제 파일 경로에서 버킷 폴더는 dms-folder/sub-folder입니다. 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/"
    }
  ]
}

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

엔드포인트 구성을 지정할 경우 버킷 폴더는 선택 사항입니다. 버킷 폴더를 지정하는 경우 CDC 경로와 TablePath는 Amazon S3에서 동일한 폴더에 있어야 합니다. 버킷 폴더를 지정하지 않는 경우 TablePath 및 CDC 경로는 S3 버킷 바로 아래에 있습니다.

S3 소스 엔드포인트의 버킷 폴더는 버킷 이름과 테이블 구조의 스키마 이름 사이에 있는 모든 폴더 디렉터리가 될 수 있습니다. 이전 예제 테이블 구조에서 폴더 디렉터리는 dms-schema입니다. 버킷 아래에 폴더 계층 구조가 없는 경우에는 필드를 비워 두십시오.

참고: 버킷 폴더와 CDC 경로는 개별 폴더이거나, dms-folder 또는 dms-folder/sub-folder 등과 같은 하위 폴더를 포함할 수 있습니다.

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

대상에서 테이블 삭제를 작업의 테이블 준비 모드로 사용하는 경우 DMS는 dms_schema.dms_table 대상 테이블을 생성합니다.

대상 테이블 생성 명령의 예:

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

참고: Amazon S3의 폴더 및 객체 이름은 대소문자를 구분합니다. S3 엔드포인트에서 폴더 및 객체 이름을 지정할 때는 올바른 대소문자를 사용하십시오.

작업 상태가 "로드 완료, 복제 진행 중"이지만 테이블 통계 섹션에 테이블이 없음

대상에서 테이블 삭제 모드를 사용하는 경우 AWS DMS가 대상 엔드포인트에 테이블을 생성하지 않을 수 있습니다. 잘못된 S3 경로 또는 지원되지 않는 데이터 유형으로 인해 이 문제가 발생할 수 있습니다.

소스 엔드포인트의 S3 경로가 올바른지 확인합니다. 그런 다음, S3 엔드포인트가 해당 데이터 유형을 지원하는지 확인합니다.

DMS 작업의 테이블 매핑에서 정의한 필터로 인해 테이블 누락이 발생하는지 확인합니다. S3 소스 엔드포인트의 테이블 구조에서 작업 테이블 매핑에 필요한 테이블을 정의했는지 확인하십시오.

작업 상태가 "실행 중"이고 DMS 작업이 대상 엔드포인트에 테이블을 생성했지만 데이터가 로드되지 않음

AWS DMS가 S3 경로에서 데이터를 가져올 수 없는 경우 복제 로그를 사용하여 오류를 찾으십시오. 상세한 로그를 가져오려면 SOURCE_CAPTURE 로그 수준을 기본값에서 상세 디버그로 변경하십시오.

로그 예제:

[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)

복제 로그에 "응답 본문 없음" 오류가 표시됨

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

참고: 소스 버킷에서 버전 관리를 활성화한 경우 s3:GetObjectVersion 권한도 부여해야 합니다.

관련 정보

AWS DMS의 소스로 Amazon S3 사용