기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
이 섹션에는 MySQL과 관련된 복제 시나리오가 나와 있습니다. AWS DMS는 MySQL 바이너리 로그를 주기적으로 스캔하여 변경 사항을 복제합니다. 다음과 같은 시나리오에서는 이러한 프로세스 때문에 지연 시간이 증가할 수 있습니다.
소스에서 장시간 실행 중인 트랜잭션
MySQL은 커밋된 트랜잭션만 바이너리 로그에 작성하므로, 트랜잭션이 장시간 실행되면 쿼리 실행 시간에 비례하여 지연 시간이 급증합니다.
장시간 실행 중인 트랜잭션을 파악하려면 아래의 쿼리를 사용하거나 느린 쿼리 로그를 사용합니다.
SHOW FULL PROCESSLIST;
느린 쿼리 로그 사용에 대한 자세한 내용은 MySQL 설명서
장시간 실행 중인 트랜잭션으로 인한 지연 시간 급증을 방지하려면 소스 트랜잭션을 재구성하여 쿼리 실행 시간을 줄이거나 커밋 빈도를 늘립니다.
소스의 높은 워크로드
DMS CDC는 단일 스레드 방식이므로, 트랜잭션 수가 많으면 소스 지연 시간이 증가할 수 있습니다. 소스 지연 시간이 과중한 워크로드로 인한 것인지 확인하려면, 지연 시간 동안 생성된 바이너리 로그의 수와 크기를 지연 시간 이전에 생성된 로그와 비교합니다. 바이너리 로그와 DMS CDC 스레드 상태를 확인하려면 아래의 쿼리를 사용합니다.
SHOW BINARY LOGS;
SHOW PROCESSLIST;
CDC 바이너리 로그 덤프 스레드 상태에 대한 자세한 내용은 Replication Source Thread States
소스에서 생성된 최신 바이너리 로그 위치를 DMS가 현재 처리 중인 이벤트와 비교하여 지연 시간을 확인할 수 있습니다. 소스 최신 바이너리 로그를 확인하려면 다음을 수행합니다.
SOURCE_CAPTURE 구성 요소에 대한 디버그 로그를 활성화합니다.
태스크 디버그 로그에서 DMS 처리 바이너리 로그와 위치 세부 정보를 검색합니다.
소스에 대한 최신 바이너리 로그를 확인하려면 아래의 쿼리를 사용합니다.
SHOW MASTER STATUS;
성능을 더 최적화하려면 EventsPollInterval
을 튜닝합니다. 기본적으로 DMS는 5초마다 바이너리 로그를 폴링하지만, 이 값을 줄여 성능을 개선할 수 있습니다. EventsPollInterval
설정에 관한 자세한 내용은 의 소스로 내SQL를 사용할 때 엔드포인트 설정 AWS DMS를 참조하십시오.
바이너리 로그 경합
데이터의 양이 많은 여러 테이블을 마이그레이션할 경우, MySQL 5.7.2 이상에서는 테이블을 별도의 태스크로 분할하는 것이 좋습니다. MySQL 버전 5.7.2 이상에서는 마스터 덤프 스레드가 잠금 경합을 줄이고 처리량을 개선합니다. 따라서 덤프 스레드는 이벤트를 읽을 때마다 더 이상 바이너리 로그를 잠그지 않습니다. 이렇게 되면 여러 덤프 스레드가 바이너리 로그 파일을 동시에 읽을 수 있습니다. 이는 클라이언트가 바이너리 로그에 쓰는 동안 덤프 스레드가 바이너리 로그를 읽을 수 있다는 의미이기도 합니다. 덤프 스레드에 대한 자세한 내용은 Replication Threads
5.7.2 이전 버전의 MySQL 소스의 복제 성능을 개선하려면 CDC 구성 요소로 작업을 통합해 보시기 바랍니다.