AWS DMS 태스크 모니터링 - AWS Database Migration Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS DMS 태스크 모니터링

모니터링은 AWS DMS와 사용자 AWS 솔루션의 안정성, 가용성 및 성능을 유지하는 중요한 역할을 합니다. 다중 지점 실패가 발생할 경우 보다 쉽게 디버깅할 수 있도록 AWS 솔루션의 모든 부분으로부터 모니터링 데이터를 수집해야 합니다. AWS는 AWS DMS 작업 및 리소스를 모니터링하고 잠재적 인시던트에 대응하기 위한 여러 도구를 제공합니다.

AWS DMS 이벤트 및 알림

AWS DMS는 Amazon Simple Notification Service(Amazon SNS)를 사용하여 AWS DMS 이벤트(예: 복제 인스턴스 생성 또는 삭제)가 발생할 때 알림을 제공합니다. AWS DMS는 구독할 수 있는 범주로 이벤트를 그룹화하므로 사용자는 해당 범주의 이벤트가 발생할 때 알림을 받을 수 있습니다. 예를 들어 임의의 복제 인스턴스에 대한 생성 카테고리를 구독할 경우 생성 관련 이벤트가 발생하여 복제 인스턴스에 영향을 끼칠 때마다 알림 메시지가 수신됩니다. AWS 리전에 따라 Amazon SNS에서 지원하는 형식으로 이메일 메시지, 문자 또는 HTTP 엔드포인트 직접 호출 등의 알림을 사용할 수 있습니다. 자세한 정보는 AWS Database Migration Service에서 Amazon SNS 이벤트 및 알림 사용 섹션을 참조하세요.

작업 상태

작업 상태를 확인하고 작업의 제어 테이블을 확인하여 작업 진행률을 모니터링할 수 있습니다. 작업 상태는 AWS DMS 작업 및 연결된 리소스의 상태를 나타냅니다. 여기에는 작업이 생성, 시작, 실행 또는 중지되는 경우와 같은 표시가 포함됩니다. 또한 테이블 전체 로드가 시작되었거나 진행 중인 경우와 같이 작업이 마이그레이션하는 테이블의 현재 상태와 테이블에서 발생한 삽입, 삭제 및 업데이트 횟수와 같은 세부 정보가 포함됩니다. 작업 및 작업 리소스 상태 모니터링에 대한 자세한 내용은 작업 상태작업 중 테이블 상태 섹션을 참조하세요. 제어 테이블에 대한 자세한 내용은 제어 테이블 작업 설정 섹션을 참조하세요.

Amazon CloudWatch 경보 및 로그

Amazon CloudWatch 경보를 사용하여 지정한 기간 동안 하나 이상의 작업 지표를 감시합니다. 지표가 지정된 임계값을 초과하면 Amazon SNS 주제로 알림이 전송됩니다. CloudWatch 경보는 단순히 특정 상태에 있다고 해서 작업을 호출하지 않습니다. 상태가 변경되어 지정된 기간 동안 유지되어야 합니다. 또한 AWS DMS는 마이그레이션 프로세스 도중 CloudWatch를 사용하여 태스크 정보를 기록합니다. AWS CLI 또는 AWS DMS API를 사용하여 작업 로그에 대한 정보를 볼 수 있습니다. CloudWatch를 AWS DMS와 함께 사용하는 자세한 방법은 Amazon CloudWatch를 사용한 복제 태스크 모니터링 섹션을 참조하세요. AWS DMS 지표 모니터링에 대한 자세한 내용은 AWS Database Migration Service 지표 섹션을 참조하세요. AWS DMS 작업 로그 사용에 대한 자세한 내용은 AWS DMS 태스크 로그 보기 및 관리 섹션을 참조하세요.

Time Travel 로그

AWS DMS Time Travel을 사용하여 복제 태스크를 기록하고 디버깅할 수 있습니다. 이 방식에서는 Amazon S3를 사용하여 로그를 저장하고 암호화 키를 사용하여 로그를 암호화합니다. 날짜-시간 필터를 사용하여 S3 로그를 검색한 다음, 필요에 따라 로그를 보고 다운로드하고 난독화할 수 있습니다. 이렇게 하면 ‘과거로 이동’하여 데이터베이스 활동을 조사할 수 있습니다.

Time Travel은 DMS가 지원하는 PostgreSQL 소스 엔드포인트와 DMS가 지원하는 PostgreSQL 및 MySQL 대상 엔드포인트와 함께 사용할 수 있습니다. Time Travel은 전체 로드 및 CDC 태스크 및 CDC 전용 태스크에만 사용할 수 있습니다. Time Travel을 활성화하거나 기존의 Time Travel 설정을 수정하려면 태스크를 중지해야 합니다.

Time Travel 로그에 대한 자세한 내용은 Time Travel 작업 설정 섹션을 참조하세요. Time Travel 로그 사용에 대한 모범 사례는 Time Travel을 통한 복제 태스크 문제 해결 섹션을 참조하세요.

AWS CloudTrail 로그

AWS DMS는 AWS DMS에서 사용자, IAM 역할 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스인 AWS CloudTrail와 통합됩니다. CloudTrail은 AWS DMS 콘솔의 호출, AWS DMS API 작업에 대한 코드 호출을 포함하여 AWS DMS에 대한 모든 API 직접 호출을 이벤트로 캡처합니다. 추적을 생성하면 AWS DMS 이벤트를 포함한 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포할 수 있습니다. 추적을 구성하지 않은 경우에도 CloudTrail 콘솔의 이벤트 기록에서 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 AWS DMS에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다. 자세한 내용은 AWS CloudTrail을 사용하여 AWS DMS API 호출 로깅 섹션을 참조하세요.

