메인 콘텐츠로 건너뛰기
이 가이드에서는 Postgres 네이티브 논리적 복제를 사용하여 PostgreSQL 데이터베이스를 ClickHouse Managed Postgres로 이전하는 방법을 단계별로 안내합니다.

사전 요구 사항

  • 원본 PostgreSQL 데이터베이스에 액세스할 수 있어야 합니다.
  • 로컬 머신에 psql,pg_dump, pg_restore가 설치되어 있어야 합니다. 이는 대상 데이터베이스에 빈 테이블을 만들기 위해 필요합니다. 일반적으로 PostgreSQL 설치 시 함께 제공됩니다. 설치되어 있지 않다면 PostgreSQL 공식 웹사이트에서 다운로드할 수 있습니다.
  • 원본 데이터베이스는 ClickHouse Managed Postgres에서 접근할 수 있어야 합니다. 필요한 방화벽 규칙 또는 Security Group 설정이 이 연결을 허용하는지 확인하십시오. Managed Postgres 인스턴스의 egress IP는 다음을 실행해 확인할 수 있습니다:
dig +short <your-managed-postgres-hostname>

설정

논리적 복제가 동작하려면 원본 데이터베이스가 올바르게 설정되어 있어야 합니다. 주요 요구 사항은 다음과 같습니다.
  • 원본 데이터베이스에서 wal_levellogical로 설정되어 있어야 합니다.
  • 원본 데이터베이스에서 max_replication_slots가 최소 1로 설정되어 있어야 합니다.
  • RDS(이 가이드에서는 예시로 사용)에서는 parameter group에 rds.logical_replication1로 설정되어 있는지 확인해야 합니다.
  • 원본 데이터베이스 사용자는 REPLICATION 권한을 가지고 있어야 합니다. RDS의 경우 다음을 실행하십시오:
    GRANT rds_replication TO <your-username>;
    
  • 대상 데이터베이스에 사용할 역할(Role)에는 대상 데이터베이스 객체에 대한 쓰기 권한이 있어야 합니다:
    GRANT USAGE ON SCHEMA <schema_i> TO subscriber_user;
    GRANT CREATE ON DATABASE destination_db TO subscriber_user;
    GRANT pg_create_subscription TO subscriber_user;
    
    -- 테이블 권한 부여
    GRANT INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA <schema_i> TO subscriber_user;
    
원본 데이터베이스가 다음과 같이 설정되어 있는지 확인하십시오:

소스 데이터베이스의 스키마만 덤프하기

논리적 복제를 설정하기 전에 대상 ClickHouse Managed Postgres 데이터베이스에 스키마(schema)를 먼저 생성해야 합니다. 이를 위해 pg_dump를 사용해 소스 데이터베이스의 스키마만 포함된 덤프를 만들 수 있습니다:
pg_dump \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    -s \
    --format directory \
    -f rds-dump
여기서는 다음과 같습니다.
  • <user>, <password>, <host>, <port>, <database>를 소스 데이터베이스 자격 증명으로 바꾸십시오.
  • -s는 스키마만 덤프하도록 지정합니다.
  • --format directory는 덤프를 디렉터리 포맷으로 생성하도록 지정하며, 이 포맷은 pg_restore에 적합합니다.
  • -f rds-dump는 덤프 파일의 출력 디렉터리를 지정합니다. 이 디렉터리는 자동으로 생성되므로 미리 존재하지 않아야 합니다.
이 경우 테이블은 eventsusers 두 개입니다. events에는 100만 개의 행이 있고, users에는 1천 개의 행이 있습니다.

Managed Postgres 인스턴스 생성

먼저 Managed Postgres 인스턴스를 설정해 두었는지 확인하십시오. 가능하면 원본과 동일한 리전에 설정하는 것이 좋습니다. 여기의 빠른 시작 가이드를 따라 진행할 수 있습니다. 이 가이드에서는 다음과 같은 구성을 생성합니다.

ClickHouse Managed Postgres에 스키마 복원하기

