메인 콘텐츠로 건너뛰기
ExternalDistributed 엔진은 원격 서버의 MySQL 또는 PostgreSQL에 저장된 데이터에 대해 SELECT 쿼리를 실행할 수 있습니다. 인수로 MySQL 또는 PostgreSQL 엔진을 받아 세그먼트 분할이 가능합니다.

테이블 생성하기

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
    ...
) ENGINE = ExternalDistributed('engine', 'host:port', 'database', 'table', 'user', 'password');
자세한 내용은 CREATE TABLE 쿼리 설명을 참조하십시오. 테이블 구조는 원본 테이블 구조와 다를 수 있습니다:
  • 컬럼 이름은 원본 테이블과 같아야 하지만, 그중 일부 컬럼만 어떤 순서로든 사용할 수 있습니다.
  • 컬럼 타입은 원본 테이블의 타입과 다를 수 있습니다. ClickHouse는 값을 ClickHouse 데이터 타입으로 CAST하려고 시도합니다.
엔진 매개변수
  • engine — 테이블 엔진 MySQL 또는 PostgreSQL.
  • host:port — MySQL 또는 PostgreSQL 서버 주소.
  • database — 원격 데이터베이스 이름.
  • table — 원격 테이블 이름.
  • user — 사용자 이름.
  • password — 사용자 비밀번호.

구현 세부 사항

여러 레플리카를 지원하며, 레플리카는 |로, 세그먼트는 ,로 나열해야 합니다. 예를 들면 다음과 같습니다:
CREATE TABLE test_shards (id UInt32, name String, age UInt32, money UInt32) ENGINE = ExternalDistributed('MySQL', `mysql{1|2}:3306,mysql{3|4}:3306`, 'clickhouse', 'test_replicas', 'root', 'clickhouse');
레플리카를 지정하면 읽기 시 각 세그먼트마다 사용 가능한 레플리카 중 하나가 선택됩니다. 연결에 실패하면 다음 레플리카를 선택하며, 모든 레플리카에 대해 이 과정을 순차적으로 반복합니다. 모든 레플리카에 대한 연결 시도가 실패하면 동일한 방식으로 여러 차례 다시 시도합니다. 세그먼트 수와 각 세그먼트의 레플리카 수는 얼마든지 지정할 수 있습니다. 관련 항목
마지막 수정일 2026년 6월 10일