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
- 클러스터의 각 노드에 대한 Aurora 스토리지 대몬의 CPU 사용량입니다. 인스턴스별 CPU 사용량에 대한 자세한 내용은 Amazon Aurora에 대한 인스턴스 수준 지표 단원을 참조하세요.
사용 노트
현재 사용 가능한 모든 Aurora PostgreSQL 버전에서 이 함수를 지원합니다. 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 센터
예시
다음 예제에서는 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)