Amazon Simple Storage Service(Amazon S3)를 AWS Database Migration Service(AWS DMS) 마이그레이션 대상으로 사용할 때 일관성 없는 데이터 문제를 해결하려고 합니다.
간략한 설명
소스 데이터베이스에서 S3 버킷으로 데이터를 마이그레이션할 때, 스키마가 변경된 이후 데이터 누락, 중복된 데이터 또는 누락된 열이 나타날 수 있습니다. 이 문제가 발생하는 이유는 Amazon S3가 프라이머리 키, 업데이트 또는 참조 무결성을 지원하기 않기 때문입니다.
일관성 없는 데이터 문제를 해결하려면 각 문제에 대한 해결 방법을 완료하십시오.
해결 방법
S3 대상에서 데이터가 누락되거나 제거됨
소스 데이터베이스에서 TRUNCATE TABLE 또는 DROP TABLE 작업이 발생하는 경우, AWS DMS가 해당 작업을 Amazon S3에 복제합니다. 이 복제로 인해 데이터가 누락될 수 있습니다.
TRUNCATE 또는 DROP TABLE 작업에서 데이터 누락 또는 제거를 방지하려면 데이터 정의 언어(DDL) 처리 설정을 검토하고 조정하십시오.. 다음 단계를 완료하십시오.
-
AWS DMS 콘솔을 엽니다.
-
탐색 창의 마이그레이션 또는 복제에서 작업을 선택합니다.
-
작업을 선택합니다.
-
작업 상태가 중지됨인지 확인합니다.
-
수정을 선택합니다.
-
작업 설정을 선택합니다.
-
JSON 편집기를 선택합니다.
-
ChangeProcessingDdlHandlingPolicy 파라미터 섹션을 찾습니다. 그런 다음, HandleSourceTableTruncated 및 HandleSourceTableDropped 파라미터를 False로 설정합니다. 구성 예시:
"ChangeProcessingDdlHandlingPolicy": {
"HandleSourceTableDropped": false,
"HandleSourceTableTruncated": false
}
-
저장을 선택합니다.
-
작업을 선택한 다음, 재개를 선택합니다.
Amazon S3에 스키마 변경이 반영되지 않음
소스에서 테이블에 새 열을 추가하지만 스키마 진화를 활성화하지 않으면 AWS DMS가 해당 변경 사항을 캡처하지 않을 수 있습니다.
스키마 변경 누락을 해결하려면 다음 단계를 완료하십시오.
-
AWS DMS 콘솔을 엽니다.
-
탐색 창의 마이그레이션 또는 복제에서 작업을 선택합니다.
-
작업을 선택합니다.
-
작업 상태가 중지됨인지 확인합니다.
-
수정을 선택합니다.
-
작업 설정을 선택합니다.
-
JSON 편집기를 선택합니다.
-
ChangeProcessingDdlHandlingPolicy 파라미터 섹션을 찾습니다. 그런 다음 HandleSourceTableAltered 파라미터를 True로 설정합니다. 구성 예시:
"ChangeProcessingDdlHandlingPolicy": {
"HandleSourceTableAltered": true
}
-
저장을 선택합니다.
-
작업을 선택한 다음, 재개를 선택합니다.
-
Amazon S3 데이터에 새 열을 포함하려면 테이블을 다시 로드합니다.
작업 여러 개가 동일한 Amazon S3 경로에 데이터를 써서 데이터 중복 또는 불일치 초래
AWS DMS 작업 여러 개가 동일한 S3 경로에 데이터를 쓰는 경우, Amazon S3가 수신되는 모든 객체를 저장하기 때문에 중복 데이터가 발생합니다.
이 문제를 해결하려면 다음 단계를 완료하십시오.
- AWS DMS 콘솔을 엽니다.
- 탐색 창의 마이그레이션 또는 복제에서 작업을 선택합니다.
- 작업을 선택합니다.
- 작업 상태가 중지됨인지 확인합니다.
참고: 아직 데이터를 쓰고 있는, 미사용 작업 또는 테스트 작업을 중지하십시오.
- 탐색 창에서 엔드포인트를 선택합니다.
- 대상 엔드포인트를 선택합니다.
- 수정을 선택합니다.
- 고유한 BucketFolder 값을 할당합니다.
- 저장을 선택합니다.
참고: AWS DMS는 대상에서 복제 인스턴스로의 연결을 자동으로 테스트합니다. 연결 테스트가 성공적으로 완료되어야 합니다.
- 탐색 창의 마이그레이션 또는 복제에서 작업을 선택합니다.
- 작업(task)을 선택한 다음, 작업(Actions)을 선택합니다. 재시작을 선택합니다.
- 동일한 소스에서 복제하는 각 작업에 대하여 2~11단계를 반복합니다.
TargetTablePrepMode가 DO_NOTHING으로 설정되어 중복 레코드 초래
작업에 대하여 TargetTablePrepMode를 DO_NOTHING으로 설정하고 작업이 전체 로드 중에 중지되면, 작업을 재시작할 때 해당 작업이 전체 로드 파일을 다시 작성합니다. 이렇게 하면 Amazon S3가 자동 업데이트 또는 정리를 지원하지 않으므로 전체 로드 데이터가 중복됩니다.
이 문제를 해결하려면 다음 단계를 완료하십시오.
- AWS DMS 콘솔을 엽니다.
- 탐색 창의 마이그레이션 또는 복제에서 작업을 선택합니다.
- 작업을 선택합니다.
- 작업 상태가 중지됨인지 확인합니다.
- 수정을 선택합니다.
- 작업 설정을 선택합니다.
- JSON 편집기를 선택합니다.
- FullLoadSettings 파라미터 섹션을 찾습니다. TargetTablePrepMode를 TRUNCATE_BEFORE_LOAD로 설정합니다. 구성 예시:
"FullLoadSettings": {
"TargetTablePrepMode": "TRUNCATE_BEFORE_LOAD"
}
참고: TargetTablePrepMode가 DO_NOTHING으로 설정되어 발생하는 중복을 방지하려면 전체 로드 단계가 완료된 이후에만 작업을 중지하십시오.
- 작업을 재시작하기 전에, 이전에 작성된 전체 로드 파일을 S3 버킷에서 수동으로 삭제합니다.
관련 정보
Amazon S3를 AWS DMS 대상으로 사용할 때 엔드포인트 설정
Amazon S3를 대상으로 사용할 때 제한 사항