RDS for PostgreSQL에 대한 논리적 슬롯 동기화 관리
커뮤니티 PostgreSQL 17부터 실행 시 슬롯을 수동으로 동기화하는 파라미터 sync_replication_slots
또는 관련 함수 pg_sync_replication_slots()
를 통해 기본 서버에서 대기 서버로 논리적 복제 슬롯을 자동으로 동기화하는 새로운 기능이 도입되었습니다.
이러한 기능은 RDS for PostgreSQL 17부터 사용할 수 있습니다. 일반적인 설정에는 기본 인스턴스와 읽기 전용 복제본 및 프라이머리 인스턴스에 대한 논리적 복제 구독자가 포함됩니다.
장애 조치 옵션이 true로 설정된 상태에서 구독이 생성되었는지 확인합니다.
CREATE SUBSCRIPTION
subname
CONNECTION 'host=...' PUBLICATIONpubname
WITH (failover = true);
이렇게 하면 장애 조치가 활성화된 상태로 게시자에 논리적 슬롯이 생성됩니다.
postgres=> SELECT slot_name, slot_type, failover FROM pg_catalog.pg_replication_slots; slot_name | slot_type | failover -----------+-----------+---------- subname | logical | t (1 row)
슬롯 동기화를 활성화하면 프라이머리 인스턴스의 모든 장애 조치 논리적 복제 슬롯이 물리적 대기에 자동으로 생성되고 주기적으로 동기화됩니다. 파라미터 그룹을 통해 다음 값이 설정되었는지 확인합니다.
-
논리적 복제를 활성화하려면
rds.logical_replication
이1
이어야 합니다. -
대기 상태에서
hot_standby_feedback
이1
이어야 합니다. -
대기 상태의
rds.logical_slot_sync_dbname
을 유효한 데이터베이스 이름으로 설정해야 합니다.파라미터의 기본값은
postgres
입니다. 논리적 게시 인스턴스에postgres
데이터베이스가 있는 경우 기본 파라미터를 변경할 필요가 없습니다. -
프라이머리 인스턴스의
synchronized_standby_slots
는 동기화되도록 의도된 대기의 물리적 복제 슬롯으로 설정되어야 합니다. -
자동 동기화를 활성화하려면
sync_replication_slots
가1
이어야 합니다.
장애 조치 활성화 구독 슬롯과 위의 파라미터 값을 사용하면 대기가 승격될 때 구독자는 새로 승격된 이 인스턴스에 대한 구독을 변경하고 논리적 복제를 원활하게 계속할 수 있습니다.