AWS Database Migration Service(AWS DMS)를 사용하여 소스 엔진에서 대상 엔진으로 데이터를 마이그레이션하고 있습니다. 하지만 태스크가 오류 없이 실패합니다. 이 문제를 해결하려면 어떻게 해야 합니까?
간략한 설명
AWS DMS 태스크가 실패하면 태스크 로그는 오류 메시지(E:) 또는 경고 메시지(W:)와 함께 실패 원인에 대한 정보를 제공합니다. 경우에 따라 AWS DMS 작업이 오류나 경고 없이 실패할 수 있으며, 이로 인해 원인을 해결하기가 어려울 수 있습니다. 대부분의 경우 다음 세 가지 이유 중 하나로 인해 발생합니다.
1. 복제 인스턴스의 리소스 경합
마이그레이션 태스크에 필요한 가장 중요한 두 가지 리소스는 CPU와 메모리입니다.
- 소스 데이터 형식을 AWS DMS 형식 데이터 형식으로 변환한 다음 마지막으로 대상 데이터 형식으로 변환하려면 CPU가 필요합니다.
- AWS DMS가 소스 및 대상에 대한 스트림을 생성하기 때문에 메모리가 필요합니다. AWS DMS는 복제 인스턴스의 메모리에 있는 스트림 버퍼에 정보를 저장합니다.
또한 내부 모니터링 시스템에서 복제 인스턴스를 모니터링하는 데 CPU와 메모리도 사용합니다. CPU 또는 메모리에서 경합이 발생하면 마이그레이션 태스크가 자동으로 실패할 수 있습니다.
2. 복제 인스턴스의 스토리지가 가득 찬 상태
복제 인스턴스 스토리지가 가득 찬 경우 마이그레이션 태스크가 오류 없이 자동으로 실패할 수 있습니다. 자세한 내용은 AWS DMS 복제 인스턴스의 스토리지가 가득 찬 상태인 이유는 무엇입니까?를 참조하세요.
3. 내부 오류 발생
AWS DMS 태스크는 기본적으로 기록되는 태스크 로그에 표시되지 않는 내부 오류가 있는 경우에도 자동으로 실패할 수 있습니다.
해결 방법
먼저 작업이 자동으로 실패한 후 작업 로그의 마지막 항목 시간을 확인합니다. 그런 다음 장애가 기록된 시기와 동시에 복제 인스턴스의 CPU, 메모리 및 디스크 사용률을 확인합니다.
낮은 FreeableMemory 및 높은 SwapUsage가 조합된 경우 복제 인스턴스에 메모리 경합이 있을 수 있습니다. 두 지표를 모두 확인해야 합니다. 자세한 내용은 Data Migration Service 지표를 참조하세요.
CloudWatch 지표를 보려면 다음 단계를 따르세요.
- AWS DMS 콘솔을 열고 탐색 창에서 [데이터베이스 마이그레이션 태스크(Database migration tasks)]를 선택합니다.
- 실패한 태스크의 이름을 선택합니다.
- [개요 세부 정보(Overview details)] 섹션에서 복제 인스턴스의 이름을 기록해 둡니다.
- 탐색 창에서 [복제 인스턴스(Replication instances)]를 선택합니다.
- 3단계에서 기록한 복제 인스턴스의 이름을 선택합니다.
- [마이그레이션 태스크 지표(Migration task metrics)] 섹션에서 CPUUtilization, SwapUsage, FreeableMemory 및FreeStorageSpace 지표를 볼 수 있습니다.
- 세부 정보를 보려면 지표 위에 마우스 포인터를 놓고 추가 옵션 아이콘(세로 점 3개)을 선택합니다.
- [지표로 보기(View in metrics)]를 선택합니다.
그러면 태스크가 실패한 시기의 지표 사용률을 볼 수 있는 CloudWatch 콘솔이 열립니다.
CPU 또는 메모리 경합이 일정한 경우 복제 인스턴스에서 실행 중인 작업 수를 줄이는 것이 좋습니다. 이를 위해 새 복제 인스턴스를 시작하고 여러 복제 인스턴스에 작업을 분산할 수 있습니다. 또는 복제 인스턴스를 더 큰 인스턴스 유형으로 확장하는 것이 좋습니다.
참고: T2 인스턴스는 CPU 크레딧이 소진된 후 기본 성능을 제공합니다. 예를 들어 T2.마이크로 인스턴스는 10%의 기본 성능을 제공합니다. 따라서 사용된 인스턴스 유형을 고려하여 CPU 사용률을 적절히 확인합니다. CPU 크레딧 및 기준 성능에 대한 자세한 내용은 성능 순간 확장 가능 인스턴스의 CPU 크레딧 및 기준 성능을 참조하세요.
자동 실패의 원인을 식별한 후 태스크가 다시 시작합니다.
CPU, 메모리 또는 디스크 공간에 경합이 없으면 내부 오류로 인해 작업이 실패할 가능성이 높습니다. 내부 오류를 해결하려면 5가지 로그 구성 요소 모두에 대해 세부 디버깅을 활성화합니다. 세부 디버깅을 활성화한 후 태스크를 다시 시작하고 태스크 로그를 검토하여 태스크가 실패한 이유를 확인합니다.
관련 정보
AWS Database Migration Service의 마이그레이션 태스크 문제 해결
복제 인스턴스에 최적인 크기 선택