Aurora PostgreSQL 논리적 복제를 위한 라이트-스루 캐시 및 논리적 슬롯 모니터링
논리적 복제 라이트-스루 캐시를 모니터링하고 논리적 슬롯을 관리하여 Aurora PostgreSQL DB 클러스터의 성능을 개선합니다. 아래에서 라이트-스루 캐시 및 논리적 슬롯에 대한 자세한 내용을 찾아보세요.
Aurora PostgreSQL 논리적 복제 라이트-스루 캐시 모니터링
기본적으로 Aurora PostgreSQL 버전 14.5, 13.8, 12.12 및 11.17 이상에서는 라이트-스루 캐시를 사용하여 논리적 복제의 성능을 개선합니다. 라이트-스루 캐시가 없으면 Aurora PostgreSQL은 기본 PostgreSQL 논리적 복제 프로세스를 구현할 때 Aurora 스토리지 계층을 사용합니다. 이를 위해 WAL 데이터를 스토리지에 쓴 다음 스토리지에서 데이터를 다시 읽어 디코딩하고 대상(가입자)에 전송(복제)합니다. 그 결과 Aurora PostgreSQL DB 클러스터의 논리적 복제 중에 병목 현상이 발생할 수 있습니다.
라이트-스루 캐시는 Aurora 스토리지 계층에 대한 의존도를 최소화합니다. Aurora PostgreSQL은 이 계층에 지속적으로 쓰고 읽는 대신 버퍼를 사용하여 복제 프로세스 중에 사용할 논리적 WAL 스트림을 캐싱하므로 디스크에 액세스할 필요가 줄어듭니다. 이 버퍼는 논리적 복제에서 사용하는 기본 PostgreSQL 캐시이며, Aurora PostgreSQL DB 클러스터 파라미터에서 rds.logical_wal_cache
로 식별됩니다.
(라이트-스루 캐시를 지원하는 버전의) Aurora PostgreSQL DB 클러스터에서 논리적 복제를 사용하는 경우, 캐시 적중률을 모니터링하여 사용 사례에 맞게 작동하는지 확인할 수 있습니다. 이렇게 하려면 다음 예제와 같이 psql
을 사용하여 Aurora PostgreSQL DB 클러스터의 쓰기 인스턴스에 연결한 다음 Aurora 함수(aurora_stat_logical_wal_cache
)를 사용해야 합니다.
SELECT * FROM aurora_stat_logical_wal_cache();
이 함수는 다음과 같은 출력을 반환합니다.
name | active_pid | cache_hit | cache_miss | blks_read | hit_rate | last_reset_timestamp
-----------+------------+-----------+------------+-----------+----------+--------------
test_slot1 | 79183 | 24 | 0 | 24 | 100.00% | 2022-08-05 17:39...
test_slot2 | | 1 | 0 | 1 | 100.00% | 2022-08-05 17:34...
(2 rows)
가독성을 위해 last_reset_timestamp
값을 줄였습니다. 이 함수에 대한 자세한 내용은 aurora_stat_logical_wal_cache 단원을 참조하세요.
Aurora PostgreSQL는 라이트-스루 캐시를 모니터링하는 다음 두 가지 함수를 제공합니다.
aurora_stat_logical_wal_cache
함수 – 참조 설명서는 aurora_stat_logical_wal_cache에서 확인할 수 있습니다.aurora_stat_reset_wal_cache
함수 – 참조 설명서는 aurora_stat_reset_wal_cache에서 확인할 수 있습니다.
자동으로 조정된 WAL 캐시 크기가 워크로드에 충분하지 않은 경우, rds.logical_wal_cache
값을 수동으로 변경할 수 있습니다. 다음을 고려하세요.
-
rds.logical_replication
파라미터가 비활성화되면rds.logical_wal_cache
가 0으로 설정됩니다. -
rds.logical_replication
파라미터가 활성화되면rds.logical_wal_cache
의 기본값이 16MB입니다. -
rds.logical_wal_cache
파라미터는 정적이므로 변경 사항을 적용하려면 데이터베이스 인스턴스 재부팅이 필요합니다. 이 파라미터는 8Kb 블록으로 정의됩니다. 32kB 미만의 모든 양수 값은 32kB로 처리됩니다.wal_buffers
에 대한 자세한 내용은 PostgreSQL 설명서에서 Write Ahead Log를 참조하세요.
Aurora PostgreSQL 논리적 슬롯 관리
스트리밍 활동이 pg_replication_origin_status
보기에 캡처됩니다. 이 보기의 내용을 보려면 다음과 같이 pg_show_replication_origin_status()
함수를 사용하면 됩니다.
SELECT * FROM pg_show_replication_origin_status();
다음 SQL 쿼리를 사용하여 논리적 슬롯 목록을 가져올 수 있습니다.
SELECT * FROM pg_replication_slots;
논리적 슬롯을 삭제하려면 다음 명령에서처럼 pg_drop_replication_slot
를 슬롯 이름과 함께 사용합니다.
SELECT pg_drop_replication_slot('test_slot');