지원되는 Postgres 버전
논리적 복제 활성화
rds.logical_replication = 1
- 필요한 설정이 포함된, 사용 중인 Aurora PostgreSQL 버전에 맞는 새 파라미터 그룹을 생성합니다:
rds.logical_replication을 1로 설정합니다
- 새 파라미터 그룹을 Aurora PostgreSQL 클러스터에 적용합니다
- 변경 사항을 적용하기 위해 Aurora 클러스터를 재부팅합니다
데이터베이스 사용자 구성
-
ClickPipes 전용 사용자를 생성합니다:
-
이전 단계에서 생성한 사용자에게 스키마 수준의 읽기 전용 권한을 부여합니다. 다음 예시는
public스키마에 대한 권한을 보여줍니다. 복제할 테이블이 포함된 각 스키마에 대해 이 명령을 반복하십시오: -
사용자에게 복제 권한을 부여합니다:
- 복제할 테이블을 포함하는 publication을 생성합니다. 성능 오버헤드를 피하려면 publication에는 꼭 필요한 테이블만 포함할 것을 강력히 권장합니다.
-
특정 테이블에 대한 publication을 생성하려면:
-
특정 스키마의 모든 테이블에 대한 publication을 생성하려면:
-
특정 스키마의 모든 테이블에 대한 publication을 생성하려면:
clickpipes publication은 변경 이벤트가 ClickPipes로 스트리밍될 테이블 집합을 정의합니다. 모든 테이블을 복제할 계획이 아니라면 FOR ALL TABLES 사용은 권장하지 않습니다. 불필요한 테이블이 포함되면 Postgres에서 ClickPipes로 전송되는 WAL 트래픽이 증가하고 전체 복제 효율이 저하되기 때문입니다.
IAM authentication 사용(선택 사항)
rds.iam_auth_for_replication 매개변수를 1로 설정해야 합니다. 다음과 같이 사용자를 생성한 후, 앞서 설명한 것과 동일한 스키마 및 복제 권한을 부여하십시오:
네트워크 액세스 설정
IP 기반 접근 제어
Inbound rules에 추가하십시오.
AWS PrivateLink를 통한 프라이빗 액세스
Aurora 관련 고려 사항
- 연결 엔드포인트: 논리적 복제에서는 replication slot을 생성하려면 쓰기 권한이 필요하며 프라이머리 인스턴스에 연결해야 하므로, 항상 Aurora 클러스터의 writer 엔드포인트에 연결하십시오.
- 장애 조치 처리: 장애 조치가 발생하면 Aurora는 reader를 새 writer로 자동 승격합니다. ClickPipes는 연결이 끊어진 것을 감지하고 writer 엔드포인트에 다시 연결을 시도하며, 이 엔드포인트는 이제 새 프라이머리 인스턴스를 가리키게 됩니다.
- Global Database: Aurora Global Database를 사용하는 경우, 리전 간 복제가 이미 리전 간 데이터 이동을 처리하므로 프라이머리 리전의 writer 엔드포인트에 연결해야 합니다.
- 스토리지 관련 고려 사항: Aurora의 스토리지 계층은 클러스터의 모든 인스턴스에서 공유되므로, 표준 RDS보다 논리적 복제 성능이 더 좋을 수 있습니다.
동적 클러스터 엔드포인트 처리하기
- 고가용성 구성에서는 애플리케이션이 Aurora writer 엔드포인트를 사용하도록 구성하세요. 이 엔드포인트는 현재 프라이머리 인스턴스를 자동으로 가리킵니다.
- 리전 간 복제를 사용하는 경우, 지연 시간을 줄이고 장애 허용을 높이기 위해 각 리전별로 별도의 ClickPipes를 설정하는 것을 고려하세요.