clickhousectl은 로컬과 클라우드용 ClickHouse CLI입니다.
clickhousectl로 다음 작업을 수행할 수 있습니다:
- 로컬 ClickHouse 버전 설치 및 관리
- 로컬 ClickHouse 서버 실행 및 관리
- 로컬 Postgres 인스턴스 실행 및 관리
- ClickHouse 서버에서 쿼리 실행
- ClickHouse Cloud를 설정하고 클라우드 관리형 ClickHouse 클러스터 생성
- ClickHouse Cloud Postgres 서비스 생성 및 관리
- ClickHouse Cloud 리소스 관리
- 데이터 수집을 위한 ClickPipes 생성 및 관리 (S3, Kafka, Kinesis, Postgres, MySQL, MongoDB, BigQuery)
- 지원되는 코딩 에이전트에 공식 ClickHouse agent 스킬 설치
- 로컬 ClickHouse 개발 환경을 클라우드로 푸시
clickhousectl은 사람과 AI 에이전트가 ClickHouse로 개발할 수 있도록 지원합니다.
설치
빠른 설치
~/.local/bin/clickhousectl에 설치합니다. 편의를 위해 chctl alias도 자동으로 생성됩니다.
요구 사항
- macOS (aarch64, x86_64) 또는 Linux (aarch64, x86_64)
- Cloud 명령에는 ClickHouse Cloud API Key가 필요합니다
로컬
ClickHouse 버전 설치 및 관리
clickhousectl은 builds.clickhouse.com에서 ClickHouse 바이너리를 다운로드하며, 해당 위치에서 빌드를 사용할 수 없으면 packages.clickhouse.com(Linux) 또는 GitHub releases(macOS)에서 대신 다운로드합니다.
local use는 선택한 버전의 binary를 가리키는 ~/.local/bin/clickhouse 심볼릭 링크도 생성하므로, 일반 clickhouse 명령(예: clickhouse local, clickhouse client)을 PATH에서 사용할 수 있습니다. 이 동작을 건너뛰려면 --no-global을 전달하세요. 해당 경로에 일반 파일이 이미 있으면 경고를 표시하고 그대로 둡니다. 활성 기본 버전에 local remove를 실행하면 심볼릭 링크도 제거됩니다.
ClickHouse 실행 파일 저장소
~/.clickhouse/에 저장됩니다:
프로젝트 초기화
init은 현재 작업 디렉터리에 ClickHouse 및 Postgres 프로젝트 파일을 위한 표준 폴더 구조를 설정합니다. 이 작업은 선택 사항이므로, 필요하면 자체 폴더 구조를 사용해도 됩니다.
다음과 같은 구조가 생성됩니다:
쿼리 실행
ClickHouse 서버 생성 및 관리
.clickhouse/servers/<name>/data/ 아래에 서로 격리된 자체 데이터 디렉터리가 할당됩니다.
--name을 지정하지 않으면 첫 번째 server의 이름은 “default”입니다. “default”가 이미 실행 중이면 임의의 이름이 생성됩니다(예: “bold-crane”). 반복해서 시작하거나 중지할 수 있는 안정적인 식별자가 필요하면 --name을 사용하세요.
포트: 기본 포트는 HTTP 8123과 TCP 9000입니다. 이 포트들이 이미 사용 중이면 사용 가능한 포트가 자동으로 할당되고 출력에 표시됩니다. 포트를 명시적으로 지정하려면 --http-port와 --tcp-port를 사용하세요.
전역 서버 관리: 시스템 전체의 모든 프로젝트에 걸쳐 작업하려면 list, stop, stop-all과 함께 --global을 사용하세요. server list --global은 실행 중인 모든 ClickHouse 서버를 표시하며, 각 서버가 어느 디렉터리에 속하는지 나타내는 Project 컬럼이 함께 표시됩니다.
로컬 서버용 사용자 지정 구성 파일
~/.clickhouse/configs/에 넣고 서버를 시작할 때 이름으로 적용하세요:
config.d를 통해). 따라서 변경하려는 설정만 포함하면 되며, 전체 구성을 다시 작성할 필요는 없습니다. 파일은 .xml, .yaml 또는 .yml 형식일 수 있으며, 확장자를 포함하거나 제외한 파일 이름으로 참조할 수 있습니다.
프로젝트 로컬 데이터 디렉터리
.clickhouse/에 저장됩니다:
clickhousectl local server remove <name>를 사용하십시오.
로컬 Postgres 실행
clickhousectl로 로컬 Postgres 인스턴스도 실행하고 관리할 수 있습니다. 로컬 Postgres는 Docker를 기반으로 하므로 Docker가 설치되어 있고 실행 중이어야 합니다. 각 인스턴스는 이름과 주 버전으로 식별되므로 여러 Postgres 버전을 각각 별도의 데이터 디렉터리로 나란히 실행할 수 있습니다.
인증
clickhousectl cloud auth signup를 실행하면 브라우저에서 가입 페이지가 열립니다.
API Key/Secret (권장)
.clickhouse/credentials.json(프로젝트 로컬)에 저장됩니다.
세션에서 export한 환경 변수도 사용할 수 있습니다:
.env 파일에 넣을 수 있습니다:
OAuth 로그인
.clickhouse/tokens.json에 저장됩니다(프로젝트 로컬).
OAuth 액세스는 현재 읽기 전용이며 속한 모든 조직에 대한 액세스를 제공합니다. 쓰기 액세스가 필요하거나 CLI의 범위를 단일 조직으로 제한하려면 대신 범위가 지정된 API Key를 생성하세요.
인증 상태 및 로그아웃
.clickhouse/credentials.json > export로 설정된 환경 변수 > .env 파일 > OAuth 토큰.
사용된 자격 증명 소스 디버깅
cloud 명령에 --debug를 전달하세요.
Cloud
조직
서비스
서비스 생성 옵션
| 옵션 | 설명 |
|---|---|
--name | 서비스 이름 (필수) |
--provider | 클라우드 제공업체: aws, gcp, azure (기본값: aws) |
--region | 리전 (기본값: us-east-1) |
--min-replica-memory-gb | 레플리카당 최소 메모리(GB) (8-356, 4의 배수) |
--max-replica-memory-gb | 레플리카당 최대 메모리(GB) (8-356, 4의 배수) |
--num-replicas | 레플리카 수 (1-20) |
--idle-scaling | 0까지 스케일링 허용 (기본값: true) |
--idle-timeout-minutes | 최소 유휴 timeout(분) (>= 5) |
--ip-allow | 허용할 IP CIDR (반복 지정 가능, 기본값: 0.0.0.0/0) |
--backup-id | 복원할 Backup ID |
--release-channel | 릴리스 채널: slow, default, fast |
--data-warehouse-id | 데이터 warehouse ID (읽기 레플리카용) |
--readonly | 서비스를 읽기 전용으로 설정 |
--encryption-key | 고객 디스크 암호화 키 |
--encryption-role | 디스크 암호화를 위한 Role ARN |
--enable-tde | Transparent Data Encryption 활성화 |
--compliance-type | 컴플라이언스: hipaa, pci |
--profile | 인스턴스 profile (enterprise) |
--tag | 일반 제공 서비스 tag 연결 (key 또는 key=value) |
--enable-endpoint / --disable-endpoint | 일반 제공 서비스 endpoints 토글(현재 mysql) |
--private-preview-terms-checked | 필요 시 비공개 프리뷰 약관 동의 |
--enable-core-dumps | 서비스 코어 dump 수집 활성화 또는 비활성화 |
Query API 인증 모드
cloud service query는 clickhouse 바이너리나 서비스 비밀번호 없이 HTTP를 통해 cloud service에 SQL을 실행하는 기본 방식입니다. 이 명령은 두 가지 자격 증명 모드를 모두 지원합니다.
- API Key 인증 (읽기 + 쓰기 SQL): 저장된 키가 없는 서비스에 대해
cloud service query를 처음 실행하면, 해당 서비스용 Query API 엔드포인트를 Provisioning하고 여기에 연결된 전용 API Key를 생성합니다. 이 키(keyId,keySecret,endpointId)는.clickhouse/credentials.json의service_query_keys.<service-id>아래에 저장됩니다. 이 키는 단일 서비스 범위로 제한되므로 해당 서비스에서는 읽기와 쓰기(SELECT, INSERT, DDL)가 가능하지만, 조직 내 다른 서비스에는 접근할 수 없습니다. Provisioning하지 않고 실패하게 하려면--no-auto-enable을 지정하십시오. - OAuth (
cloud auth login): 쿼리는 웹 SQL 콘솔과 마찬가지로 사용자 본인의 아이덴티티로 실행됩니다. OAuth를 사용할 때 서비스에 대한 SQL 권한은 읽기 전용입니다. Query API Key는 Provisioning되거나 저장되지 않습니다. 이 모드에서는--no-auto-enable이 적용되지 않습니다.
cloud service start를 실행하라는 안내와 함께 실패합니다. 파생된 Query API host를 재정의하려면 CLICKHOUSE_CLOUD_QUERY_HOST를 설정하십시오.
쿼리 엔드포인트 관리
Private Endpoint 관리
Backup 구성
Postgres 서비스
clickhousectl로도 위의 ClickHouse 서비스 명령과 동일하게 ClickHouse Cloud Postgres 서비스를 생성하고 관리할 수 있습니다.
Postgres 서비스 생성 옵션
| 옵션 | 설명 |
|---|---|
--name | 서비스 이름(필수) |
--region | 리전(예: us-east-1, 필수) |
--size | 인스턴스 크기(예: m7i.2xlarge, 필수) |
--provider | 클라우드 제공업체(기본값: aws) |
--pg-version | 주 버전: 18, 17 |
--ha-type | 고가용성: none, async, sync |
--tag | 리소스 태그 key 또는 key=value(반복 지정 가능) |
--pg-config-file | PgConfig 객체가 포함된 JSON 파일 경로 |
--pg-bouncer-config-file | PgBouncerConfig 객체가 포함된 JSON 파일 경로 |
백업
ClickPipes
ClickPipes 생성
clickpipe create에는 소스 유형별로 고유한 하위 명령이 있습니다:
clickhousectl cloud clickpipe create <source> --help 명령으로 확인하십시오.
구성원
초대
키
활동
JSON 출력
--json 플래그를 사용하세요.
clickhousectl은 코딩 에이전트 Context(Claude Code, Cursor, Codex, Gemini CLI, Goose, Devin, 및 표준 AGENT env var를 설정하는 모든 도구)를 자동으로 감지하고, --json을 설정하지 않아도 JSON을 stdout으로 자동 출력합니다.
종료 코드
gh CLI 관례를 따릅니다:
| 코드 | 의미 |
|---|---|
0 | 성공 |
1 | 오류 (아래에 분류되지 않은 모든 경우) |
2 | 취소됨 (사용자가 중단함) |
4 | 인증 필요 (자격 증명 없음, 401/403, OAuth 전용 쓰기 작업) |
Skills
비대화형 플래그
| 플래그 | 설명 |
|---|---|
--agent <name> | 특정 에이전트용 Skills를 설치합니다(여러 번 지정 가능) |
--global | 전역 범위를 사용합니다. 생략하면 프로젝트 범위를 사용합니다 |
--all | 지원되는 모든 에이전트용 Skills를 설치합니다 |
--detected-only | 시스템에서 감지된 지원 에이전트용 Skills를 설치합니다 |
자체 업데이트
clickhousectl 자체를 최신 릴리스로 업데이트할 수 있습니다: