

# aurora\$1replica\$1status
<a name="aurora_replica_status"></a>

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

## 구문
<a name="aurora_replica_status-syntax"></a>

 

```
aurora_replica_status()
```

## 인수
<a name="aurora_replica_status-arguments"></a>

없음

## 반환 타입
<a name="aurora_replica_status-return-type"></a>

다음 열이 있는 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\$1xmin입니다. 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.AuroraMonitoring.Metrics.md#Aurora.AuroraMySQL.Monitoring.Metrics.instances) 단원을 참조하세요.

## 사용 노트
<a name="aurora_replica_status-usage-notes"></a>

현재 사용 가능한 모든 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.Replication.md)에 설명된 대로 Aurora 클러스터에서 비동기 복제를 사용하기 때문에 발생합니다. 이 함수가 반환한 결과의 `replica_lag_in_msec` 열에 표시됩니다. 대기 서버의 복구 충돌로 인해 쿼리가 취소되는 경우에도 지연이 발생할 수 있습니다. `pg_stat_database_conflicts()`를 통해 이러한 충돌로 인해 복제본 지연이 발생하는지 확인할 수 있습니다. 자세한 내용은 *PostgreSQL 설명서*에서 [통계 수집기](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-CONFLICTS-VIEW)를 참조하세요. 고가용성 및 복제에 대한 자세한 내용은 [Amazon Aurora FAQ](https://aws.amazon.com/rds/aurora/faqs/#High_Availability_and_Replication) 섹션을 참조하세요.

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

Aurora 읽기 전용 복제본 및 재시작 문제 해결에 대한 자세한 내용은 [AWS Support 센터](https://console.aws.amazon.com/support/home#/)의 [Amazon Aurora 읽기 전용 복제본이 뒤처지고 다시 시작되는 이유는 무엇입니까?](https://aws.amazon.com/premiumsupport/knowledge-center/aurora-read-replica-restart/) 섹션을 참조하세요.

## 예시
<a name="aurora_replica_status-examples"></a>

다음 예제에서는 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)
```