외래 키 제약 조건 위반 오류로 AWS DMS 작업이 실패했을 경우 어떻게 해결해야 하나요?

2분 분량
0

AWS Database Migration Service(AWS DMS) 작업이 외래 키 제약 조건 위반으로 실패했습니다.

간략한 설명

기본적으로 AWS DMS 작업에서는 전체 로드를 할 때 한 번에 8개씩 테이블을 로드합니다. 이 테이블은 따로 작업의 로드 순서를 구성하지 않으면 기본적으로 알파벳순으로 로드됩니다. 자세한 내용은 AWS Database Migration Service에서는 병렬 전체 로드와 새 LOB 마이그레이션 메커니즘을 지원하여 마이그레이션 속도를 개선합니다에서 전체 로드 중 테이블 로드 순서를 참조하세요.

상위 테이블을 먼저 로드하도록 로드 순서를 구성해야 하위 테이블이 상위 테이블보다 먼저 로드되지 않습니다. 하위 테이블이 먼저 로드되면 외래 키 제약 조건 위반 오류가 발생하여 작업이 실패합니다. 이 경우, 다음 예시와 유사한 로그 항목이 나타납니다.

[TARGET_LOAD ]E: RetCode: SQL_ERROR SqlState: 0A000 NativeError: 1 Message: ERROR: cannot truncate a table referenced in a foreign key constraint; Error while executing the query [1022502] (ar_odbc_stmt.c:4622)

[TARGET_LOAD ]E: RetCode: SQL_ERROR SqlState: HY000 NativeError: 1217 Message: [MySQL][ODBC 5.3(w) Driver][mysqld-5.7.23-log]Cannot delete or update a parent row: a foreign key constraint fails [1022502] (ar_odbc_stmt.c:4615)

복제 진행 중에는 소스와 동일한 커밋 순서로 트랜잭션을 적용하는 트랜잭션 적용 모드가 적용됩니다. 복제 진행 중인 단계에서는 대상에 외래 키 제약 조건을 활성화할 수 있습니다. 복제 진행 중에 배치 적용 모드를 사용하면 변경 데이터 캡처(CDC) 단계에서도 외래 키를 비활성화해야 합니다.

해결 방법

이 오류를 해결하려면 다음 단계 중 하나를 완료하세요.

  • 외래 키 제약 조건 비활성화
  • 대상에 테이블 드롭 모드 사용

외래 키 제약 조건 비활성화

대상이 MySQL 호환 데이터베이스인 경우 추가 연결 속성을 사용하여 외래 키 제약 조건을 비활성화할 수 있습니다.

initstmt=SET FOREIGN_KEY_CHECKS=0

대상이 PostgreSQL 호환 데이터베이스인 경우 CDC 단계에서 외래 키 위반 오류가 표시됩니다. 이 오류를 해결하려면 session_replication_role 매개변수를 복제본으로 설정하세요. 그러려면 엔드포인트에 추가 연결 속성 **afterConnectScript=SET session_replication_role='replica’**을 추가합니다. 또는 AWS 명령줄 인터페이스를 사용하여 대상 엔드포인트에 엔드포인트 설정을 추가할 수 있습니다.

다른 데이터베이스 엔진인 경우 외래 키 제약 조건을 수동으로 비활성화하거나 드롭하세요.

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

대상에 테이블 드롭 모드 사용

대상에 테이블 드롭 모드를 사용하면 AWS DMS는 전체 로드가 성공하는 데 필요한 객체만 대상에 생성합니다. 이는 AWS DMS에서 DROP_AND_CREATE 작업 설정으로 표시되기도 합니다. 그러나 대상에 테이블 드롭 모드를 사용하면 AWS DMS 외부에 다른 객체를 수동으로 생성해야 합니다. 여기에는 보조 인덱스, 데이터 기본값, 트리거와 같은 객체가 포함됩니다.

관련 정보

작업 로그를 사용하여 마이그레이션 문제 해결

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