Aurora에서의 PostgreSQL 논리적 복제 개요
PostgreSQL의 논리적 복제 기능을 Aurora PostgreSQL DB 클러스터와 함께 사용하면 전체 데이터베이스 인스턴스가 아닌 개별 테이블을 복제하고 동기화할 수 있습니다. 논리적 복제에서는 게시 및 구독 모델을 사용하여 원본에서 한 명 이상의 수신자에게 변경 내용을 복제합니다. 이 작업은 PostgreSQL 미리 쓰기 로그(WAL)의 변경 레코드를 사용하여 작동합니다. 소스 또는 게시자는 지정된 테이블에 대한 WAL 데이터를 한 명 이상의 수신자(구독자)에게 전송하여 변경 사항을 복제하고 구독자의 테이블을 게시자의 테이블과 동기화된 상태로 유지합니다. 게시자의 변경 사항 집합은 게시를 사용하여 식별됩니다. 구독자는 게시자의 데이터베이스 및 게시에 대한 연결을 정의하는 구독을 만들어 변경 사항을 적용합니다. 복제 슬롯은 이 체계에서 구독 진행 상황을 추적하는 데 사용되는 메커니즘입니다.
Aurora PostgreSQL DB 클러스터의 경우 WAL 레코드가 Aurora 스토리지에 저장됩니다. 논리적 복제 시나리오에서 게시자 역할을 하는 Aurora PostgreSQL DB 클러스터는 Aurora 스토리지에서 WAL 데이터를 읽고 디코딩하고 구독자에게 전송하여 변경 사항이 해당 인스턴스의 테이블에 적용될 수 있도록 합니다. 게시자는 논리적 디코더를 사용하여 구독자가 사용할 데이터를 디코딩합니다. 기본적으로 Aurora PostgreSQL DB 클러스터는 데이터를 전송할 때 네이티브 PostgreSQL pgoutput
플러그인을 사용합니다. 다른 논리적 디코더도 사용할 수 있습니다. 예를 들어, Aurora PostgreSQL는 WAL 데이터를 JSON으로 변환하는 wal2json
플러그인도 지원합니다.
Aurora PostgreSQL 버전 14.5, 13.8, 12.12 및 11.17부터 Aurora PostgreSQL은 라이트-스루 캐시를 통해 PostgreSQL 논리적 복제 프로세스를 보강하여 성능을 개선합니다. WAL 트랜잭션 로그는 버퍼에 로컬로 캐시되어 디스크 I/O의 양, 즉 논리적 디코딩 중에 Aurora 스토리지에서 읽는 양을 줄입니다. 기본적으로 라이트-스루 캐시는 Aurora PostgreSQL DB 클러스터에 대한 논리적 복제를 사용할 때마다 사용됩니다. Aurora는 캐시 관리에 사용할 수 있는 다양한 함수를 제공합니다. 자세한 내용은 Aurora PostgreSQL 논리적 복제 라이트-스루 캐시 모니터링 단원을 참조하십시오.
논리적 복제는 현재 사용 가능한 모든 Aurora PostgreSQL 버전에서 지원됩니다. 자세한 정보는 Aurora PostgreSQL 릴리스 정보에서 Amazon Aurora PostgreSQL 업데이트 내용을 참조하세요.
Babelfish for Aurora PostgreSQL은 다음 버전에서 논리적 복제를 지원합니다.
15.7 이상 버전
16.3 이상 버전
참고
Aurora PostgreSQL은 PostgreSQL 10에 도입된 기본 PostgreSQL 논리적 복제 기능 외에 pglogical
확장도 지원합니다. 자세한 내용은 pglogical을 사용하여 인스턴스 간 데이터 동기화 단원을 참조하십시오.
PostgreSQL 논리적 복제에 대한 자세한 내용은 PostgreSQL 설명서의 Logical replication