pgactive 멤버 간의 복제 지연 측정 - Amazon Relational Database Service

pgactive 멤버 간의 복제 지연 측정

다음 쿼리를 사용하여 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_wal_decoding

PostgreSQL의 논리적 복제에서 WAL 파일은 이진 형식으로 저장됩니다. 게시자는 이러한 WAL 변경 사항을 디코딩하고 논리적 변경(예: 삽입, 업데이트 또는 삭제 작업)으로 변환해야 합니다.

지표 pending_wal_decoding은 게시자 측에서 디코딩 대기 중인 WAL 파일 수를 보여 줍니다.

이 수는 다음과 같은 요인으로 인해 증가할 수 있습니다.

  • 구독자가 연결되지 않은 경우 활성 상태는 false이고 pending_wal_decoding은 증가합니다.

  • 슬롯이 활성 상태이지만 게시자가 WAL 변경 볼륨을 따라갈 수 없습니다.

pending_wal_to_apply

지표 pending_wal_apply는 구독자 측에서 적용 대기 중인 WAL 파일 수를 나타냅니다.

몇 가지 요인으로 인해 구독자가 변경 사항을 적용하지 못하고 다음과 같은 디스크 전체 시나리오가 발생할 수 있습니다.

  • 스키마 차이 - 예를 들어 샘플이라는 테이블의 WAL 스트림이 변경되었지만 해당 테이블이 구독자 측에 없는 경우

  • 프라이머리 키 열의 값이 업데이트됨

  • 보조 고유 인덱스로 인해 데이터 분산이 발생할 수 있음