데이터베이스 로그

AWS 데이터베이스 서비스에 대해 AWS Management Console, AWS CLI 또는 API를 사용하여 작업 엔드포인트의 데이터베이스 로그를 보고, 다운로드하고, 감시할 수 있습니다. 자세한 내용은 AWS 설명서에서 해당 데이터베이스 서비스 설명서를 참조하세요.

자세한 내용은 다음 항목을 참조하세요.

작업 상태

태스크 상태는 말 그대로 태스크의 상태를 나타냅니다. 다음 테이블은 작업이 가질 수 있는 가능한 상태를 나타냅니다.

작업 상태 설명

[생성 중]

AWS DMS가 태스크를 생성하는 중입니다.

[실행 중]

작업이 지정된 마이그레이션 업무를 수행하고 있습니다.

[중지됨]

작업이 중지됩니다.

[중지 중]

작업이 중지되고 있습니다. 대개 작업에서 사용자 개입을 나타냅니다.

[삭제 중]

보통 사용자 개입 요청을 통해 작업이 삭제되고 있습니다.

실패함

작업에 실패했습니다. 자세한 내용은 태스크 로그 파일을 참조하세요.

오류

오류로 인해 태스크가 중지되었습니다. 태스크 오류에 대한 간략한 설명은 개요 탭의 마지막 실패 메시지 섹션에 나와 있습니다.

실행 중(오류 포함)

태스크가 오류 상태로 실행 중입니다. 이는 일반적으로 태스크에 있는 하나 이상의 테이블을 마이그레이션할 수 없음을 나타냅니다. 태스크는 선택 규칙에 따라 다른 테이블을 계속 로드합니다.

[시작됨]

작업이 복제 인스턴스와 원본 및 대상 엔드포인트에 연결되고 있습니다. 모든 필터와 변환이 적용되고 있습니다.

[준비됨]

작업을 실행할 준비가 되어 있습니다. 이 상태 다음에는 대개 "생성" 상태가 나옵니다.

수정 중

작업이 수정되고 있습니다. 대개 작업 설정을 수정한 사용자 작업으로 인한 것입니다.

이동 중

태스크가 다른 복제 인스턴스로 이동하는 중입니다. 이동이 완료될 때까지 복제는 이 상태로 유지됩니다. 복제 태스크가 이동 중인 동안에는 태스크 삭제 작업만 허용됩니다.

이동 실패

어떤 이유로든 태스크 이동이 실패했습니다(예: 대상 복제 인스턴스에 스토리지 공간이 부족). 복제 태스크가 이 상태일 때는 태스크를 시작, 수정, 이동 또는 삭제할 수 있습니다.

테스트

이 태스크에 지정된 데이터베이스 마이그레이션이 StartReplicationTaskAssessmentRun 또는 StartReplicationTaskAssessment 작업 실행에 대한 응답으로 테스트되고 있습니다.

작업 상태 표시줄은 작업 진행률의 추정치를 나타냅니다. 이 추정치의 품질은 소스 데이터베이스의 테이블 통계 품질에 따라 달라지며, 테이블 통계 품질이 좋을수록 추정 정확도가 높아집니다. 추정 행 통계 없이 단 하나의 테이블을 사용하는 작업의 경우, 모든 유형의 완료율 추정치를 제공할 수 없습니다. 이 경우에 작업 상태와 로드되는 행 표시를 사용하여 작업이 실제로 실행되고 진행되고 있음을 확인할 수 있습니다.

DMS 콘솔은 ‘마지막 업데이트’ 열에 AWS DMS가 테이블의 테이블 통계 레코드를 마지막으로 업데이트한 시간만 표시합니다. 테이블에 대한 마지막 업데이트 시간을 표시하지 않습니다.

DMS 콘솔을 사용하는 것 외에도 다음 예와 같이 AWS CLIaws dms describe-replication-tasks 명령을 사용하여 태스크 상태를 비롯한 현재 복제 태스크에 대한 설명을 출력할 수 있습니다.

{ "ReplicationTasks": [ { "ReplicationTaskIdentifier": "moveit2", "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:6GGI6YPWWGAYUVLKIB732KEVWA", "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:EOM4SFKCZEYHZBFGAGZT3QEC5U", "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:T3OM7OUB5NM2LCVZF7JPGJRNUE", "MigrationType": "full-load", "TableMappings": ...output omitted... , "ReplicationTaskSettings": ...output omitted... , "Status": "stopped", "StopReason": "Stop Reason FULL_LOAD_ONLY_FINISHED", "ReplicationTaskCreationDate": 1590524772.505, "ReplicationTaskStartDate": 1590619805.212, "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:task:K55IUCGBASJS5VHZJIINA45FII", "ReplicationTaskStats": { "FullLoadProgressPercent": 100, "ElapsedTimeMillis": 0, "TablesLoaded": 0, "TablesLoading": 0, "TablesQueued": 0, "TablesErrored": 0, "FreshStartDate": 1590619811.528, "StartDate": 1590619811.528, "StopDate": 1590619842.068 } } ] }

작업 중 테이블 상태

AWS DMS 콘솔은 마이그레이션 중에 테이블 상태에 대한 정보를 업데이트합니다. 다음 표에는 가능한 상태 값이 나와 있습니다.


             AWS Database Migration Service 복제 인스턴스
상태 설명

테이블 없음

AWS DMS가 소스 엔드포인트에서 테이블을 찾을 수 없습니다.

로드 전

전체 로드 프로세스가 활성화되었지만, 아직 시작되지 않았습니다.

전체 로드

전체 로드 프로세스가 진행되고 있습니다.

