본문으로 바로가기
본문으로 바로가기

RDS Postgres 소스 구성 가이드

지원되는 Postgres 버전

ClickPipes는 Postgres 버전 12 이상을 지원합니다.

논리 복제(logical replication) 활성화

RDS 인스턴스에 다음 설정이 이미 구성되어 있다면 이 섹션은 건너뛰어도 됩니다.

  • rds.logical_replication = 1
  • wal_sender_timeout = 0

이러한 설정은 이전에 다른 데이터 복제(replication) 도구를 사용했다면 보통 미리 설정되어 있습니다.

postgres=> SHOW rds.logical_replication ;
 rds.logical_replication
-------------------------
 on
(1 row)

postgres=> SHOW wal_sender_timeout ;
 wal_sender_timeout
--------------------
 0
(1 row)

아직 구성하지 않았다면 다음 단계를 따르십시오.

  1. 필요한 설정으로 사용 중인 Postgres 버전에 맞는 새 파라미터 그룹을 생성합니다.
    • rds.logical_replication을 1로 설정합니다.
    • wal_sender_timeout을 0으로 설정합니다.
RDS에서 파라미터 그룹을 찾는 위치
rds.logical_replication 변경
wal_sender_timeout 변경
  1. 새 파라미터 그룹을 RDS Postgres 데이터베이스에 적용합니다.
새 파라미터 그룹으로 RDS Postgres 수정
  1. 변경 내용을 적용하기 위해 RDS 인스턴스를 재부팅합니다.
RDS Postgres 재부팅

데이터베이스 사용자 구성

관리자 사용자로 RDS Postgres 인스턴스에 접속한 후 다음 명령을 실행합니다:

  1. ClickPipes용 전용 사용자를 생성합니다:

    CREATE USER clickpipes_user PASSWORD 'some-password';
    
  2. 이전 단계에서 생성한 사용자에게 스키마 단위의 읽기 전용 권한을 부여합니다. 다음 예시는 public 스키마에 대한 권한을 보여줍니다. 복제하려는 테이블이 포함된 각 스키마에 대해 이 명령들을 반복합니다:

    GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
    
  3. 사용자에게 복제 권한을 부여합니다:

    GRANT rds_replication TO clickpipes_user;
    
  4. 복제하려는 테이블을 포함하는 publication을 생성합니다. 성능 오버헤드를 줄이기 위해 publication에는 필요한 테이블만 포함할 것을 강력히 권장합니다.

    참고

    publication에 포함되는 모든 테이블에는 **기본 키(primary key)**가 정의되어 있거나, replica identityFULL로 설정되어 있어야 합니다. 범위 지정에 대한 안내는 Postgres FAQs를 참고하십시오.

    • 특정 테이블에 대한 publication을 생성하려면:

      CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
      
    • 특정 스키마의 모든 테이블에 대한 publication을 생성하려면:

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
      

    clickpipes publication에는 지정된 테이블에서 생성되는 변경 이벤트 집합이 포함되며, 이후 복제 스트림을 수집하는 데 사용됩니다.

네트워크 액세스 구성

IP 기반 액세스 제어

RDS 인스턴스로의 트래픽을 제한하려면 RDS 보안 그룹의 Inbound rules문서에 명시된 고정 NAT IP를 추가하십시오.

RDS Postgres에서 보안 그룹을 찾는 위치
위 보안 그룹의 인바운드 규칙을 편집하는 화면

사설 네트워크를 통해 RDS 인스턴스에 연결하려면 AWS PrivateLink를 사용할 수 있습니다. 연결을 설정하려면 ClickPipes용 AWS PrivateLink 설정 가이드를 참고하십시오.

RDS Proxy 우회 방법

RDS Proxy는 논리 복제(logical replication) 연결을 지원하지 않습니다. RDS에서 동적 IP 주소를 사용하고 DNS 이름이나 Lambda 함수를 사용할 수 없는 경우에는 다음과 같은 대안이 있습니다.

  1. cron 작업을 사용하여 RDS 엔드포인트의 IP를 주기적으로 확인하고, 변경된 경우 NLB를 업데이트합니다.
  2. EventBridge/SNS와 함께 RDS Event Notifications 사용: AWS RDS 이벤트 알림을 사용하여 업데이트를 자동으로 트리거합니다.
  3. Stable EC2: 폴링 서비스 또는 IP 기반 프록시 역할을 하는 EC2 인스턴스를 배포합니다.
  4. Terraform 또는 CloudFormation과 같은 도구를 사용하여 IP 주소 관리를 자동화합니다.

다음 단계는?

이제 ClickPipe를 생성하여 Postgres 인스턴스의 데이터를 ClickHouse Cloud로 수집하기 시작할 수 있습니다. Postgres 인스턴스를 설정할 때 사용한 연결 정보를 반드시 기록해 두시기 바랍니다. ClickPipe를 생성하는 과정에서 해당 정보가 필요합니다.