메인 콘텐츠로 건너뛰기
이제 ClickHouse Cloud는 외부 PostgreSQL 데이터베이스를 Managed Postgres 서비스로 마이그레이션할 수 있도록 ClickPipes를 제공합니다. 이 기본 제공 통합을 사용하면 원본 데이터베이스에 연결하고, 스키마를 내보내고, 이를 Managed Postgres로 가져오고, 지속적 복제를 설정하는 작업을 간편하게 수행할 수 있습니다.

사전 준비 사항

마이그레이션 전에 고려할 사항

  • DDL 전파: 지속적 복제(CDC)에서는 DML 작업과 ADD COLUMN을 포착합니다. DROP COLUMNALTER COLUMN 같은 다른 DDL 변경 사항은 전파되지 않으므로 대상에 수동으로 적용해야 합니다.
마이그레이션 중 문제가 발생하면 일반적인 오류와 해결 방법은 Managed Postgres Migrations FAQ에서 확인하십시오.

1단계: 원본 데이터베이스에 연결

ClickHouse Cloud 콘솔을 열고 Managed Postgres 서비스를 선택합니다. 왼쪽 사이드바에서 데이터 소스를 클릭합니다. Start import를 클릭합니다. 원본 PostgreSQL 데이터베이스의 연결 정보를 입력합니다: 호스트, 포트, 사용자 이름, 비밀번호, 데이터베이스 이름. 원본 데이터베이스에서 필요하면 TLS를 활성화합니다. 원본 데이터베이스에 대한 비공개 연결이 필요하면 SSH tunneling을 선택하고 필요한 SSH 정보를 입력할 수 있습니다. 이렇게 하면 공개적으로 접근할 수 없는 데이터베이스에도 마이그레이션이 안전하게 연결할 수 있습니다. 수집 메서드를 선택합니다:
  • Initial load + CDC — 기존 데이터를 복사한 다음, 이후 변경 사항도 계속 반영하여 대상을 동기화 상태로 유지합니다.
  • Initial load only — 한 번만 복사하고, 이후 복제는 수행하지 않습니다.
  • CDC only — 초기 복사를 건너뛰고 이 시점 이후의 새 변경 사항만 복제합니다.
다음을 클릭합니다.

2단계: 데이터베이스 스키마 내보내기

마법사에 원본 연결 정보가 미리 입력된 pg_dump 명령이 표시됩니다. 터미널에서 이를 실행하세요:
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql
이 명령을 실행하면 현재 작업 디렉터리에 pg.sql 파일이 생성됩니다. 다음을 클릭하세요.

3단계: 스키마를 Managed Postgres 서비스로 가져오기

드롭다운에서 대상 데이터베이스를 선택하거나, Create a new database를 클릭해 새 데이터베이스를 생성합니다. 마법사에서 스키마 덤프를 Managed Postgres 서비스에 적용하는 psql 명령을 표시합니다. 터미널에서 실행하세요:
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
다음을 클릭하세요.

Step 4: 수집 설정 구성

논리적 복제에 사용할 publication을 지정합니다. 비워 두면 publication이 자동으로 생성됩니다. 처리량을 조정하려면 고급 복제 설정을 펼치십시오.
설정기본값설명
동기화 인터벌(초)10replication slot을 폴링하는 주기
초기 적재용 병렬 스레드 수4대량 복사 단계에 사용하는 스레드 수
Pull 배치 크기100,000복제 배치마다 가져오는 행 수
스냅샷 파티션당 행 수100000대형 테이블 스냅샷의 파티션 크기
병렬 스냅샷 테이블 수1동시에 스냅샷하는 테이블 수
다음을 클릭하십시오.

5단계: 테이블 선택

복제할 테이블을 선택하세요. 테이블은 스키마별로 그룹화되어 있습니다. 개별 테이블을 선택하거나 스키마를 펼쳐 전체를 선택하세요. Create migration을 클릭하세요.

마이그레이션 모니터링

마이그레이션을 생성하면 데이터 소스Running 상태로 표시됩니다. 마이그레이션을 클릭하면 상세 보기가 열립니다. Tables 탭에는 처리된 행 수, 파티션, 파티션당 평균 시간 등 각 테이블의 초기 적재 진행 상황이 표시됩니다. Metrics 탭에는 CDC가 시작되면 복제 지연과 처리량이 표시됩니다.

마이그레이션 후 작업

초기 적재가 완료되고, CDC를 사용하는 경우 복제 지연이 거의 0이 되면 다음을 수행하십시오: 행 수를 검증합니다. 트래픽을 전환하기 전에 원본과 대상의 주요 테이블을 선별해 점검하십시오:
SELECT COUNT(*) FROM public.orders;
소스 시스템에 대한 쓰기를 중지합니다. 애플리케이션의 쓰기 작업을 일시 중지하세요. 전환 중 읽기 전용 모드를 강제하려면:
ALTER DATABASE <source_db> SET default_transaction_read_only = on;
복제가 모두 반영되었는지 확인합니다. 소스와 타깃의 최신 행을 비교합니다:
-- 소스와 대상 모두에서 실행
SELECT MAX(id), MAX(updated_at) FROM public.orders;
시퀀스를 재설정합니다. 각 테이블의 현재 최댓값에 맞춰 시퀀스를 조정합니다:
DO $$
DECLARE r RECORD;
BEGIN
    FOR r IN
        SELECT
            n.nspname AS schema_name,
            c.relname AS table_name,
            a.attname AS column_name,
            pg_get_serial_sequence(format('%I.%I', n.nspname, c.relname), a.attname) AS seq_name
        FROM pg_class c
        JOIN pg_namespace n ON n.oid = c.relnamespace
        JOIN pg_attribute a ON a.attrelid = c.oid
        WHERE c.relkind = 'r'
            AND a.attnum > 0
            AND NOT a.attisdropped
            AND n.nspname NOT IN ('pg_catalog', 'information_schema')
    LOOP
        IF r.seq_name IS NOT NULL THEN
            EXECUTE format(
                'SELECT setval(%L, COALESCE((SELECT MAX(%I) FROM %I.%I), 0) + 1, false)',
                r.seq_name, r.column_name, r.schema_name, r.table_name
            );
        END IF;
    END LOOP;
END $$;
애플리케이션 트래픽을 전환하세요. 읽기 및 쓰기 트래픽이 Managed Postgres 서비스로 향하도록 전환하고, 오류, 제약 조건 위반, 복제 상태를 모니터링하세요. 정리하세요. 전환을 완료하고 새 서비스가 정상 상태임을 확인했으면 데이터 소스에서 migration을 삭제하세요. CDC를 사용했다면 리소스를 확보할 수 있도록 원본에서 replication slot을 삭제하세요:
SELECT pg_drop_replication_slot('<slot_name>');

다음 단계

마지막 수정일 2026년 6월 10일