읽기 전용 복제 모니터링

읽기 전용 복제 모니터링

읽기 전용 복제본이 잘 복제되고 있는지, 복제가 얼마나 지연되는지 궁금할 때가 있죠? Amazon RDS는 읽기 전용 복제 상태를 여러 가지 방법으로 확인할 수 있게 해줘요. 콘솔에서 바로 확인할 수도 있고, CloudWatch 지표로 복제 지연까지 세밀하게 들여다볼 수 있어요.

출처: 문서

본문

읽기 전용 복제본의 상태를 여러 가지 방법으로 모니터링할 수 있어요. Amazon RDS 콘솔은 읽기 전용 복제본 세부 정보의 Connectivity & security 탭에 있는 Replication 섹션에서 읽기 전용 복제본의 상태를 보여줘요. 읽기 전용 복제본의 세부 정보를 보려면 Amazon RDS 콘솔의 DB 인스턴스 목록에서 읽기 전용 복제본 이름을 선택하세요.

AWS CLI describe-db-instances 명령이나 Amazon RDS API DescribeDBInstances 작업을 사용해서도 읽기 전용 복제본의 상태를 확인할 수 있어요.

읽기 전용 복제본의 상태는 다음 중 하나가 될 수 있어요.

  • replicating – 읽기 전용 복제본이 성공적으로 복제되고 있어요.
  • replication degraded(SQL Server 및 PostgreSQL만 해당) – 복제본이 기본 인스턴스로부터 데이터를 받고 있지만, 하나 이상의 데이터베이스가 업데이트를 받지 못할 수 있어요. 예를 들어 복제본이 새로 생성된 데이터베이스를 설정하는 과정에 있거나, blue/green 배포의 blue 환경에서 지원되지 않는 DDL 또는 큰 개체 변경이 이루어질 때 발생할 수 있어요.
    • degraded 상태에서 오류가 발생하지 않는 한, 상태가 replication degraded에서 error로 전환되지는 않아요.
  • error – 복제에 오류가 발생했어요. Amazon RDS 콘솔의 Replication Error 필드나 이벤트 로그를 확인해 정확한 오류를 파악하세요. 복제 오류 문제 해결에 대한 자세한 내용은 MySQL 읽기 전용 복제본 문제 해결을 참고하세요.
  • terminated(MariaDB, MySQL 또는 PostgreSQL만 해당) – 복제가 종료되었어요. 수동으로든 복제 오류로 인해든 복제가 30일 이상 연속으로 중지되면 발생해요. 이 경우 Amazon RDS는 기본 DB 인스턴스와 모든 읽기 전용 복제본 사이의 복제를 종료해요. Amazon RDS가 이렇게 하는 이유는 소스 DB 인스턴스의 스토리지 요구량 증가와 긴 장애 조치 시간을 방지하기 위해서예요.
    • 복제가 깨지면 로그에 기록되는 오류 메시지가 많아져 로그의 크기와 개수가 늘어나면서 스토리지에 영향을 줄 수 있어요. 또한 장애 복구 시 Amazon RDS가 많은 로그를 유지하고 처리하는 데 시간이 걸리므로 장애 복구에도 영향을 줘요.
  • terminated(Oracle만 해당) – 복제가 종료되었어요. 읽기 전용 복제본에 남은 스토리지가 충분하지 않아 복제가 8시간 이상 중지되면 발생해요. 이 경우 Amazon RDS는 기본 DB 인스턴스와 해당 읽기 전용 복제본 사이의 복제를 종료해요. 이 상태는 종료 상태(terminal state)이므로 읽기 전용 복제본을 다시 만들어야 해요.
  • stopped(MariaDB 또는 MySQL만 해당) – 고객이 시작한 요청으로 복제가 중지되었어요.
  • replication stop point set(MySQL만 해당) – mysql.rds_start_replication_until 저장 프로시저를 사용해 고객이 시작한 중지 지점이 설정되었고 복제가 진행 중이에요.
  • replication stop point reached(MySQL만 해당) – mysql.rds_start_replication_until 저장 프로시저를 사용해 고객이 시작한 중지 지점이 설정되었고, 중지 지점에 도달해서 복제가 중지되었어요.

DB 인스턴스가 어디로 복제되고 있는지 확인하고, 복제되고 있다면 복제 상태를 확인할 수 있어요. RDS 콘솔의 Databases 페이지에서 Role 열에 Primary로 표시된 DB 인스턴스를 찾아 그 이름을 선택하세요. 세부 페이지의 Connectivity & security 탭에서 복제 상태를 Replication 아래에서 확인할 수 있어요.

