aurora_replica_status - Amazon Aurora

aurora_replica_status

모든 Aurora PostgreSQL 리더 노드의 상태를 표시합니다.

조건

aurora_replica_status()

인수

없음

반환 유형

다음 열이 있는 SETOF 레코드:

  • server_id - DB 인스턴스 ID(식별자)

  • session_id - 현재 세션의 고유 식별자로, 다음과 같이 기본 인스턴스 및 리더 인스턴스에 대해 반환됩니다.

    • 기본 인스턴스의 경우session_id는 항상 `MASTER_SESSION_ID’입니다.

    • 리더 인스턴스의 경우session_id는 항상 리더 인스턴스의 UUID(Universally Unique Identifier)입니다.

  • durable_lsn - 스토리지에 저장된 LSN(로그 시퀀스 번호)입니다.

    • 기본 볼륨의 경우 현재 적용 중인 기본 볼륨 내구성 LSN(VDL)입니다.

    • 보조 볼륨의 경우 보조 볼륨이 성공적으로 적용된 기본 볼륨의 VDL입니다.

    참고

    LSN(로그 시퀀스 번호)은 데이터베이스 트랜잭션 로그의 레코드를 식별하는 고유한 순차적 번호입니다. LSN은 더 큰 LSN이 더 이후의 시퀀스에서 발생한 트랜잭션을 나타내도록 정렬됩니다.

  • highest_lsn_rcvd - 라이터 DB 인스턴스에서 DB 인스턴스가 수신한 가장 높은(최신) LSN입니다.

  • current_read_lsn - 모든 리더에 적용된 최신 스냅샷의 LSN입니다.

  • cur_replay_latency_in_usec - 보조 볼륨에서 로그를 재생하는 데 걸리는 시간(마이크로초)입니다.

  • active_txns - 현재 활성 DML 트랜잭션의 수입니다.

  • is_current - 사용되지 않습니다.

  • last_transport_error - 마지막 복제 오류 코드입니다.

  • last_error_timestamp - 마지막 복제 오류의 타임스탬프입니다.

  • last_update_timestamp - 복제본 상태에 대한 마지막 업데이트의 타임스탬프입니다. Aurora PostgreSQL 13.9부터는 연결된 DB 인스턴스의 last_update_timestamp 값이 NULL로 설정됩니다.

  • feedback_xmin - 복제본의 상시 대기 feedback_xmin입니다. DB 인스턴스가 사용하는 최소(가장 오래된) 활성 트랜잭션 ID입니다.

  • feedback_epoch – DB 인스턴스가 상시 대기 정보를 생성할 때 사용하는 Epoch입니다.

  • replica_lag_in_msec - 리더 인스턴스가 라이터 인스턴스보다 지연되는 시간(밀리초)입니다.

  • log_stream_speed_in_kib_per_second - 로그 스트림 처리량(초당 KB)입니다.

  • log_buffer_sequence_number - 로그 버퍼 시퀀스 번호입니다.

  • oldest_read_view_trx_id - 사용되지 않습니다.

  • oldest_read_view_lsn – DB 인스턴스가 스토리지에서 읽는 데 사용하는 가장 오래된 LSN입니다.

  • pending_read_ios - 복제본에서 여전히 보류 중인 미해결 페이지 읽기입니다.

  • read_ios - 복제본의 총 페이지 읽기 횟수입니다.

  • iops - 사용되지 않습니다.

  • cpu - 복제본 프로세스별 CPU 사용량입니다. 참고로 이것은 이는 인스턴스의 CPU 사용량이 아니라 프로세스입니다. 인스턴스별 CPU 사용량에 대한 자세한 내용은 Amazon Aurora에 대한 인스턴스 수준 지표 단원을 참조하세요.

사용 노트

aurora_replica_status 함수는 Aurora PostgreSQL DB 클러스터의 복제본 상태 관리자에서 값을 반환합니다. 이 함수를 사용하면 Aurora DB 클러스터의 모든 DB 인스턴스에 대한 지표를 포함하여 Aurora PostgreSQL DB 클러스터의 복제 상태에 대한 정보를 얻을 수 있습니다. 예를 들면, 다음을 수행할 수 있습니다.

  • Aurora PostgreSQL DB 클러스터의 인스턴스 유형(라이터, 리더)에 대한 정보 가져오기 - 다음 열의 값을 확인하여 이 정보를 얻을 수 있습니다.

    • server_id - 인스턴스를 생성할 때 지정한 인스턴스의 이름을 포함합니다. 기본(라이터) 인스턴스 등 일부 경우에는 일반적으로 Aurora PostgreSQL DB 클러스터에 대해 생성한 이름에 -instance-1을 추가하여 이름이 생성됩니다.

    • session_id - session_id 필드는 인스턴스가 리더인지 라이터인지를 나타냅니다. 라이터 인스턴스의 경우 session_id는 항상 "MASTER_SESSION_ID"로 설정됩니다. 리더 인스턴스의 경우,session_id는 특정 리더의 UUID로 설정됩니다.

  • 복제본 지연과 같은 일반적인 복제 문제 진단 - 복제본 지연은 리더 인스턴스의 페이지 캐시가 라이터 인스턴스의 페이지 캐시보다 뒤처지는 시간(밀리초)입니다. 이 지연은 Amazon Aurora를 사용한 복제에 설명된 대로 Aurora 클러스터에서 비동기 복제를 사용하기 때문에 발생합니다. 이 함수가 반환한 결과의 replica_lag_in_msec 열에 표시됩니다. 대기 서버의 복구 충돌로 인해 쿼리가 취소되는 경우에도 지연이 발생할 수 있습니다. pg_stat_database_conflicts()를 통해 이러한 충돌로 인해 복제본 지연이 발생하는지 확인할 수 있습니다. 자세한 내용은 PostgreSQL 설명서에서 통계 수집기를 참조하세요. 고가용성 및 복제에 대한 자세한 내용은 Amazon Aurora FAQ 섹션을 참조하세요.

    Amazon CloudWatch는 시간 경과에 따른 replica_lag_in_msec 결과를 AuroraReplicaLag 지표로 저장합니다. Aurora에 CloudWatch 지표를 사용하는 방법에 관한 자세한 내용은 Amazon CloudWatch로 Amazon Aurora 지표 모니터링 단원을 참조하세요.

Aurora 읽기 전용 복제본 및 재시작 문제 해결에 대한 자세한 내용은 AWS Support 센터Amazon Aurora 읽기 전용 복제본이 뒤처지고 다시 시작되는 이유는 무엇입니까? 섹션을 참조하세요.

예시

다음 예제에서는 Aurora PostgreSQL DB 클러스터에 있는 모든 인스턴스의 복제 상태를 가져오는 방법을 보여줍니다.

=> SELECT * FROM aurora_replica_status();

다음 예제는 docs-lab-apg-main Aurora PostgreSQL DB 클러스터의 라이터 인스턴스를 보여줍니다.

=> SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role FROM aurora_replica_status() WHERE session_id = 'MASTER_SESSION_ID'; server_id | instance_role ------------------------+--------------- db-119-001-instance-01 | writer

다음 예제에서는 클러스터의 모든 리더 인스턴스를 나열합니다.

=> SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role FROM aurora_replica_status() WHERE session_id <> 'MASTER_SESSION_ID'; server_id | instance_role ------------------------+--------------- db-119-001-instance-02 | reader db-119-001-instance-03 | reader db-119-001-instance-04 | reader db-119-001-instance-05 | reader (4 rows)

다음 예제에서는 모든 인스턴스, 각 인스턴스가 라이터보다 지연되는 시간 및 마지막 업데이트 이후의 기간을 나열합니다.

=> SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role, replica_lag_in_msec AS replica_lag_ms, round(extract (epoch FROM (SELECT age(clock_timestamp(), last_update_timestamp))) * 1000) AS last_update_age_ms FROM aurora_replica_status() ORDER BY replica_lag_in_msec NULLS FIRST; server_id | instance_role | replica_lag_ms | last_update_age_ms ------------------------+---------------+----------------+-------------------- db-124-001-instance-03 | writer | [NULL] | 1756 db-124-001-instance-01 | reader | 13 | 1756 db-124-001-instance-02 | reader | 13 | 1756 (3 rows)