이제 스키마(schema) 덤프가 준비되었으므로 pg_restore를 사용해 ClickHouse Managed Postgres 인스턴스에 복원할 수 있습니다:
pg_restore \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    --verbose \
    rds-dump
여기에서:
  • <user>, <password>, <host>, <port>, <database>를 대상 ClickHouse Managed Postgres 데이터베이스의 자격 증명으로 바꾸십시오.
  • --verbose는 복원 과정에서 자세한 출력을 제공합니다. 이 명령은 데이터는 제외한 채 대상 데이터베이스에 모든 테이블, 인덱스, 뷰 및 기타 스키마 객체를 생성합니다.
이 예시에서는 이 명령을 실행한 후 두 개의 테이블이 생성되었으며, 모두 비어 있습니다:

논리적 복제 설정

스키마가 준비되었으므로 이제 원본 데이터베이스에서 대상 ClickHouse Managed Postgres 데이터베이스로 논리적 복제를 설정할 수 있습니다. 이를 위해 원본 데이터베이스에 publication을 만들고 대상 데이터베이스에 subscription을 만듭니다.

원본 데이터베이스에 publication 생성하기

원본 PostgreSQL 데이터베이스에 연결한 다음, 복제하려는 테이블이 포함된 publication을 생성하십시오.
CREATE PUBLICATION <pub_name> FOR TABLE table1, table2...;
테이블이 많은 경우 FOR ALL TABLES publication을 생성하면 네트워크 오버헤드가 발생할 수 있습니다. 복제할 테이블만 지정하는 것이 좋습니다.

대상 ClickHouse Managed Postgres 데이터베이스에서 subscription 만들기

다음으로, 대상 ClickHouse Managed Postgres 데이터베이스에 연결한 뒤 원본 데이터베이스의 publication에 연결할 subscription을 생성합니다.
CREATE SUBSCRIPTION demo_rds_subscription
CONNECTION 'postgresql://<user>:<password>@<host>:<port>/<database>'
PUBLICATION <pub_name_you_entered_above>;
이 작업을 수행하면 원본 데이터베이스에 replication slot이 자동으로 생성되고, 지정한 테이블의 데이터를 대상 데이터베이스로 복제하기 시작합니다. 데이터 크기에 따라 이 과정에는 다소 시간이 걸릴 수 있습니다. 이 예시에서는 subscription을 설정한 후 데이터가 유입되었습니다: 이제 원본 데이터베이스에 새로 삽입되는 행은 거의 실시간으로 대상 ClickHouse Managed Postgres 데이터베이스에 복제됩니다.

주의 사항 및 고려 사항

  • 논리적 복제는 데이터 변경(INSERT, UPDATE, DELETE)만 복제합니다. 스키마 변경(예: ALTER TABLE)은 별도로 처리해야 합니다.
  • 복제 중단을 방지하려면 원본 데이터베이스와 대상 데이터베이스 간 네트워크 연결이 안정적인지 확인하세요.
  • 대상 데이터베이스가 원본 데이터베이스의 변경 사항을 제때 반영하고 있는지 확인하려면 복제 지연을 모니터링하세요. 원본 데이터베이스에서 max_slot_wal_keep_size를 적절한 값으로 설정하면 계속 커지는 replication slot을 관리하고 과도한 디스크 공간 사용을 방지하는 데 도움이 됩니다.
  • 사용 사례에 따라 복제 프로세스에 대한 모니터링 및 알림을 설정하는 것이 좋습니다.

다음 단계

축하합니다! pg_dumppg_restore를 사용하여 PostgreSQL 데이터베이스를 ClickHouse Managed Postgres로 성공적으로 마이그레이션했습니다. 이제 Managed Postgres의 기능과 ClickHouse와의 통합을 살펴볼 준비가 되었습니다. 시작에 도움이 되는 10분 분량의 빠른 시작 가이드는 다음과 같습니다.
마지막 수정일 2026년 6월 10일