

# pgactive 멤버 간의 복제 지연 측정
<a name="Appendix.PostgreSQL.CommonDBATasks.pgactive.replicationlag"></a>

다음 쿼리를 사용하여 `pgactive` 멤버 간의 복제 지연을 볼 수 있습니다. 모든 `pgactive` 노드에서 이 쿼리를 실행하면 전체 상황을 파악할 수 있습니다.

```
    
app=> SELECT * FROM pgactive.pgactive_get_replication_lag_info();
│-[ RECORD 1 ]--------+---------------------------------------------
│node_name            | node2-app
│node_sysid           | 7481018224801653637
│application_name     | pgactive:7481018224801653637:send
│slot_name            | pgactive_16385_7481018224801653637_0_16385__
│active               | t
│active_pid           | 783486
│pending_wal_decoding | 0
│pending_wal_to_apply | 0
│restart_lsn          | 0/2108150
│confirmed_flush_lsn  | 0/2154690
│sent_lsn             | 0/2154690
│write_lsn            | 0/2154690
│flush_lsn            | 0/2154690
│replay_lsn           | 0/2154690
│-[ RECORD 2 ]--------+---------------------------------------------
│node_name            | node1-app
│node_sysid           | 7481018033434600853
│application_name     | pgactive:7481018033434600853:send
│slot_name            | pgactive_16385_7481018033434600853_0_16385__
│active               | t
│active_pid           | 783488
│pending_wal_decoding | 0
│pending_wal_to_apply | 0
│restart_lsn          | 0/20F5AD0
│confirmed_flush_lsn  | 0/214EF68
│sent_lsn             | 0/214EF68
│write_lsn            | 0/214EF68
│flush_lsn            | 0/214EF68
│replay_lsn           | 0/214EF68
```

최소한 다음 진단을 모니터링합니다.

활성화  
활성이 false이면 알림을 설정합니다. 이는 슬롯이 현재 사용 중이 아님을 나타냅니다(구독자 인스턴스가 게시자와 연결 해제됨).

pending\$1wal\$1decoding  
PostgreSQL의 논리적 복제에서 WAL 파일은 이진 형식으로 저장됩니다. 게시자는 이러한 WAL 변경 사항을 디코딩하고 논리적 변경(예: 삽입, 업데이트 또는 삭제 작업)으로 변환해야 합니다.  
지표 pending\$1wal\$1decoding은 게시자 측에서 디코딩 대기 중인 WAL 파일 수를 보여 줍니다.  
이 수는 다음과 같은 요인으로 인해 증가할 수 있습니다.  
+ 구독자가 연결되지 않은 경우 활성 상태는 false이고 pending\$1wal\$1decoding은 증가합니다.
+ 슬롯이 활성 상태이지만 게시자가 WAL 변경 볼륨을 따라갈 수 없습니다.

pending\$1wal\$1to\$1apply  
지표 pending\$1wal\$1apply는 구독자 측에서 적용 대기 중인 WAL 파일 수를 나타냅니다.  
몇 가지 요인으로 인해 구독자가 변경 사항을 적용하지 못하고 다음과 같은 디스크 전체 시나리오가 발생할 수 있습니다.  
+ 스키마 차이 - 예를 들어 샘플이라는 테이블의 WAL 스트림이 변경되었지만 해당 테이블이 구독자 측에 없는 경우
+ 프라이머리 키 열의 값이 업데이트됨
+ 보조 고유 인덱스로 인해 데이터 분산이 발생할 수 있음