ClickHouse Cloud 사용자에게는 PostgreSQL을 ClickHouse로 복제할 때 ClickPipes를 사용할 것을 권장합니다. ClickPipes는 PostgreSQL용 고성능 Change Data Capture (CDC)를 네이티브로 지원합니다.
이 테이블 엔진은 실험적 기능입니다. 사용하려면 설정 파일에서 또는
SET 명령을 사용해 allow_experimental_materialized_postgresql_table을 1로 설정하십시오:materialized_postgresql_tables_list 설정을 사용할 것을 강력히 권장합니다(데이터베이스 schema도 추가할 수 있게 될 예정입니다). 이 방식이 CPU 사용량, 연결 수, 원격 PostgreSQL 데이터베이스 내부의 replication slot 수 측면에서 훨씬 더 효율적입니다.
테이블 생성
host:port— PostgreSQL 서버 주소.database— 원격 데이터베이스 이름.table— 원격 테이블 이름.user— PostgreSQL 사용자 이름.password— 사용자 비밀번호.
TLS/SSL
libpq로 전달되며, 명명된 컬렉션을 통해 제공하거나 엔진의 후행 키-값 인수로 지정할 수 있습니다. sslmode(disable, allow, prefer, require, verify-ca 또는 verify-full; 설정하지 않으면 libpq의 기본값인 prefer가 적용됨)와 인증서 및 키는 두 가지 형식 중 하나로 지정할 수 있습니다. sslrootcert(CA 인증서), sslcert(클라이언트 인증서), sslkey(클라이언트 private key)는 서버 로컬 파일의 경로이며, 서버 설정 파일에 정의된 명명된 컬렉션에서만 사용할 수 있습니다. 대신 sslrootcert_pem, sslcert_pem, sslkey_pem에는 해당 파일의 리터럴 내용을 지정할 수 있으며, SQL에서 지정할 수 있고 비밀번호와 마찬가지로 로그 및 SHOW 쿼리에서 마스킹됩니다.
요구 사항
-
PostgreSQL 구성 파일에서 wal_level 설정 값은
logical이어야 하며,max_replication_slots매개변수 값은 최소2이상이어야 합니다. -
MaterializedPostgreSQL엔진을 사용하는 테이블에는 PostgreSQL 테이블의 replica identity 인덱스(기본값: 기본 키(primary key))와 동일한 기본 키(primary key)가 있어야 합니다(replica identity 인덱스에 대한 자세한 내용 참조). - Atomic 데이터베이스만 사용할 수 있습니다.
-
MaterializedPostgreSQL테이블 엔진은 구현에 PostgreSQL 함수 pg_replication_slot_advance가 필요하므로 PostgreSQL 버전 11 이상에서만 작동합니다.
가상 컬럼
SELECT 쿼리에서 항상 사용할 수 있습니다.
_version 컬럼은 WAL의 LSN 위치와 같으므로, 복제가 얼마나 최신 상태인지 확인하는 데 사용할 수 있습니다.
TOAST 값의 복제는 지원되지 않습니다. 대신 해당 데이터 타입의 기본값이 사용됩니다.