복제 지연 모니터링

Amazon CloudWatch에서 Amazon RDS ReplicaLag 지표를 확인하면 복제 지연을 모니터링할 수 있어요.

  • Db2의 경우 ReplicaLag 지표는 뒤처진 데이터베이스의 최대 지연 시간(초)이에요. 예를 들어 두 데이터베이스가 각각 5초, 10초 지연된다면 ReplicaLag는 10초가 돼요. HADR(High Availability Disaster Recovery) 상태를 사용할 수 없는 데이터베이스는 계산에 포함되지 않아요.
  • MariaDB와 MySQL의 경우 ReplicaLag 지표는 SHOW REPLICA STATUS 명령의 Seconds_Behind_Master 필드 값을 보고해요. MySQL과 MariaDB의 복제 지연 일반적인 원인은 다음과 같아요.
    • 네트워크 중단.

    • 읽기 전용 복제본의 인덱스가 있는 테이블에 쓰기. 읽기 전용 복제본에서 read_only 파라미터를 0으로 설정하지 않으면 복제가 깨질 수 있어요.

    • MyISAM 같은 비트랜잭션 스토리지 엔진 사용. 복제는 MySQL의 InnoDB 스토리지 엔진과 MariaDB의 XtraDB 스토리지 엔진에서만 지원돼요.

    • 참고

      이전 MariaDB 버전은 SHOW REPLICA STATUS 대신 SHOW SLAVE STATUS를 사용했어요. 10.5 미만의 MariaDB 버전을 사용한다면 SHOW SLAVE STATUS를 사용하세요.

    • ReplicaLag 지표가 0에 도달하면 복제본이 기본 DB 인스턴스를 따라잡은 거예요. ReplicaLag 지표가 -1을 반환하면 현재 복제가 활성화되지 않은 상태예요. ReplicaLag = -1은 Seconds_Behind_Master = NULL과 동일해요.

  • Oracle의 경우 ReplicaLag 지표는 Apply Lag 값과 현재 시간 및 apply lag의 DATUM_TIME 값 사이의 차이를 합한 값이에요. DATUM_TIME 값은 읽기 전용 복제본이 소스 DB 인스턴스에서 데이터를 마지막으로 받은 시간이에요. 자세한 내용은 Oracle 문서의 V$DATAGUARD_STATS를 참고하세요.
  • SQL Server의 경우 ReplicaLag 지표는 뒤처진 데이터베이스의 최대 지연 시간(초)이에요. 예를 들어 두 데이터베이스가 각각 5초, 10초 지연된다면 ReplicaLag는 10초가 돼요. ReplicaLag 지표는 다음 쿼리의 값을 반환해요.
SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;

자세한 내용은 Microsoft 문서의 secondary_lag_seconds를 참고하세요.

ReplicaLag는 RDS가 지연을 확인할 수 없을 때, 예를 들어 복제본 설정 중이거나 읽기 전용 복제본이 error 상태일 때 -1을 반환해요.

참고

새 데이터베이스는 읽기 전용 복제본에서 접근 가능해질 때까지 지연 계산에 포함되지 않아요.

  • PostgreSQL의 경우 ReplicaLag 지표는 다음 쿼리의 값을 반환해요.
SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS reader_lag

PostgreSQL 9.5.2 이상 버전은 물리 복제 슬롯(physical replication slot)을 사용해 소스 인스턴스의 WAL(write ahead log) 보존을 관리해요. 각 교차 리전 읽기 전용 복제본 인스턴스에 대해 Amazon RDS는 물리 복제 슬롯을 만들고 인스턴스에 연결해요. Oldest Replication Slot Lag와 Transaction Logs Disk Usage라는 두 Amazon CloudWatch 지표는 가장 지연된 복제본이 WAL 데이터 수신 측면에서 얼마나 뒤처져 있는지, WAL 데이터에 얼마나 많은 스토리지를 사용 중인지 보여줘요. 교차 리전 읽기 전용 복제본이 크게 지연되면 Transaction Logs Disk Usage 값이 상당히 증가할 수 있어요.

CloudWatch로 DB 인스턴스를 모니터링하는 방법에 대한 자세한 내용은 Amazon CloudWatch로 Amazon RDS 지표 모니터링을 참고하세요.

더 알아보기 (Learn more)