테이블 완료

전체 로드가 완료되었습니다.

테이블 취소

테이블 로드가 취소되었습니다.

테이블 오류

테이블을 로드하는 동안 오류가 발생했습니다.

Amazon CloudWatch를 사용한 복제 태스크 모니터링

Amazon CloudWatch 경보 또는 이벤트를 사용하여 마이그레이션을 더욱 면밀하게 추적할 수 있습니다. Amazon CloudWatch에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서의 Amazon CloudWatch, Amazon CloudWatch Events 및 Amazon CloudWatch Logs란 무엇입니까?를 참조하세요. Amazon CloudWatch 사용 시 비용이 청구됩니다.

복제 태스크에서 CloudWatch 로그가 생성되지 않는 경우 문제 해결 안내서에서 AWS DMS CloudWatch 로그를 생성하지 않습니다. 섹션을 참조하세요.

AWS DMS 콘솔에는 다음 그림과 같이 작업 상태, 완료율, 경과 시간 및 테이블 통계 등 각 작업별로 기본 CloudWatch 통계가 표시됩니다. 복제 태스크를 선택한 다음 CloudWatch 지표 탭을 선택합니다.

CloudWatch 태스크 로그 설정을 보고 수정하려면 태스크 로깅 수정을 선택합니다. 자세한 내용은 작업 설정 로깅 섹션을 참조하세요.


            AWS DMS 모니터링

AWS DMS 콘솔에서 테이블 통계 탭을 선택하면 삽입, 삭제, 업데이트 개수 등 각 테이블별로 성능 통계가 표시됩니다.


            AWS DMS 모니터링

또한, 복제 인스턴스 페이지에서 복제 인스턴스를 선택하는 경우 CloudWatch 지표 탭을 선택하여 인스턴스의 성능 지표를 확인할 수 있습니다.


            AWS DMS 모니터링

AWS Database Migration Service 지표

AWS DMS는 다음 항목의 통계를 제공합니다.

  • 호스트 지표 - Amazon CloudWatch에서 제공하는 복제 호스트에 대한 성능 및 사용률 통계. 사용 가능한 전체 측정치 목록은 복제 인스턴스 지표 섹션을 참조하세요.

  • 복제 태스크 지표 - 들어오는 변경 사항과 커밋된 변경 사항, 복제 호스트와 소스 및 대상 데이터베이스 사이의 지연 시간을 포함한 복제 태스크 통계. 사용 가능한 전체 측정치 목록은 복제 작업 지표 섹션을 참조하세요.

  • 테이블 지표 - 완료된 삽입, 업데이트, 삭제 및 DDL 문 개수를 포함하여 마이그레이션 중인 테이블에 대한 통계.

작업 지표는 복제 호스트와 원본 엔드포인트 간의 통계, 그리고 복제 호스트와 대상 엔드포인트 간의 통계로 나뉩니다. 관련 통계 2개를 모두 추가하여 작업의 총 통계를 확인할 수 있습니다. 예를 들어, [CDCLatencySource]와 [CDCLatencyTarget] 값을 결합하여 작업의 총 지연 시간 또는 복제 지연을 확인할 수 있습니다.

작업 지표 값은 원본 데이터베이스에서 현재 작업의 영향을 받을 수 있습니다. 예를 들어, 트랜잭션이 시작되었지만 커밋되지 않은 경우, [CDCLatencySource] 지표는 트랜잭션이 커밋될 때까지 계속 증가합니다.

복제 인스턴스의 경우, [FreeableMemory] 측정치에 대한 명확한 이해가 필요합니다. 여유 메모리는 사용 가능한 실제 여유 메모리를 나타내지 않습니다. 해제하여 다른 용도로 사용할 수 있는 현재 사용 중인 메모리로, 여유 복제 인스턴스에 사용 중인 버퍼 및 캐시의 조합입니다.

[FreeableMemory] 측정치에는 사용 가능한 실제 여유 메모리가 반영되지 않지만, [FreeableMemory] 및 [SwapUsage] 측정치를 보고 복제 인스턴스가 오버로드되었는지 여부를 알 수 있습니다.

다음 조건에 대해 이 두 측정치를 모니터링합니다.

  • FreeableMemory 측정치가 0에 가까움.

  • SwapUsage 측정치가 증가하거나 변동이 있음.

이러한 두 가지 상태 중 하나에 해당하는 경우 이는 대규모 복제 인스턴스로 전환하는 것을 고려해야 함을 나타냅니다. 또한 복제 인스턴스에서 실행 중인 작업 수와 유형을 줄이기는 것도 고려해 보아야 합니다. 전체 로드 작업에는 변경 내용만을 복제하는 작업보다 더 많은 메모리가 요구됩니다.

AWS DMS 마이그레이션 태스크에 필요한 실제 메모리 요구 사항을 대략적으로 추정하려면 다음 파라미터를 사용할 수 있습니다.

LOB 열

마이그레이션 범위 내 각 테이블의 평균 LOB 열 수입니다.

[Maximum number of tables to load in parallel]

AWS DMS가 단일 태스크에서 병렬로 로드되는 최대 테이블 수입니다.

기본값은 8입니다.

LOB 청크 크기

AWS DMS가 데이터를 대상 데이터베이스에 복제하는 데 사용하는 LOB 청크의 크기(KB)입니다.

전체 로드 중 커밋 비율

AWS DMS가 병렬로 전송할 수 있는 최대 레코드 수입니다.

기본값은 10,000입니다.

LOB 크기

개별 LOB의 최대 크기(KB)입니다.

대량 배열 크기

엔드포인트 드라이버에서 가져오거나 처리하는 최대 행 수입니다. 이 값은 드라이버 설정에 따라 달라집니다.

