clickhousectl) é uma ferramenta unificada de linha de comando para gerenciar recursos do ClickHouse Cloud e ambientes locais de desenvolvimento com ClickHouse. Ele também permite gerenciar os serviços do ClickHouse Cloud Postgres e os ClickPipes.
Esta página é uma referência do conjunto de comandos do clickhousectl 0.4.2. Execute clickhousectl --version para verificar a versão instalada e clickhousectl <command> --help em qualquer comando para ver a lista completa de flags.
Instalação
chctl também é criado automaticamente para facilitar.
Para atualizar uma instalação existente para a versão mais recente:
Gerenciamento da Cloud
Autentique-se no ClickHouse Cloud e gerencie seus serviços diretamente via linha de comando.Autenticação
.clickhouse/credentials.json (local ao projeto, ignorado pelo git). Você também pode usar variáveis de ambiente:
--api-key/--api-secret, credenciais do projeto em .clickhouse/credentials.json, variáveis de ambiente (shell e, em seguida, .env), tokens OAuth obtidos com cloud auth login.
Os tokens OAuth são somente leitura; comandos de escrita (create, delete, start, stop, update, scale) exigem autenticação por chave de API.
Serviços
Executando consultas
Execute SQL em um serviço Cloud via HTTP através da Query API — sem necessidade de um binárioclickhouse local ou da senha do serviço. É obrigatório informar exatamente um entre --id e --name:
.clickhouse/credentials.json. Passe --no-auto-enable para falhar em vez de provisionar. Com OAuth, o SQL é executado com seu usuário do cloud com acesso somente leitura (apenas SELECT), e nada é provisionado.
O que você precisa saber:
service queryexecuta uma única instrução por requisição. SQL com múltiplas instruções é rejeitado pela Query API, independentemente de como chega —--query,--queries-fileou stdin — comError: SQL error 62: Syntax error (Multi-statements are not allowed). Um;no final de uma única instrução não é problema. Para scripts, executeclickhousectl local use lateste use oclickhouse clientcontra o service.--querye--queries-filesão mutuamente exclusivos (código de saída 2). O stdin só é lido quando nenhum dos dois é informado.--querynunca lê o stdin, portanto redirecionar ou enviar dados por pipe junto com ele é um erro grave, e não um no-op silencioso:Error: --query cannot be combined with SQL or data on stdin.Em vez disso, envie umINSERTe seus dados como um único stream —printf 'INSERT INTO t FORMAT CSV\n' | cat - data.csv | clickhousectl cloud service query --id <service-id>— ou leia uma instrução inteira do stdin com--queries-file -.- O output format padrão é
PrettyCompactem um terminal eTabSeparatedquando há pipe.--jsonselecionaJSONEachRowe não pode ser combinado com--format(código de saída 2). - Uma chave de API da Query API armazenada que o endpoint rejeita com HTTP 401/403 nunca é substituída automaticamente; a CLI lê o registro de gerenciamento da chave de API apenas para informar o motivo. Substitua essa credencial específica com
clickhousectl cloud service repair-query-key <service-id>, que também exclui a chave de API substituída. Em um service em execução, o comando sai com 0 apenas quando uma consulta de teste com a nova chave de API é bem-sucedida, o que é reportado emverificationna saída--json. Se a Query API ainda rejeitar a chave de API quando a janela de readiness terminar, o comando sai com 1, mas o reparo continua válido: não execute o comando novamente; executecloud service queryno lugar. - A Query API expira após cerca de 30 segundos; a instrução continua sendo executada no service, mas o resultado é perdido. Para algo mais demorado, execute
clickhousectl local use latestpara colocar oclickhousebinary padrão noPATHe conecte-se comclickhouse client --host <host> --secure --port 9440 --user default --password <password>.
Endpoints e configuração do service
--backup-start-time deve ser exatamente na hora cheia (HH:00) e é validado pela CLI antes de qualquer chamada de API. Ele também exige que o período de backup seja de 24 ou 48 horas: passe --backup-period-hours 24 ou --backup-period-hours 48 no mesmo comando, ou tenha um desses dois valores já armazenado. Com qualquer outro período armazenado, a CLI recusa a operação antes de chamar a API, exibindo Error: the stored backup period is 12 hours, but --backup-start-time requires 24 or 48.
--clear-backup-start-time remove o horário de início armazenado e suspende essa restrição. Combine-o com --backup-period-hours para limpar o horário de início e definir qualquer período em uma única chamada. Ele conflita com --backup-start-time.
Backups
clickhousectl cloud service create --name restored-service --backup-id <backup-id>.
ClickPipes
Gerencie os ClickPipes para ingestão de dados em um serviço do Cloud. A maioria dos comandos recebe o ID do serviço como primeiro argumento.clickpipe create postgresexige--table-mapping <schema.table:target_table>(repetível, uma tabela por flag) ou--table-mapping-json <json>; os dois podem ser combinados. A forma JSON recebe o objeto de mapeamento de tabelas da API literalmente e é a única maneira de definirexcludedColumns,sortingKeys,partitionByExpr,partitionKeyetableEngine. Observe quepartitionKeyparticiona o snapshot inicial para fins de paralelismo e não tem relação com oPARTITION BYda destination table, que corresponde apartitionByExpr.--iam-roleé obrigatório com--auth IAM_ROLEe rejeitado com autenticação básica, e--replication-slot-namesó é válido com--replication-mode cdc_only.- As configurações de CDC do Postgres são aplicadas no momento da criação do pipe:
--sync-interval-seconds,--pull-batch-size,--initial-load-parallelism,--snapshot-rows-per-partition,--snapshot-parallel-tables,--allow-nullable-columns,--enable-failover-slotse--delete-on-merge. Somente o sync interval e o pull batch size podem ser alterados depois; as configurações de snapshot e de carga inicial, não. --role <role>em qualquer subcomandoclickpipe createé repetível e define a role do ClickHouse concedida ao usuário de destino do pipe. Ela substitui a role que esse usuário receberia por padrão: sem--role, o usuário possuiclickpipes_systemedefault_role; com--role my_role, possuiclickpipes_systememy_role. A role precisa ser capaz de criar tabelas na destination database — uma role somente leitura faz a criação falhar comNot enough privileges. Os nomesclickpipeseclickpipes_system, reservados pela API, são rejeitados.- TLS e verificação de certificados vêm ativados por padrão para sources Postgres. Uma cadeia de origem publicamente confiável dispensa arquivo de CA; para uma CA de origem privada ou autoassinada, informe seu pacote PEM com
--ca-certificate <path>. Para uma source ClickHouse Cloud Postgres, obtenha esse pacote comclickhousectl cloud postgres certs get. A verificação de hostname usa--host, a menos que--tls-host <hostname>a sobrescreva. - Para pipes Kafka e Kinesis,
--authé inferido a partir das flags de credencial quando omitido, e nenhuma autenticação é enviada se nenhuma flag de credencial for fornecida. clickpipe settingsabrange apenas as configurações de ingestão de pipes de streaming (Kafka, Kinesis) e de armazenamento de objetos, e as configurações exclusivas do Kafka são omitidas para pipes que não sejam Kafka. Pipes de CDC de banco de dados (Postgres, MySQL, MongoDB, BigQuery) não têm configurações de ingestão:settings getem um deles sai com código 1 e aponta paraclickhousectl cloud clickpipe get <service-id> <clickpipe-id>, que é onde o sync interval e o pull batch size deles são exibidos.- Um pipe só pode usar um reverse private endpoint que tenha atingido o status
Ready; um endpoint AWS PrivateLink permanece emPendingAcceptanceaté que a solicitação de conexão seja aceita na conta proprietária da source. Pipes Kafka referenciam o endpoint pelo ID com--reverse-private-endpoint-id(repetível); pipes de CDC Postgres e MySQL passam um dosdnsNamesdo endpoint como--host. - Pipes do Google Cloud Pub/Sub estão em preview limitado: contate o suporte para habilitar o recurso na sua organização antes de criar um.
--service-account-filerecebe o caminho para uma chave JSON de service account do GCP, ou-para ler a chave do stdin; a chave nunca é aceita inline, portanto não aparece em listagens de processos nem no histórico do shell.
Postgres services (beta)
Crie e gerencie serviços do ClickHouse Cloud Postgres.--providerusaawscomo padrão;gcptambém é aceito, com tamanhos de máquina do GCP comoc4-standard-4.--sizeé validado pela Cloud API, e não pela CLI, portanto um tamanho sem suporte só é rejeitado no servidor.- Alterações de role são eventualmente consistentes, e a API confirma
promoteeswitchoverantes de aplicá-los, de modo que o código de saída 0, isoladamente, não garante que a role foi alterada. Ambos aceitam--waitpara consultar periodicamente até que o target reporte a nova role, com--wait-timeout <seconds>(padrão 300) limitando esse polling. O primary anterior pode continuar reportandoisPrimary=truepor alguns minutos, portanto confirme comclickhousectl cloud postgres list --filter isPrimary=trueque exatamente um service é primary. postgres deletefunciona a partir de qualquer state, inclusiverunning, ou seja, não é necessário parar o service antes.
Organizações
Chaves de API
Membros e convites
Log de atividades
Saída em JSON
Use a opção--json para obter respostas em formato JSON de qualquer comando de cloud:
org prometheus e service prometheus são a exceção: eles sempre emitem o texto bruto de exposição do Prometheus e ignoram silenciosamente --json.
Desenvolvimento local
A CLI também gerencia instalações locais do ClickHouse, servidores locais e instâncias locais do Postgres em Docker. Consulte a página clickhousectl (CLI) para começar a trabalhar com desenvolvimento local.- Os comandos
localtêm escopo de projeto: eles usam o diretório.clickhousedentro do diretório de trabalho atual exato e nunca procuram em diretórios pai. Vá para a raiz do projeto antes de executá-los. - O
clickhousectl local usetambém cria um link simbólico em~/.local/bin/clickhouse, o que disponibiliza diretamente os subcomandos padrão, comoclickhouse client,clickhouse benchmarkeclickhouse format. Passe--no-globalpara pular o link simbólico. - O
local removeexige uma versão instalada exata. Ele se recusa a remover uma versão usada por um servidor em execução em qualquer projeto, ou que seja o padrão atual;--forceinterrompe esses servidores e limpa o padrão e o link simbólico global. - Sem um nome, o
local server stopinterrompe odefault, se existir, e, caso contrário, o único servidor conhecido; havendo vários servidores diferentes do padrão, ele solicita um nome. Olocal server removesem nome só seleciona umdefaultexistente — ele nunca adivinha um servidor personalizado. - O
local clientaceita-v/--versionpara escolher uma versão de cliente instalada no modo direto de host/porta, aceita-qrepetido para múltiplas consultas e aceita vários caminhos em--queries-file. Combinar--querye--queries-fileé um erro de uso. - O
local postgres startbloqueia até que o PostgreSQL aceite conexões, limitado pelos segundos definidos em--wait-timeout(padrão 60, máximo 600). Se--portfor omitido, ele usa a 5432 caso esteja livre e, caso contrário, seleciona uma porta automaticamente; uma porta solicitada explicitamente que já esteja ocupada é rejeitada.
Outros comandos
Requisitos
- macOS (aarch64, x86_64) ou Linux (aarch64, x86_64)
- Os comandos do Cloud exigem uma chave de API do ClickHouse Cloud para acesso de escrita; o login por OAuth é somente leitura
clickhousectl local postgresrequer Docker