Fri, 05 Sep 2025 16:38:36 +0900

pg_createsubscriber 써 논리 복제 구독 서버 만들기

운영중인 용량이 큰 데이터베이스 전체를 논리 복제로 구축하는 일이 까다로웠습니다.

단순하게 그냥 깡통 테이블을 만들고, 원본 테이블에서 모든 데이터를 테이블 별로 다 가져 오든가,

발행 쪽에서 논리 복제 슬롯을 만들고, 만들 때 알려준 그 lsn 까지 지정 시점 복구(Point in time recovery)를 한 뒤 구독을 copy_data 옵션을 끄고 만들든가

17버전에서 pg_createsubscriber 프로그램이 새로 나왔습니다.

사용법은 물리 복제(replica) 노드를 만들어 primary 쪽과 계속 동기화 하고 있다가

replica를 중지하고,

pg_createsubscriber 명령을 이용해서 지정 데이터베이스 전체를 논리 복제 환경으로 바꿉니다. 참 쉽죠.

이 작업이 끝나면, replica 노드는 promote 작업을 해서 독립된 인스턴스가 되됩니다.

해당 논리복제 구독 인스턴스를 실행하면 그때부터 pg_createsubscriber 때부터 구독 인스턴스가 실행될 때까지 변경된 내용만 가져와서 논리복제 환경을 만듭니다.

pg_createsubscriber -D replica의_PGDATA -P 기존replica의_primary_conninfo -d 논리복제로_사용할_데이터베이스이름