DMS 일괄 적용 기능을 사용하여 CDC 복제 성능을 향상시키려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 24일

전체 로드와 변경 데이터 캡처(CDC) AWS Database Migration Service(AWS DMS) 태스크를 실행하고 있습니다. 소스 지연 시간이 높지는 않지만 대상 지연 시간이 높거나 증가하고 있습니다. CDC 복제 단계의 속도를 높이려면 어떻게 해야 합니까?

간략한 설명

AWS DMS는 다음 방법을 사용하여 변경 데이터 캡처(CDC) 단계에서 데이터를 복제합니다.

  • 트랜잭션 적용
  • 일괄 적용

AWS DMS CDC 프로세스는 기본적으로 단일 스레드입니다(트랜잭션 적용). 다른 모든 온라인 트랜잭션 처리(OLTP) 데이터베이스 엔진과 동일한 SQL 복제 방법을 사용합니다. DMS CDC 복제는 소스 데이터베이스 트랜잭션 로그에 완전히 종속됩니다. 진행 중인 복제 단계에서 DMS는 다음과 같이 트랜잭션 적용 방법을 사용하여 변경 사항을 적용합니다.

  1. DMS는 트랜잭션 로그의 변경 사항을 소스에서 복제 DB 인스턴스 메모리로 읽어 들입니다.
  2. DMS는 변경 사항을 변환한 다음 이를 정렬기 구성 요소에 전달합니다.
  3. 정렬기 구성 요소는 트랜잭션을 커밋 순서로 정렬한 다음 순차적으로 대상에 전달합니다.

소스 DB의 변경 비율이 높으면 이 프로세스에 시간이 걸릴 수 있습니다. DMS가 소스 DB로부터 많은 양의 수신 워크로드를 받을 때 CDC 대상 지연 시간 지표가 급증하는 것을 볼 수 있습니다.

DMS는 단일 스레드 복제 방법을 사용하여 CDC 변경 사항을 처리합니다. DMS는 배치를 사용하여 대상의 변경 사항을 신속하게 처리할 수 있도록 BatchApplyEnabled 태스크 수준 설정을 제공합니다. BatchApplyEnabled는 소스 DB에 대한 워크로드가 높고 대상 CDC 지연 시간이 긴 경우에 유용합니다. 기본적으로 DMS는 BatchApplySetting을 비활성화합니다. AWS 명령줄 인터페이스(AWS CLI)를 사용하여 활성화할 수도 있습니다.

일괄 적용 작동 방식

BatchApplyEnabled를 사용하여 태스크를 실행하면 DMS는 다음과 같은 방식으로 변경 사항을 처리합니다.

  1. DMS가 소스 DB 트랜잭션 로그에서 변경 사항을 일괄 수집합니다.
  2. DMS가 배치의 모든 변경 사항을 포함하는 순 변경 테이블이라는 테이블을 생성합니다.
  3. 이 테이블은 복제 DB 인스턴스의 메모리에 상주하며 대상 DB 인스턴스에 전달됩니다.
  4. DMS는 순 변경 테이블의 모든 변경 사항을 실제 대상 테이블에 걸러내는 순 변경 알고리즘을 적용합니다.

예를 들어 BatchApplyEnabled를 사용하여 DMS 태스크를 실행하며 단일 배치 안에 새로운 행 삽입 1개, 해당 행에 대한 업데이트 10개, 해당 행에 대한 삭제 1개가 있는 경우 DMS는 이 모든 트랜잭션을 걸러내고 수행하지 않습니다. 결국에는 행이 삭제되고 더 이상 존재하지 않기 때문입니다. 이 프로세스는 대상에 적용되는 실제 트랜잭션 수를 줄입니다.

BatchApplyEnabled는 특정 태스크의 배치 내에서 테이블의 행 수준에서 순 변경 알고리즘을 적용합니다. 따라서 소스 데이터베이스가 자주 변경(업데이트, 삭제 및 삽입)되거나 동일한 행에 이러한 워크로드의 조합이 있는 경우에는 BatchApplyEnabled를 사용함으로써 최적의 결과를 얻을 수 있습니다. 이렇게 하면 대상에 적용될 변경 사항이 최소화됩니다. 수집된 배치에 고유한 변경 사항(즉, 서로 다른 행 레코드에 대한 업데이트/삭제/삽입 변경 사항)만 있으면 순 변경 테이블 알고리즘 프로세스는 이벤트를 필터링할 수 없으며 모든 배치 이벤트가 배치 모드로 대상에 적용됩니다. 일괄 적용이 작동하기 위해서는 테이블에 기본 키 또는 고유 키가 있어야 합니다.

