clickhousectl) — это универсальный инструмент командной строки для управления ресурсами ClickHouse Cloud и локальной разработки на базе ClickHouse. Он также позволяет управлять сервисами ClickHouse Cloud Postgres и ClickPipes.
Эта страница представляет собой справочник по набору команд clickhousectl 0.4.2. Выполните clickhousectl --version, чтобы узнать установленную версию, и clickhousectl <command> --help для любой команды, чтобы получить полный список флагов.
Установка
chctl.
Чтобы обновить существующую установку до последней версии:
Управление Cloud
Войдите в ClickHouse Cloud и управляйте своими сервисами прямо из командной строки.Аутентификация
.clickhouse/credentials.json (локально в проекте, файл игнорируется git). Также можно использовать переменные окружения:
--api-key/--api-secret, учётные данные проекта в .clickhouse/credentials.json, переменные окружения (сначала shell, затем .env), токены OAuth, полученные через cloud auth login.
Токены OAuth работают только для чтения; команды записи (create, delete, start, stop, update, scale) требуют аутентификации по ключу API.
Сервисы
Выполнение запросов
Выполняйте SQL-запросы к сервису ClickHouse Cloud по HTTP через Query API — локальный бинарный файлclickhouse и пароль сервиса при этом не нужны. Необходимо указать ровно один из параметров --id или --name:
.clickhouse/credentials.json. Передайте --no-auto-enable, чтобы команда завершалась с ошибкой вместо создания ресурсов. При использовании OAuth SQL выполняется от имени вашего облачного пользователя с доступом только для чтения (только SELECT), и ничего не создаётся.
Что важно знать:
service queryвыполняет один оператор на запрос. SQL с несколькими операторами отклоняется Query API независимо от способа передачи —--query,--queries-fileили stdin — с сообщениемError: SQL error 62: Syntax error (Multi-statements are not allowed). Завершающая;у одиночного оператора допустима. Для скриптов выполнитеclickhousectl local use latestи подключайтесь к сервису черезclickhouse client.--queryи--queries-fileвзаимоисключающи (код выхода 2). Stdin читается только в том случае, если не указан ни один из них.--queryникогда не читает stdin, поэтому перенаправление или передача данных по конвейеру вместе с ним приводит к явной ошибке, а не молча превращается в no-op:Error: --query cannot be combined with SQL or data on stdin.Вместо этого отправляйтеINSERTвместе с его данными единым потоком —printf 'INSERT INTO t FORMAT CSV\n' | cat - data.csv | clickhousectl cloud service query --id <service-id>— либо считывайте оператор целиком из stdin с помощью--queries-file -.- Формат вывода по умолчанию —
PrettyCompactв терминале иTabSeparatedпри передаче по конвейеру.--jsonвыбираетJSONEachRowи не может использоваться вместе с--format(код выхода 2). - Сохранённый ключ Query API, который эндпоинт отклоняет с HTTP 401/403, никогда не заменяется автоматически; CLI читает управляющую запись ключа лишь для того, чтобы сообщить причину. Замените именно этот credential командой
clickhousectl cloud service repair-query-key <service-id>— она также удаляет заменённый ключ. На работающем сервисе она завершается с кодом 0 только после того, как пробный запрос с новым ключом выполнится успешно; результат отражается в полеverificationвывода--json. Если по истечении окна готовности Query API по-прежнему отклоняет ключ, команда завершается с кодом 1, но исправление остаётся в силе: не запускайте её повторно, а выполнитеcloud service query. - Query API завершается по тайм-ауту примерно через 30 секунд; оператор продолжает выполняться на сервисе, но результат теряется. Для более длительных операций выполните
clickhousectl local use latest, чтобы поместить стандартный бинарный файлclickhouseвPATH, и подключитесь с помощьюclickhouse client --host <host> --secure --port 9440 --user default --password <password>.
Конечные точки сервиса и конфигурация
--backup-start-time должен указывать ровно начало часа (HH:00); это проверяется в CLI до любого вызова API. Кроме того, период резервного копирования должен составлять 24 или 48 часов: передайте --backup-period-hours 24 или --backup-period-hours 48 в той же команде либо заранее сохраните одно из этих двух значений. При любом другом сохранённом периоде CLI откажет ещё до обращения к API, выдав Error: the stored backup period is 12 hours, but --backup-start-time requires 24 or 48.
--clear-backup-start-time удаляет сохранённое время начала и снимает это ограничение. Используйте его вместе с --backup-period-hours, чтобы одним вызовом сбросить время начала и задать любой период. Этот параметр конфликтует с --backup-start-time.
Резервные копии
clickhousectl cloud service create --name restored-service --backup-id <backup-id>.
ClickPipes
Управление ClickPipes для ингестии данных в сервис ClickHouse Cloud. Большинство команд принимают ID сервиса первым аргументом.clickpipe create postgresтребует указания одного из флагов:--table-mapping <schema.table:target_table>(можно указывать несколько раз, по одной таблице на флаг) или--table-mapping-json <json>; их можно сочетать. Форма JSON принимает объект сопоставления таблиц из API дословно и является единственным способом задатьexcludedColumns,sortingKeys,partitionByExpr,partitionKeyиtableEngine. Обратите внимание:partitionKeyразбивает начальный снимок на партиции для параллелизма и не имеет отношения кPARTITION BYцелевой таблицы, за который отвечаетpartitionByExpr. Флаг--iam-roleобязателен при--auth IAM_ROLEи отклоняется при базовой аутентификации, а--replication-slot-nameдопустим только вместе с--replication-mode cdc_only.- Настройки Postgres CDC применяются при создании пайпа:
--sync-interval-seconds,--pull-batch-size,--initial-load-parallelism,--snapshot-rows-per-partition,--snapshot-parallel-tables,--allow-nullable-columns,--enable-failover-slotsи--delete-on-merge. Впоследствии можно изменить только sync interval и pull batch size; настройки снимка и начальной загрузки изменению не подлежат. - Флаг
--role <role>в любой подкомандеclickpipe createможно указывать несколько раз; он определяет роль ClickHouse, выдаваемую пользователю пункта назначения пайпа. Эта роль заменяет ту, которую пользователь получил бы по умолчанию: без--roleпользователю назначаютсяclickpipes_systemиdefault_role, а с--role my_role—clickpipes_systemиmy_role. Роль должна позволять создавать таблицы в целевой базе данных — с ролью только для чтения создание завершится ошибкойNot enough privileges. Зарезервированные в API именаclickpipesиclickpipes_systemотклоняются. - Для источников Postgres TLS и проверка сертификата включены по умолчанию. Если цепочка сертификатов источника публично доверенная, файл CA не нужен; для частного или самоподписанного CA источника передайте его PEM-бандл через
--ca-certificate <path>. Для источника ClickHouse Cloud Postgres получите этот бандл командойclickhousectl cloud postgres certs get. При проверке имени хоста используется значение--host, если оно не переопределено флагом--tls-host <hostname>. - Для пайпов Kafka и Kinesis значение
--authвыводится из флагов учётных данных, если оно не указано; если флаги учётных данных не заданы, аутентификация не выполняется. - Команда
clickpipe settingsохватывает настройки ингестии только для потоковых пайпов (Kafka, Kinesis) и пайпов объектного хранилища, причём настройки, специфичные для Kafka, для остальных пайпов не выводятся. У пайпов CDC для баз данных (Postgres, MySQL, MongoDB, BigQuery) настроек ингестии нет:settings getдля такого пайпа завершается с кодом 1 и отсылает кclickhousectl cloud clickpipe get <service-id> <clickpipe-id>— именно там показываются их sync interval и pull batch size. - Пайп может использовать только обратную частную конечную точку, достигшую статуса
Ready; конечная точка AWS PrivateLink остаётся в состоянииPendingAcceptance, пока запрос на подключение не будет принят в аккаунте, которому принадлежит источник. Пайпы Kafka ссылаются на конечную точку по ID через--reverse-private-endpoint-id(можно указывать несколько раз); пайпы CDC для Postgres и MySQL передают одно из значенийdnsNamesконечной точки в--host. - Пайпы Google Cloud Pub/Sub доступны в режиме ограниченного предварительного доступа: прежде чем создавать такой пайп, обратитесь в службу поддержки, чтобы включить эту возможность для вашей организации. Флаг
--service-account-fileпринимает путь к JSON-ключу сервисного аккаунта GCP либо-для чтения ключа из stdin; сам ключ передать в строке нельзя, поэтому он не попадает в списки процессов и историю командной оболочки.
Postgres services (бета)
Создание сервисов ClickHouse Cloud Postgres и управление ими.- Значение
--providerпо умолчанию —aws; также принимаетсяgcpс размерами машин GCP, такими какc4-standard-4. Значение--sizeпроверяется на стороне Cloud API, а не CLI, поэтому неподдерживаемый размер будет отклонён только сервером. - Изменения ролей применяются не мгновенно, и API подтверждает
promoteиswitchoverещё до их фактического применения, поэтому код выхода 0 сам по себе не гарантирует, что роль изменилась. Обе команды принимают флаг--wait, который опрашивает состояние, пока целевой сервис не сообщит о новой роли; параметр--wait-timeout <seconds>(по умолчанию 300) ограничивает время опроса. Прежний основной сервис может ещё несколько минут сообщатьisPrimary=true, поэтому с помощьюclickhousectl cloud postgres list --filter isPrimary=trueубедитесь, что основным является ровно один сервис. postgres deleteработает в любом состоянии, включаяrunning, поэтому предварительно останавливать сервис не требуется.
Организации
Ключи API
Участники и приглашения
Журнал активности
Вывод JSON
Используйте флаг--json, чтобы получать ответы в формате JSON при выполнении любой облачной команды:
org prometheus и service prometheus — исключение: они всегда выводят необработанный текст экспозиции Prometheus и молча игнорируют --json.
Локальная разработка
CLI также управляет локальными установками ClickHouse, локальными серверами и локальными инстансами Postgres на базе Docker. Как начать работу с локальной разработкой, см. на странице clickhousectl (CLI).- Команды
localработают в пределах проекта: они используют каталог.clickhouseв текущем рабочем каталоге и никогда не ищут его в родительских каталогах. Перед их запуском перейдите в корень проекта. clickhousectl local useтакже создаёт символическую ссылку~/.local/bin/clickhouse, благодаря чему стандартные подкоманды, такие какclickhouse client,clickhouse benchmarkиclickhouse format, становятся доступны напрямую. Передайте--no-global, чтобы пропустить создание символической ссылки.local removeпринимает точную установленную версию. Команда откажется удалять версию, которую использует запущенный сервер в каком-либо проекте, а также версию, назначенную текущей по умолчанию;--forceостанавливает такие серверы и сбрасывает значение по умолчанию вместе с глобальной символической ссылкой.- Без указания имени
local server stopостанавливаетdefault, если он существует, иначе — единственный известный сервер; при наличии нескольких серверов, отличных отdefault, команда запросит имя.local server removeбез имени выбирает только существующийdefault— пользовательский сервер она никогда не угадывает. local clientпринимает-v/--versionдля выбора установленной версии клиента в режиме прямого указания хоста и порта, допускает повторение-qдля нескольких запросов и принимает несколько путей в--queries-file. Совмещение--queryи--queries-fileсчитается ошибкой использования.local postgres startблокирует выполнение до тех пор, пока PostgreSQL не начнёт принимать подключения, но не дольше числа секунд, заданного в--wait-timeout(по умолчанию 60, максимум 600). Если--portне указан, используется порт 5432 при условии, что он свободен, иначе порт выбирается автоматически; явно запрошенный порт, который уже занят, отклоняется.
Другие команды
Требования
- macOS (aarch64, x86_64) или Linux (aarch64, x86_64)
- Для команд Cloud нужен ключ API ClickHouse Cloud для доступа на запись; вход через OAuth даёт доступ только для чтения
clickhousectl local postgresтребует Docker