마이그레이션의 전체 로드 완료 또는 복제 진행 단계에 있는 AWS Database Migration Service(AWS DMS) 태스크가 있습니다. 그러나 대상 데이터베이스의 다운스트림 데이터가 소스의 데이터와 일치하지 않습니다. 소스 데이터베이스와 대상 데이터베이스 간의 데이터 불일치 문제를 해결하려면 어떻게 해야 합니까?
간략한 설명
AWS DMS를 사용하여 이기종 환경에서 데이터를 마이그레이션할 때 데이터 불일치가 나타나는 데에는 여러 가지 이유가 있습니다. 예를 들어 다음과 같습니다.
- 올바른 LOB 설정을 사용하지 않는 경우 MaxLobSize 태스크 설정에 따라 데이터가 잘립니다. 따라서 대상 LOB 열에는 소스와 정확히 동일한 데이터가 포함되어 있지 않습니다.
- 이기종 마이그레이션 중에 AWS DMS는 소스 데이터 형식을 내부 데이터 유형으로 변환합니다. 그런 다음 AWS DMS는 내부 데이터를 대상 데이터 유형으로 변환합니다. 그러나 일부 소스 및 대상 데이터 유형은 AWS DMS에서 완전히 지원되지 않으므로 소스와 대상 간에 데이터가 일치하지 않을 수 있습니다.
- CDC(변경 데이터 캡처) 복제 중에 오류나 예외가 발생하면 대상 데이터베이스에서 DML 트랜잭션이 실패할 수 있습니다.
해결 방법
문제 해결 전에 초기 점검 수행
이 문서의 단계를 사용하여 문제를 해결하기 전에 다음 초기 확인을 수행합니다.
- 전체 로드 전용 태스크를 사용하는 경우 마이그레이션이 완료되었는지, 태스크가 중지된 상태인지 확인합니다.
- 전체 로드 또는 CDC 전용 태스크를 사용하는 경우 Amazon CloudWatch 지표 CDCLatencySource 및 CDCLatencyTarget을 확인합니다. 지연 시간이 관찰되지 않았는지 확인합니다.
- 소스 또는 대상 데이터베이스에 연결된 다른 애플리케이션이 없는지 확인합니다. 이로 인해 데이터가 조작될 수 있습니다. 예를 들어 전체 로드 전용 태스크를 실행하는 경우 소스의 데이터가 다른 애플리케이션에 의해 수정되면 대상에서 데이터 불일치가 발생할 수 있습니다. 또는 대상 데이터베이스에 DML 트리거가 있거나 다른 애플리케이션이 마이그레이션된 대상 테이블에 데이터를 쓰는 경우에도 대상과 소스 간의 데이터 불일치가 발생합니다.
대상에서 awsdms_validation_failures_v1 테이블을 쿼리합니다.
데이터 일관성이 주요 목표인 경우 AWS DMS 태스크를 생성할 때 검증을 활성화해야 합니다.
검증이 활성화되어 있을 경우 문제 해결
검증이 활성화되어 있으면 대상 데이터베이스에서 awsdms_Validation_failures_v1 테이블을 확인할 수 있습니다. 마이그레이션 중에 ValidationSuspended 또는 ValidationFailed 상태가 되는 레코드가 있는 경우 AWS DMS는 awsdms_validation_failures_V1에 진단 정보를 작성합니다. 다음 테이블을 쿼리하여 다음과 유사한 명령을 실행해 검증 오류를 해결합니다.
select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';
출력의 세부 정보 열을 확인하여 실패에 대한 정보를 확인합니다. 키 열을 사용하여 소스와 대상 간의 레코드 데이터를 비교합니다. 자세한 내용은 AWS DMS 데이터 검증 설명서의 문제 해결 섹션을 참조하세요.
검증이 비활성화된 경우 문제 해결
AWS DMS 태스크에 대해 검증을 비활성화한 경우 검증 전용 태스크를 생성합니다.
- 일회성 마이그레이션의 경우 전체 로드 검증 전용 기능을 사용하여 소스와 대상 간의 모든 행을 빠르게 비교합니다.
- 지속적인 복제의 경우 CDC 검증 전용 태스크를 사용합니다. CDC 검증 전용 태스크는 소스 테이블과 대상 테이블 사이의 기존 행을 검증합니다. 변경 사항이 계속 표시되면서 태스크가 계속 수행되고 모든 데이터 검증 실패가 보고됩니다.
소스 및 대상 데이터의 제한 사항 확인
일치하지 않는 데이터를 식별한 후 소스 및 대상에서 해당 데이터 유형과 관련된 제한 사항을 확인합니다. 예를 들어 PostgreSQL을 소스로 사용하는 경우 ENUM 데이터 형식을 마이그레이션할 수 없습니다.
태스크 로그에서 오류 확인
검증 실패 시 태스크 로그에서 오류를 확인합니다. 또는 제어 테이블을 확인하여 데이터 복제 단계 중에 로깅된 예외가 있는지 확인합니다.
잘림으로 인한 불일치 데이터 해결
제한적 LOB 모드를 사용하면 AWS DMS가 복제 인스턴스에서 메모리를 미리 할당합니다. 그런 다음 LoBMaxSize 태스크 설정을 사용하여 LOB 데이터를 대량으로 로드합니다. AWS DMS는 최대 LOB 크기를 초과하는 모든 LOB를 잘라낸 다음 로그 파일에 경고를 표시합니다.
로그 파일에서 데이터가 잘렸음을 나타내는 경고 메시지를 확인한 다음 해당 LOB 열의 최대 길이를 확인합니다. 데이터가 잘리지 않도록 LOB 열 길이보다 큰 LobMaxSize를 정의합니다. 진단 지원 스크립트를 사용하여 LOB 데이터가 있는 테이블을 찾은 다음 그에 따라 쿼리합니다.
LOB 열의 최대 크기가 100MB를 초과하는 경우 전체 LOB 또는 인라인 LOB 모드를 사용하여 LOB 열 데이터 잘림을 중지합니다.
관련 정보
검증 전용 태스크