기본값은 1000입니다.

이러한 값을 결정한 후 다음 방법 중 하나를 사용하여 마이그레이션 태스크에 필요한 메모리 양을 추정할 수 있습니다. 이러한 방법은 마이그레이션 태스크의 LOB 열 설정에서 선택한 옵션에 따라 달라집니다.

  • 전체 LOB 모드의 경우 다음 공식을 사용합니다.

    Required memory = (LOB columns) * (Maximum number of tables to load in parallel) * (LOB chunk size) * (Commit rate during full load)

    소스 테이블에 평균 2개의 LOB 열이 포함되어 있고 LOB 청크 크기가 64KB인 경우를 예로 들어 보겠습니다. Maximum number of tables to load in parallelCommit rate during full load에 기본값을 사용하는 경우 태스크에 필요한 메모리 양은 다음과 같습니다.

    Required memory = 2 * 8 * 64 * 10,000 = 10,240,000 KB

    참고

    전체 로드 중 커밋 비율 값을 줄이려면 AWS DMS 콘솔을 열고 데이터베이스 마이그레이션 태스크를 선택한 다음, 태스크를 생성하거나 수정합니다. 고급 설정을 확장하고 전체 로드 중 커밋 비율 값을 입력합니다.

  • 제한적 LOB 모드의 경우 다음 공식을 사용합니다.

    Required memory = (LOB columns) * (Maximum number of tables to load in parallel) * (LOB size) * (Bulk array size)

    소스 테이블에 평균 2개의 LOB 열이 포함되어 있고 개별 LOB의 최대 크기가 4,096KB인 경우를 예로 들어 보겠습니다. Maximum number of tables to load in parallelBulk array size에 기본값을 사용하는 경우 태스크에 필요한 메모리 양은 다음과 같습니다.

    Required memory = 2 * 8 * 4,096 * 1,000 = 65,536,000 KB

AWS DMS가 변환을 최적으로 수행하려면 변환이 발생할 때 CPU를 사용할 수 있어야 합니다. CPU에 과부하가 걸리고 CPU 리소스가 충분하지 않으면 마이그레이션 속도가 느려질 수 있습니다. AWS DMS는 CPU 집약적일 수 있는데, 특히 Oracle에서 PostgreSQL로 마이그레이션하는 것과 같은 이기종 마이그레이션 및 복제를 수행할 때 그렇습니다. C4 복제 인스턴스 클래스 사용은 이러한 상황에서 훌륭한 선택이 될 수 있습니다. 자세한 내용은 마이그레이션에 적합한 AWS DMS 복제 인스턴스 선택 섹션을 참조하세요.

복제 인스턴스 지표

복제 인스턴스 모니터링에는 다음 통계의 Amazon CloudWatch 지표가 포함됩니다.

지표

설명

AvailableMemory

스와핑 없이 새 애플리케이션을 시작하는 데 사용할 수 있는 메모리의 크기. 자세한 내용은 Linux man-pages 페이지의 /proc/memInfo 단원에서 MemAvailable 값을 참조하세요.

단위: 바이트

CPUAllocated

태스크에 최대로 할당된 CPU의 비율(0은 제한이 없음을 의미함).

AWS DMS는 CloudWatch 콘솔의 ReplicationInstanceIdentiferReplicationTaskIdentifier 차원을 합친 것과 비교하여 이 지표를 높입니다. ReplicationInstanceIdentifier, ReplicationTaskIdentifier 범주를 사용하여 이 지표를 볼 수 있습니다.

단위: 백분율

CPUUtilization

인스턴스에서 현재 사용 중인 할당된 vCPU(가상 CPU)의 비율입니다.

단위: 백분율

DiskQueueDepth

디스크 액세스를 대기 중인 읽기/쓰기 요청(I/O) 수입니다.

단위: 개수

FreeStorageSpace

사용 가능한 스토리지 공간 크기입니다.

단위: 바이트

FreeMemory

애플리케이션, 페이지 캐시, 커널 자체 데이터 구조에서 사용할 수 있는 물리적 메모리의 양입니다. 자세한 내용은 Linux man-pages 페이지의 /proc/memInfo 단원에서 MemFree 값을 참조하세요.

단위: 바이트

FreeableMemory

사용 가능한 RAM 크기입니다.

단위: 바이트

MemoryAllocated

태스크에 대한 최대 메모리 할당량입니다(0은 제한이 없음을 의미함).

AWS DMS는 CloudWatch 콘솔의 ReplicationInstanceIdentiferReplicationTaskIdentifier 차원을 합친 것과 비교하여 이 지표를 높입니다. ReplicationInstanceIdentifier, ReplicationTaskIdentifier 범주를 사용하여 이 지표를 볼 수 있습니다.

단위: MiB

WriteIOPS

초당 평균 디스크 쓰기 I/O 연산 수

단위: 개수/초

ReadIOPS

초당 평균 디스크 읽기 I/O 연산 수

단위: 개수/초

WriteThroughput

초당 디스크에 쓴 평균 바이트 수.

단위: 바이트/초

ReadThroughput

초당 디스크에서 읽은 평균 바이트 수입니다.

단위: 바이트/초

WriteLatency

디스크 I/O (출력) 연산당 평균 처리 시간.

단위: 밀리초

ReadLatency

디스크 I/O (입력) 연산당 평균 처리 시간.

단위: 밀리초

SwapUsage

복제 인스턴스에서 사용된 스왑 공간 크기.

단위: 바이트

NetworkTransmitThroughput

복제 인스턴스의 송신 네트워크 트래픽입니다(고객 데이터베이스 트래픽과 모니터링과 복제에 사용되는 AWS DMS 트래픽을 모두 포함).

단위: 바이트/초

NetworkReceiveThroughput

복제 인스턴스의 수신 네트워크 트래픽입니다(고객 데이터베이스 트래픽과 모니터링 및 복제에 사용된 AWS DMS 트래픽을 모두 포함).

단위: 바이트/초

복제 작업 지표

복제 태스크 모니터링에는 다음 통계의 지표가 포함됩니다.

지표

설명

FullLoadThroughputBandwidthTarget

대상 전체 로드의 발신 데이터(초당 KB 단위).

FullLoadThroughputRowsTarget

대상 전체 로드의 발신 변경 사항(초당 행 수 단위).

CDCIncomingChanges

대상에 적용되기를 기다리고 있는 특정 시점의 총 변경 이벤트 수입니다. 이 값은 소스 엔드포인트의 트랜잭션 변경 비율 측정치와 같지 않습니다. 이 측정치의 값이 크면 일반적으로 AWS DMS가 캡처한 변경 사항을 적시에 적용할 수 없어서 대상 지연 시간이 길어짐을 의미합니다.

CDCChangesMemorySource

메모리에서 누적되면서 원본에서 커밋되기를 대기하는 행 개수. 이 지표를 CDCChangesDiskSource와 함께 확인할 수 있습니다.

CDCChangesMemoryTarget

메모리에서 누적되면서 대상으로 커밋되기를 대기하는 행 개수. 이 지표를 CDCChangesDiskTarget과 함께 확인할 수 있습니다.

CDCChangesDiskSource

디스크에서 누적되면서 원본에서 커밋되기를 대기하는 행 개수. 이 지표를 CDCChangesMemorySource와 함께 확인할 수 있습니다.

CDCChangesDiskTarget

디스크에서 누적되면서 대상으로 커밋되기를 대기하는 행 개수. 이 지표를 CDCChangesMemoryTarget과 함께 확인할 수 있습니다.

CDCThroughputBandwidthTarget

대상의 발신 데이터(초당 KB 단위). CDCThroughputBandwidth는 샘플링 포인트에서 전송된 송신 데이터를 기록합니다. 어떠한 태스크 네트워크 트래픽도 찾을 수 없다면 이 값은 0입니다. CDC는 장시간 트랜잭션을 할 수 없기 때문에 네트워크 트래픽은 기록되지 않을 수 있습니다.

CDCThroughputRowsSource

원본의 수신 작업 수신 변경 사항 개수(초당 행 수 단위).

CDCThroughputRowsTarget

대상의 발신 작업 변경 사항 개수(초당 행 수 단위).

CDCLatencySource

소스 엔드포인트에서 캡처한 마지막 이벤트와 AWS DMS 인스턴스의 현재 시스템 타임스탬프 간의 간격(초)입니다. CDCLatencySource는 소스 인스턴스와 복제 인스턴스 간의 지연 시간을 나타냅니다. CDCLatencySource가 높으면 소스에서 변경 사항을 캡처하는 프로세스가 지연되었음을 나타냅니다. 지속적 복제의 지연 시간을 식별하기 위해 이 지표를 CDCLatencyTarget과 함께 확인할 수 있습니다. CDCLatencySource와 CDCLatencyTarget이 모두 높으면 CDCLatencySource를 먼저 조사하세요.

소스 인스턴스와 복제 인스턴스 간에 복제 지연이 없는 경우 CDCSourceLatency는 0이 될 수 있습니다. 복제 태스크에서 소스의 트랜잭션 로그에서 다음 이벤트를 읽으려고 시도하고 소스에서 마지막으로 읽은 때와 비교하여 새 이벤트가 없는 경우에도 CDCSourceLatency는 0이 될 수 있습니다. 이 경우 태스크는 CDCSourceLatency를 0으로 재설정합니다.

CDCLatencyTarget

대상에 커밋되기를 대기하는 첫 이벤트 타임스탬프와 AWS DMS 인스턴스의 현재 타임스탬프 사이의 간격(초)입니다. 대상 지연 시간은 복제 인스턴스 서버 시간과 대상 구성 요소에 전달된 확인되지 않은 가장 오래된 이벤트 ID 간의 차이입니다. 즉, 대상 지연 시간은 복제 인스턴스와 적용되었지만 TRG 엔드포인트에서 확인되지 않은 가장 오래된 이벤트 간의 타임스탬프 차이입니다(99%). CDCLatencyTarget이 높으면 대상에 변경 이벤트를 적용하는 프로세스가 지연되었음을 나타냅니다. 지속적 복제의 지연 시간을 식별하기 위해 이 지표를 CDCLatencySource와 함께 확인할 수 있습니다. CDCLatencyTarget은 높지만 CDCLatencySource는 높지 않은 경우 다음을 조사하세요.

  • 대상에 프라이머리 키 또는 인덱스가 없음

  • 대상 또는 복제 인스턴스에서 리소스 병목 현상이 발생함

  • 복제 인스턴스와 대상 사이에 네트워크 문제가 있음

CPUUtilization

태스크가 여러 코어에 걸쳐 사용하는 CPU의 비율입니다. 태스크 CPUUtilization의 의미는 복제 CPUUtilization과 약간 다릅니다. 하나의 vCPU가 완전히 사용되는 경우 100%를 나타내지만 여러 vCPU가 사용되는 경우에는 값이 100%를 초과할 수 있습니다.

단위: 백분율

SwapUsage

태스크가 사용하는 스왑의 양.

단위: 바이트

MemoryUsage

태스크에서 소비한 제어 그룹(cgroup) memory.usage_in_bytes DMS는 cgroup을 사용하여 메모리 및 CPU와 같은 시스템 리소스의 사용을 제어합니다. 이 지표는 해당 태스크에 할당된 cgroup 내에서 태스크의 메모리 사용량을 메가바이트 단위로 나타냅니다. cgroup 한도는 DMS 복제 인스턴스 클래스에 사용할 수 있는 리소스를 기반으로 합니다. memory.usage_in_bytes는 메모리의 RSS(상주 세트 크기), 캐시 및 스왑 구성 요소로 구성됩니다. 필요한 경우 운영 체제가 캐시 메모리를 회수할 수 있습니다. 복제 인스턴스 지표인 AvailableMemory도 모니터링하는 것이 좋습니다.

AWS DMS는 CloudWatch 콘솔의 ReplicationInstanceIdentiferReplicationTaskIdentifier 차원을 합친 것과 비교하여 이 지표를 높입니다. ReplicationInstanceIdentifier, ReplicationTaskIdentifier 범주를 사용하여 이 지표를 볼 수 있습니다.

AWS DMS 태스크 로그 보기 및 관리

Amazon CloudWatch를 사용하여 AWS DMS 마이그레이션 프로세스 중에 태스크 정보를 로깅할 수 있습니다. 작업 설정을 선택할 때 로깅을 활성화합니다. 자세한 내용은 작업 설정 로깅 섹션을 참조하세요.

실행된 작업의 로그를 보려면 다음 단계를 따르세요.

  1. AWS DMS 콘솔을 열고 탐색 창에서 데이터베이스 마이그레이션 태스크를 선택합니다. 데이터베이스 마이그레이션 태스크 대화 상자가 나타납니다.

  2. 작업 이름을 선택합니다. 개요 세부 정보 대화 상자가 나타납니다.

  3. 마이그레이션 태스크 로그 섹션을 찾아 CloudWatch Logs 보기를 선택합니다.

또한 AWS CLI 또는 AWS DMS API를 사용하여 태스크 로그에 대한 정보를 볼 수 있습니다. 이렇게 하려면 describe-replication-instance-task-logs AWS CLI 명령 또는 AWS DMS API 작업 DescribeReplicationInstanceTaskLogs를 사용하세요.

예를 들어, 다음 AWS CLI 명령은 JSON 형식의 태스크 로그 메타데이터를 보여줍니다.

$ aws dms describe-replication-instance-task-logs \ --replication-instance-arn arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY

명령의 샘플 응답은 다음과 같습니다.

{ "ReplicationInstanceTaskLogs": [ { "ReplicationTaskArn": "arn:aws:dms:us-east-1:237565436:task:MY34U6Z4MSY52GRTIX3O4AY", "ReplicationTaskName": "mysql-to-ddb", "ReplicationInstanceTaskLogSize": 3726134 } ], "ReplicationInstanceArn": "arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY" }

이 응답에 복제 인스턴스와 관련된 한 가지 작업 로그(mysql-to-ddb)가 있습니다. 이 로그의 크기는 3,726,124바이트입니다.

describe-replication-instance-task-logs에서 반환한 정보를 사용하여 작업 로그 문제를 진단하고 해결할 수 있습니다. 예를 들어, 태스크의 상세 디버그 로깅을 활성화하면 태스크 로그가 빠르게 증가하게 되어 복제 인스턴스에서 사용 가능한 스토리지를 모두 소비하고 인스턴스 상태가 storage-full로 변경될 수 있습니다. 작업 로그를 기술하면 더 이상 필요 없는 항목을 파악해 삭제하여 스토리지 공간을 확보할 수 있습니다.

작업의 작업 로그를 삭제하려면 작업 설정 DeleteTaskLogs를 true로 설정하세요. 예를 들어, AWS CLI modify-replication-task 명령 또는 AWS DMS API ModifyReplicationTask 작업을 사용하여 태스크를 수정할 때 다음 JSOM이 태스크 로그를 삭제합니다.

{ "Logging": { "DeleteTaskLogs":true } }

AWS CloudTrail을 사용하여 AWS DMS API 호출 로깅

AWS DMS는 AWS DMS에서 사용자, 역할, 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스인 AWS CloudTrail와 통합됩니다. CloudTrail은 AWS DMS 콘솔의 호출, AWS DMS API 작업에 대한 코드 호출을 포함하여 AWS DMS에 대한 모든 API 직접 호출을 이벤트로 캡처합니다. 추적을 생성하면 AWS DMS 이벤트를 포함한 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포할 수 있습니다. 추적을 구성하지 않은 경우에도 CloudTrail 콘솔의 이벤트 기록에서 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 AWS DMS에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

CloudTrail에 대한 자세한 내용은 AWS CloudTrail 사용 설명서를 참조하세요.

CloudTrail의 AWS DMS 정보

CloudTrail은 계정 생성 시 AWS 계정에서 사용되도록 설정됩니다. AWS DMS에서 활동이 발생하면 해당 활동이 [이벤트 기록]의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 내용은 CloudTrail 이벤트 기록을 사용하여 이벤트 보기를 참조하세요.

AWS DMS에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail은 추적을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 콘솔에서 추적을 생성하면 기본적으로 모든 AWS 리전에 추적이 적용됩니다. 추적은 AWS 파티션에 있는 모든 AWS 리전의 이벤트를 로깅하고 지정한 Amazon S3 버킷으로 로그 파일을 전송합니다. 또는 CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석 및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 정보는 다음을 참조하세요.

모든 AWS DMS 작업은 CloudTrail에서 로깅되고 AWS Database Migration Service API 참조에 기록됩니다. 예를 들어 CreateReplicationInstance, TestConnection, StartReplicationTask 작업을 호출하면 CloudTrail 로그 파일에 항목이 생성됩니다.

모든 이벤트 및 로그 항목에는 요청을 생성한 사용자에 대한 정보가 들어 있습니다. 자격 증명 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.

  • 요청을 루트로 했는지 아니면 IAM 사용자 보안 인증 정보로 했는지 여부.

  • 역할 또는 연합된 사용자에 대한 임시 보안 자격 증명을 사용하여 요청이 생성되었는지 여부.

  • 다른 AWS 서비스에서 요청했는지 여부.

자세한 내용은 CloudTrail userIdentity 요소를 참조하세요.

AWS DMS 로그 파일 항목 이해

추적이란 지정한 Amazon S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스의 단일 요청을 나타내며 요청된 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보를 포함하고 있습니다. CloudTrail 로그 파일은 퍼블릭 API 호출에 대한 순서 지정된 스택 추적이 아니기 때문에 특정 순서로 표시되지 않습니다.

다음은 RebootReplicationInstance 작업을 보여 주는 CloudTrail 로그 항목이 나타낸 예제입니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:johndoe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/johndoe", "accountId": "123456789012", "accessKeyId": "ASIAYFI33SINADOJJEZW", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-08-01T16:42:09Z" }, "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:role/admin", "accountId": "123456789012", "userName": "admin" } } }, "eventTime": "2018-08-02T00:11:44Z", "eventSource": "dms.amazonaws.com", "eventName": "RebootReplicationInstance", "awsRegion": "us-east-1", "sourceIPAddress": "72.21.198.64", "userAgent": "console.amazonaws.com", "requestParameters": { "forceFailover": false, "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE" }, "responseElements": { "replicationInstance": { "replicationInstanceIdentifier": "replication-instance-1", "replicationInstanceStatus": "rebooting", "allocatedStorage": 50, "replicationInstancePrivateIpAddresses": [ "172.31.20.204" ], "instanceCreateTime": "Aug 1, 2018 11:56:21 PM", "autoMinorVersionUpgrade": true, "engineVersion": "2.4.3", "publiclyAccessible": true, "replicationInstanceClass": "dms.t2.medium", "availabilityZone": "us-east-1b", "kmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/f7bc0f8e-1a3a-4ace-9faa-e8494fa3921a", "replicationSubnetGroup": { "vpcId": "vpc-1f6a9c6a", "subnetGroupStatus": "Complete", "replicationSubnetGroupArn": "arn:aws:dms:us-east-1:123456789012:subgrp:EDHRVRBAAAPONQAIYWP4NUW22M", "subnets": [ { "subnetIdentifier": "subnet-cbfff283", "subnetAvailabilityZone": { "name": "us-east-1b" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-d7c825e8", "subnetAvailabilityZone": { "name": "us-east-1e" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-6746046b", "subnetAvailabilityZone": { "name": "us-east-1f" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-bac383e0", "subnetAvailabilityZone": { "name": "us-east-1c" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-42599426", "subnetAvailabilityZone": { "name": "us-east-1d" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-da327bf6", "subnetAvailabilityZone": { "name": "us-east-1a" }, "subnetStatus": "Active" } ], "replicationSubnetGroupIdentifier": "default-vpc-1f6a9c6a", "replicationSubnetGroupDescription": "default group created by console for vpc id vpc-1f6a9c6a" }, "replicationInstanceEniId": "eni-0d6db8c7137cb9844", "vpcSecurityGroups": [ { "vpcSecurityGroupId": "sg-f839b688", "status": "active" } ], "pendingModifiedValues": {}, "replicationInstancePublicIpAddresses": [ "18.211.48.119" ], "replicationInstancePublicIpAddress": "18.211.48.119", "preferredMaintenanceWindow": "fri:22:44-fri:23:14", "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE", "replicationInstanceEniIds": [ "eni-0d6db8c7137cb9844" ], "multiAZ": false, "replicationInstancePrivateIpAddress": "172.31.20.204", "patchingPrecedence": 0 } }, "requestID": "a3c83c11-95e8-11e8-9d08-4b8f2b45bfd5", "eventID": "b3c4adb1-e34b-4744-bdeb-35528062a541", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

AWS DMS 컨텍스트 로깅

AWS DMS는 컨텍스트 로깅을 사용하여 진행 중인 마이그레이션에 대한 정보를 제공합니다. 컨텍스트 로깅은 다음과 같은 정보를 태스크의 CloudWatch 로그에 기록합니다.

  • 태스크의 소스 및 대상 데이터베이스 연결에 대한 정보.

  • 복제 태스크 동작. 태스크 로그를 사용하여 복제 문제를 진단할 수 있습니다.

  • AWS DMS가 소스 및 대상 데이터베이스에서 실행하는 데이터가 없는 SQL 문 SQL 로그를 사용하여 예상치 못한 마이그레이션 동작을 진단할 수 있습니다.

  • 각 CDC 이벤트의 위치 세부 정보를 스트리밍합니다.

컨텍스트 로깅은 AWS DMS 버전 3.5.0 이상에서만 사용할 수 있습니다.

AWS DMS는 컨텍스트 로깅을 기본적으로 활성화합니다. 컨텍스트 로깅을 제어하려면 EnableLogContext 태스크 설정을 true 또는 false로 설정하거나 콘솔에서 태스크를 수정합니다.

AWS DMS는 CloudWatch 로그의 복제 태스크에 컨텍스트 로그 정보를 3분마다 기록합니다. 복제 인스턴스에 애플리케이션 로그를 위한 충분한 공간이 있는지 확인하세요. 태스크 로그 관리에 대한 자세한 내용은 AWS DMS 태스크 로그 보기 및 관리 섹션을 참조하세요.

객체 유형

AWS DMS는 CloudWatch에서 다음 객체 유형에 대한 컨텍스트 로깅을 생성합니다.

객체 유형 설명
TABLE_NAME 이러한 로그 항목에는 현재 태스크 매핑 규칙의 범위 내에 있는 테이블에 대한 정보가 들어 있습니다. 이러한 항목을 사용하여 마이그레이션 중 특정 기간 동안의 테이블 이벤트를 검사할 수 있습니다.
SCHEMA_NAME 이러한 로그 항목에는 현재 태스크 매핑 규칙에서 사용하는 스키마에 대한 정보가 들어 있습니다. 이러한 항목을 사용하여 AWS DMS가 마이그레이션 중 특정 기간 동안 어떤 스키마를 사용하고 있는지 확인할 수 있습니다.
TRANSACTION_ID 이러한 항목에는 소스 데이터베이스에서 캡처된 각 DML/DDL 변경 사항에 대한 트랜잭션 ID가 포함됩니다. 이러한 로그 항목을 사용하여 특정 트랜잭션 중에 발생한 변경 사항을 확인할 수 있습니다.
CONNECTION_ID 이러한 항목에는 연결 ID가 포함됩니다. 이러한 로그 항목을 사용하여 AWS DMS가 각 마이그레이션 단계에서 사용하는 연결을 확인할 수 있습니다.
STATEMENT 이러한 항목에는 각 마이그레이션 변경 사항을 가져오고, 처리하고, 적용하는 데 사용되는 SQL 코드가 포함됩니다.
STREAM_POSITION 이러한 항목에는 소스 데이터베이스에 대한 각 마이그레이션 작업의 트랜잭션 로그 파일 내 위치가 포함됩니다. 이러한 항목의 형식은 소스 데이터베이스 엔진 유형에 따라 다릅니다. CDC 전용 복제를 구성할 때 이 정보를 사용하여 복구 체크포인트의 시작 위치를 결정할 수도 있습니다.

로깅 예제

이 섹션에는 복제를 모니터링하고 복제 문제를 진단하는 데 사용할 수 있는 로그 레코드 예제가 포함되어 있습니다.

연결 로그 예제

이 섹션에는 연결 ID가 포함된 로그 샘플이 포함되어 있습니다.

2023-02-22T10:09:29 [SOURCE_CAPTURE ]I: Capture record 1 to internal queue from Source {operation:START_REGULAR (43), connectionId:27598, streamPosition:0000124A/6800A778.NOW} (streamcomponent.c:2920) 2023-02-22T10:12:30 [SOURCE_CAPTURE ]I: Capture record 0 to internal queue from Source {operation:IDLE (51), connectionId:27598} (streamcomponent.c:2920) 2023-02-22T11:25:27 [SOURCE_CAPTURE ]I: Capture record 0 to internal queue from Source {operation:IDLE (51), columnName:region, connectionId:27598} (streamcomponent.c:2920)

태스크 동작 로그 예제

이 섹션에는 복제 태스크 로그 동작에 대한 로그 샘플이 포함되어 있습니다. 이 정보를 사용하여 IDLE 상태의 태스크와 같은 복제 문제를 진단할 수 있습니다.

다음 SOURCE_CAPTURE 로그는 소스 데이터베이스 로그 파일에서 읽을 수 있는 이벤트가 없음을 나타내며, 대상 데이터베이스에 적용할 AWS DMS CDC 구성 요소로부터 받은 이벤트가 없음을 나타내는 TARGET_APPLY 레코드를 포함합니다. 이러한 이벤트에는 이전에 적용된 이벤트 관련 컨텍스트 세부 정보도 포함됩니다.

2023-02-22T11:23:24 [SOURCE_CAPTURE ]I: No Event fetched from wal log (postgres_endpoint_wal_engine.c:1369) 2023-02-22T11:24:29 [TARGET_APPLY ]I: No records received to load or apply on target , waiting for data from upstream. The last context is {operation:INSERT (1), tableName:sales_11, schemaName:public, txnId:18662441, connectionId:17855, statement:INSERT INTO "public"."sales_11"("sales_no","dept_name","sale_amount","sale_date","region") values (?,?,?,?,?),

SQL 문 로그 예제

이 섹션에는 소스 및 대상 데이터베이스에서 실행되는 SQL 문에 대한 로그 샘플이 포함되어 있습니다. 로그에 표시되는 SQL 문에는 SQL 문만 표시되고 데이터는 표시되지 않습니다. 다음 TARGET_APPLY 로그는 대상에서 실행된 INSERT 문을 보여줍니다.

2023-02-22T11:26:07 [TARGET_APPLY ]I: Applied record 2193305 to target {operation:INSERT (1), tableName:sales_111, schemaName:public, txnId:18761543, connectionId:17855, statement:INSERT INTO "public"."sales_111"("sales_no","dept_name","sale_amount","sale_date","region") values (?,?,?,?,?),

제한 사항

AWS DMS 컨텍스트 로깅에는 다음과 같은 제한 사항이 적용됩니다.

  • AWS DMS는 모든 엔드포인트 유형에 대해 최소 로깅을 생성하지만 광범위한 엔진별 컨텍스트 로깅은 다음 엔드포인트 유형에만 사용할 수 있습니다. 이러한 엔드포인트 유형을 사용할 때는 컨텍스트 로깅을 활성화하는 것이 좋습니다.

    • MySQL

    • PostgreSQL

    • Oracle

    • Microsoft SQL Server

    • MongoDB/Amazon DocumentDB

    • Amazon S3