DMS는 변경 처리 튜닝을 위한 BatchApplyPreserveTransaction 설정도 제공합니다. BatchApplySetting을 활성화하면 기본적으로 BatchApplyPreserveTransaction이 활성화됩니다. true로 설정하면 트랜잭션 무결성이 유지되며 배치가 소스의 트랜잭션 안에 모든 변경 사항을 포함하게 됩니다. 이 설정은 Oracle 대상 엔드포인트에만 적용됩니다.

참고: 이 설정의 장점과 단점에 주의하세요. BatchApplyPreserveTransaction 설정이 true이면 DMS가 복제 DB 인스턴스의 메모리에서 장기 실행 트랜잭션 전체를 캡처합니다. MemoryLimitTotalMemoryKeepTime 태스크 설정에 따라 캡처하며, 변경 사항을 순 변경 테이블에 보내기 전에 필요에 따라 교체합니다. BatchApplyPreserveTransaction 설정이 false일 때는 단일 트랜잭션의 변경 사항이 여러 개의 배치로 확장될 수 있습니다. 부분적으로 적용될 때는 대상 데이터베이스를 사용할 수 없는 등의 이유로 데이터가 손실될 수 있습니다.

DMS 지연 시간 및 일괄 적용 프로세스에 대한 자세한 내용은 AWS DMS 마이그레이션 디버깅 블로그의 2부3부를 참조하세요.

일괄 적용 사용 사례

다음과 같은 상황에서 일괄 적용을 사용할 수 있습니다.

  • 태스크의 소스에서 캡처된 트랜잭션 수가 많고 이로 인해 대상 지연 시간이 발생합니다.
  • 태스크의 소스에 동일 행의 삽입, 업데이트, 삭제 조합인 워크로드가 있습니다.
  • 대상에서 엄격한 참조 무결성을 유지할 필요가 없습니다(비활성화된 FK).

제한 사항

일괄 적용에는 현재 다음과 같은 제한 사항이 있습니다.

해결 방법

BatchApplySetting은 기본적으로 비활성화되어 있습니다. AWS 명령줄 인터페이스(AWS CLI)로만 이 설정을 활성화할 수 있습니다. 배치 설정을 활성화하기 전에 시스템에서 다음 설정 태스크를 완료하세요.

기존 태스크의 배치 설정 상태를 확인합니다.

  1. AWS DMS 콘솔을 엽니다.
  2. 탐색 창에서 [Database migration tasks]를 선택합니다.
  3. 태스크를 선택한 다음 [Task Setting (JSON)]을 선택합니다. JSON에서 BatchApplyEnableddisabled 상태로 표시됩니다.

배치 설정 활성화

  1. 설치된 AWS CLI 시스템을 엽니다.
  2. aws configure 명령을 실행하여 CLI 프롬프트에 들어갑니다.
  3. AWS 액세스 키 ID를 입력한 다음 Enter 키를 누릅니다.
  4. AWS 보안 키 ID를 입력한 다음 Enter 키를 누릅니다.
  5. DMS 리소스의 리전 이름을 입력한 다음 Enter 키를 누릅니다.
  6. 출력 형식을 입력한 다음 Enter 키를 누릅니다.
  7. 태스크 ARN 및 배치 설정 조건과 함께 modify-replication-task 명령을 실행합니다.

참고: 태스크를 수정하기 전에 태스크가 stopped 상태인지 확인하세요. 태스크에 따라 다음 명령에서 ARN을 변경한 후에 명령을 실행하여 태스크 설정을 변경합니다.

CLI에서 명령이 성공적으로 실행되면 DMS 콘솔을 열고 태스크의 배치 설정 상태를 다시 확인합니다. 이제 BatchApplyEnabled가 [Task Setting (JSON)]에서 활성화된 것으로 표시됩니다.

이제 DMS 태스크를 시작하고 마이그레이션 성능을 관찰할 수 있습니다.

aws dms modify-replication-task --replication-task-arn arn:aws:dms:us-east-1:123456789123:task:4VUCZ6ROH4ZYRIA25M3SE6NXCM --replication-task-settings "{\"TargetMetadata\":{\"BatchApplyEnabled\":true}}"

배치 모드에서 태스크를 실행한 후 CDCLatencyTarget이 높은 문제 해결

배치 모드에서 태스크를 실행한 후 CDCLatencyTarget이 높으면 다음이 지연 시간의 원인일 수 있습니다.

  • 기본 및 보조 인덱스 부족으로 대상에서 오래 실행되는 트랜잭션
  • 대상에서 워크로드를 처리할 수 있는 리소스의 부족
  • DMS 복제 인스턴스의 리소스 경합이 많음

이러한 문제를 해결하려면 DMS 모범 사례를 따르세요.