clickhousectl — это CLI для ClickHouse: локального и Cloud.
С помощью clickhousectl вы можете:
- Устанавливать локальные версии ClickHouse и управлять ими
- Запускать локальные серверы ClickHouse и управлять ими
- Запускать локальные экземпляры Postgres и управлять ими
- Выполнять запросы к серверам ClickHouse
- Настраивать ClickHouse Cloud и создавать кластеры ClickHouse под управлением Cloud
- Создавать сервисы Postgres в ClickHouse Cloud и управлять ими
- Управлять ресурсами ClickHouse Cloud
- Создавать ClickPipes для ингестии данных (S3, Kafka, Kinesis, Postgres, MySQL, MongoDB, BigQuery) и управлять ими
- Устанавливать официальные навыки агентов ClickHouse в поддерживаемые агенты для программирования
- Переносить локальную разработку на ClickHouse в облако
clickhousectl помогает людям и AI-агентам разрабатывать решения на ClickHouse.
Установка
Быстрая установка
~/.local/bin/clickhousectl. Для удобства также автоматически создаётся алиас chctl.
Требования
- macOS (aarch64, x86_64) или Linux (aarch64, x86_64)
- Для выполнения команд Cloud требуется API-ключ ClickHouse Cloud
Локально
Установка и управление версиями ClickHouse
clickhousectl загружает бинарные файлы ClickHouse с builds.clickhouse.com, а если нужная сборка там недоступна — с packages.clickhouse.com (Linux) или из GitHub releases (macOS).
local use также создаёт символическую ссылку ~/.local/bin/clickhouse, указывающую на бинарный файл выбранной версии, чтобы обычная команда clickhouse (например, clickhouse local, clickhouse client) была доступна в PATH. Чтобы пропустить это, передайте --no-global. Если по этому пути уже существует обычный файл, он будет оставлен без изменений, а вы получите предупреждение. local remove для активной версии по умолчанию также удаляет символическую ссылку.
Хранение бинарных файлов ClickHouse
~/.clickhouse/:
Инициализация проекта
init создает в текущем рабочем каталоге стандартную структуру папок для файлов вашего проекта ClickHouse и Postgres. Это необязательно: при желании вы можете использовать собственную структуру папок.
Будет создана следующая структура:
Выполнение запросов
Создание и управление серверами ClickHouse
.clickhouse/servers/<name>/data/.
--name первый сервер получает имя “default”. Если “default” уже запущен, автоматически генерируется случайное имя (например, “bold-crane”). Используйте --name, чтобы задать постоянные идентификаторы, с которыми серверы можно многократно запускать и останавливать.
Порты: По умолчанию используются порты HTTP 8123 и TCP 9000. Если они уже заняты, свободные порты назначаются автоматически и отображаются в выводе. Используйте --http-port и --tcp-port, чтобы явно задать порты.
Глобальное управление серверами: Используйте --global с list, stop и stop-all, чтобы выполнять операции во всех проектах в масштабе всей системы. server list --global показывает все запущенные серверы ClickHouse со столбцом Project, который указывает, к какому каталогу относится каждый сервер.
Пользовательские файлы конфигурации для локальных серверов
~/.clickhouse/configs/ и укажите его имя при запуске сервера:
config.d), поэтому он должен содержать только те настройки, которые вы хотите изменить, и нет необходимости дублировать весь config. Файлы могут иметь расширение .xml, .yaml или .yml, и на них можно ссылаться по имени как с расширением, так и без него.
Локальный каталог данных проекта
.clickhouse/ в каталоге проекта:
clickhousectl local server remove <name>, чтобы навсегда удалить данные сервера.
Запуск локального Postgres
clickhousectl может запускать локальные экземпляры Postgres и управлять ими. Локальный Postgres работает на базе Docker, поэтому Docker должен быть установлен и запущен. Каждый экземпляр определяется по имени и основной версии, поэтому несколько версий Postgres могут работать параллельно, используя отдельные каталоги данных.
Аутентификация
clickhousectl cloud auth signup откроет страницу регистрации в вашем браузере.
API-ключ/секрет (рекомендуется)
.clickhouse/credentials.json (в каталоге проекта).
Вы также можете использовать переменные окружения, экспортированные в текущем сеансе:
.env в текущем рабочем каталоге:
Вход через OAuth
.clickhouse/tokens.json (локально для проекта).
В настоящее время доступ через OAuth доступен только для чтения и предоставляет доступ ко всем организациям, в которые вы входите. Чтобы получить доступ на запись или ограничить CLI одной организацией, вместо этого создайте API-ключ с ограниченной областью действия.
Статус авторизации и выход
.clickhouse/credentials.json > экспортированные переменные окружения > файл .env > токены OAuth.
Отладка: какой источник учётных данных использовался
--debug любой команде cloud, чтобы перед её выполнением вывести в stderr, какой источник учётных данных был определён (а также URL API).
Cloud
Организации
Сервисы
Параметры создания сервиса
| Параметр | Описание |
|---|---|
--name | Service name (обязательно) |
--provider | Облачный провайдер: aws, gcp, azure (по умолчанию: aws) |
--region | Регион (по умолчанию: us-east-1) |
--min-replica-memory-gb | Минимальный объём памяти на реплику в ГБ (8–356, кратно 4) |
--max-replica-memory-gb | Максимальный объём памяти на реплику в ГБ (8–356, кратно 4) |
--num-replicas | Количество реплик (1–20) |
--idle-scaling | Разрешить масштабирование до нуля (по умолчанию: true) |
--idle-timeout-minutes | Минимальный тайм-аут бездействия в минутах (>= 5) |
--ip-allow | IP CIDR, которому разрешён доступ (можно указывать несколько раз; по умолчанию: 0.0.0.0/0) |
--backup-id | ID резервной копии для восстановления |
--release-channel | Канал релизов: slow, default, fast |
--data-warehouse-id | ID хранилища данных (для реплик для чтения) |
--readonly | Сделать сервис только для чтения |
--encryption-key | Ключ шифрования диска, предоставленный клиентом |
--encryption-role | ARN роли для шифрования диска |
--enable-tde | Включить прозрачное шифрование данных |
--compliance-type | Требования соответствия: hipaa, pci |
--profile | Профиль экземпляра (enterprise) |
--tag | Добавить GA-тег сервиса (key или key=value) |
--enable-endpoint / --disable-endpoint | Включить или отключить конечные точки GA-сервиса (сейчас mysql) |
--private-preview-terms-checked | Принять условия закрытой предварительной версии, если требуется |
--enable-core-dumps | Включить или отключить сбор дампов памяти сервиса |
Режимы аутентификации Query API
cloud service query — основной способ выполнять SQL-запросы к облачному сервису по HTTP без использования бинарного файла clickhouse и без пароля сервиса. Он поддерживает оба режима учетных данных:
- Аутентификация по ключу API (чтение и запись SQL): при первом запуске
cloud service queryдля сервиса, у которого нет сохраненного ключа, команда подготавливает для этого сервиса конечную точку Query API и создает отдельный ключ API, привязанный к ней. Ключ (keyId,keySecretиendpointId) сохраняется в.clickhouse/credentials.jsonв разделеservice_query_keys.<service-id>. Область действия ключа ограничена одним сервисом, поэтому он может читать и записывать данные (SELECT, INSERT, DDL) в этом сервисе, но не может обращаться к другим сервисам в организации. Передайте--no-auto-enable, чтобы команда завершалась ошибкой вместо автоматической подготовки. - OAuth (
cloud auth login): запрос выполняется от имени вашей учетной записи, как и в веб-консоли SQL. При использовании OAuth у вас есть только только для чтения SQL-разрешения для сервиса. Ключ Query API не создается и не сохраняется. В этом режиме--no-auto-enableне действует.
cloud service start. Задайте CLICKHOUSE_CLOUD_QUERY_HOST, чтобы переопределить вычисленный хост Query API.
Управление эндпоинтами запросов
Управление частной конечной точкой
Настройка резервного копирования
Сервисы Postgres
clickhousectl также позволяет создавать сервисы ClickHouse Cloud Postgres и управлять ими по аналогии с командами для сервиса ClickHouse, приведёнными выше.
Параметры создания сервиса Postgres
| Параметр | Описание |
|---|---|
--name | Service 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 | Путь к JSON‑файлу с объектом PgConfig |
--pg-bouncer-config-file | Путь к JSON‑файлу с объектом PgBouncerConfig |
Резервные копии
ClickPipes
Создание ClickPipes
clickpipe create:
clickhousectl cloud clickpipe create <source> --help, чтобы увидеть полный список параметров для каждого типа источника.
Участники
Приглашения
Ключи
Активность
Вывод в формате JSON
--json, чтобы выводить ответы в формате JSON.
clickhousectl автоматически определяет контексты ИИ-ассистентов для программирования (Claude Code, Cursor, Codex, Gemini CLI, Goose, Devin и любые инструменты, которые задают стандартную переменную окружения AGENT) и автоматически выводит JSON в stdout без указания --json.
Коды выхода
gh:
| Code | Meaning |
|---|---|
0 | Успешное выполнение |
1 | Ошибка (всё, что не относится к категориям ниже) |
2 | Отменено (пользователь прервал выполнение) |
4 | Требуется аутентификация (нет учетных данных, 401/403, запись только через OAuth) |
Навыки
Флаги неинтерактивного режима
| Флаг | Описание |
|---|---|
--agent <name> | Установить навыки для конкретного агента (можно указывать несколько раз) |
--global | Использовать глобальную область; если флаг не указан, используется область проекта |
--all | Установить навыки для всех поддерживаемых агентов |
--detected-only | Установить навыки для поддерживаемых агентов, обнаруженных в системе |
Самообновление
clickhousectl может самостоятельно обновиться до последнего релиза: