Amazon RDS for SQL Server 읽기 전용 복제본의 지연 문제를 해결하려면 어떻게 해야 합니까?

4분 분량
0

읽기 전용 복제본을 사용하는 Amazon Relational Database Service(Amazon RDS) for Microsoft SQL Server 인스턴스가 있습니다. Amazon RDS for SQL Server 인스턴스의 복제 지연 문제를 해결하려고 합니다.

간략한 설명

Amazon RDS for SQL Server Enterprise Edition은 동일한 AWS 리전 및 여러 리전에서 읽기 전용 복제본 생성을 지원합니다. 데이터 복제는 비동기식이며 Always-On 기술을 사용하여 기본 인스턴스의 데이터를 복제본 인스턴스로 복제합니다. RDS for SQL Server는 소스 DB 인스턴스와 해당 읽기 전용 복제본 간의 높은 복제 지연을 자동으로 줄이지 않습니다.

해결 방법

리소스 사용률 확인

Amazon CloudWatch 향상된 모니터링 및 성능 개선 도우미를 사용하여 세부 수준에서 기본 및 복제 인스턴스의 리소스 사용률을 확인할 수 있습니다.

CPU 사용률이 제한되고 있지 않은지 확인하십시오. 버스트 가능 인스턴스 유형을 사용하는 경우 사용 가능한 CPU 크레딧이 있는지 또는 무제한 모드를 켰는지 확인합니다.

충분한 FreeableMemory가 있고 ReadIOPSWriteIOPS가 프로비저닝된 할당량을 충족하는지 확인합니다. gp2 볼륨을 사용하는 경우 사용 가능한 버스트 밸런스가 있는지 확인합니다.

ReadThroughputWriteThroughput인스턴스 유형 할당량에 도달했는지 확인합니다.

참고: 복제본 인스턴스의 리소스가 부족하면 복제 지연이 발생할 수 있습니다. 인스턴스 유형, 스토리지 유형, IOPS 수가 동일한 기본 인스턴스와 복제본 인스턴스를 만드는 것이 좋습니다.  또한 기본 인스턴스에 비해 사용량이 최소일 경우 읽기 전용 복제본을 스케일 업 또는 스케일 다운할 수도 있습니다.

복제 지연이 증가하기 시작한 기간을 확인한 후 다음 작업을 수행하십시오.

  • 기본 인스턴스의 WriteIOPS, WriteThroughput, NetworkReceiveThroughputNetworkTrasmitThroughput 지표를 확인합니다. 쓰기 활동으로 인해 지연이 발생했는지 여부를 확인합니다. 그런 다음, 읽기 전용 복제본에서 같은 기간의 동일한 지표를 확인합니다.
  • 기본 인스턴스에 장기 실행 트랜잭션이 있는지 확인합니다. 활성 트랜잭션의 상태를 확인하려면 다음 예와 비슷한 쿼리를 실행하십시오.
    SELECT *
    FROM sys.sysprocesses
    WHERE open_tran = 1;

대기 및 교착 상태 확인

복제본 인스턴스에 심각한 잠금 대기 또는 교착 상태가 있는지 확인합니다. SelectDDL/DML 트랜잭션 간에 교착 상태가 발생하면 기본 인스턴스의 트랜잭션 로그 적용이 지연됩니다.

차단 여부를 확인하려면 다음 예와 비슷한 쿼리를 실행하십시오.

SELECT * FROM sys.sysprocesses WHERE blocked > 0;

복제 지연 확인

기본 인스턴스에서 쿼리를 실행하여 복제 지연 및 최대 복제 지연을 확인합니다.

복제 지연

다음 쿼리를 실행하십시오.

SELECT
    AR.replica_server_name,
    DB_NAME (ARS.database_id) 'database_name',
    AR.availability_mode_desc,
    ARS.synchronization_health_desc,
    ARS.last_hardened_lsn,
    ARS.last_redone_lsn,
    ARS.secondary_lag_seconds,
FROM
    sys.dm_hadr_database_replica_states ARS
INNER JOIN
    sys.availability_replicas AR ON ARS.replica_id = AR.replica_id
WHERE
    DB_NAME(ARS.database_id) = 'database_name'
ORDER BY
    AR.replica_server_name;

참고: database_name을 데이터베이스 이름으로 바꾸십시오.

읽기 전용 복제본에서 last_hardened_lsn 값이 증가하는지 확인합니다.

최대 복제 지연

SQL Server의 경우 ReplicaLag 지표는 지연된 데이터베이스의 최대 지연 시간을 초 단위로 나타냅니다. 예를 들어 지연 시간이 5초와 10초인 두 데이터베이스가 있는 경우 ReplicaLag는 10초입니다. ReplicaLag 지표를 계산하려면 기본 인스턴스에서 다음 쿼리를 실행하십시오.

SELECT max(secondary_lag_seconds) max_lag
FROM sys.dm_hadr_database_replica_states;

데이터 동기화 및 인스턴스 상태 관리

읽기 전용 복제본을 생성하면 Amazon RDS가 기본 인스턴스에서 스냅샷을 생성한 다음, 해당 스냅샷을 복원하여 읽기 전용 복제본 인스턴스를 생성합니다. Amazon RDS는 트랜잭션 로그를 재생하여 데이터를 기본 인스턴스와 동기화합니다. 하지만 새 인스턴스를 생성한 후 인스턴스 로드가 지연되어 복제 지연이 발생합니다. 이는 예상된 동작입니다. 지연 로딩의 영향을 줄이려면 읽기 전용 복제본을 생성할 때 io1 또는 io2 볼륨 유형을 사용하십시오. 복제본을 생성한 후 다시 gp2 또는 gp3 볼륨 유형으로 변환할 수 있습니다.

기본 인스턴스에서 트랜잭션을 일괄적으로 실행하여 트랜잭션이 오래 걸리는 것을 방지하고 트랜잭션 로그 파일 크기를 작게 유지합니다. 높은 복제본 지연 중 필요할 때만 복제본 인스턴스를 다시 시작하십시오. 그렇지 않으면 Amazon RDS에서 트랜잭션 로그 재생이 지연되고 데이터베이스가 복구 상태로 전환될 수 있습니다.

로그는 기본 인스턴스에서 처리되기 때문에 기본 또는 복제본 인스턴스에서 인스턴스 유형을 수정하면 일시적으로 복제 지연이 발생할 수 있습니다.

또한 스토리지 유형이나 스토리지 크기를 수정하면 스토리지 최적화가 완료될 때까지 일시적으로 복제 지연이 발생할 수 있습니다. 스토리지 최적화의 진행 상황은 모니터링할 수 없습니다.

복제 지연이 계속 발생하는 경우 복제본 인스턴스의 사용자 데이터베이스 상태를 확인하십시오. 로그를 재생하려면 데이터베이스 상태가 온라인이어야 합니다.

참고:

  • Amazon RDS는 새로 생성된 데이터베이스를 읽기 전용 복제본에서 액세스할 수 있게 된 후에만 지연 계산에 포함시킵니다.
  • Amazon RDS가 지연을 확인할 수 없는 경우(예: 복제본 설정 중 또는 읽기 전용 복제본이 오류 상태인 경우), ReplicaLag-1을 반환합니다.

관련 정보

Amazon RDS에서 Microsoft SQL Server용 읽기 전용 복제본 작업