clickhousectl) es una herramienta de línea de comandos unificada para gestionar recursos de ClickHouse Cloud y trabajar con ClickHouse en entornos de desarrollo local. También permite gestionar servicios de ClickHouse Cloud Postgres y ClickPipes.
Esta página es una referencia del conjunto de comandos de clickhousectl 0.4.2. Ejecuta clickhousectl --version para comprobar la versión que tienes instalada, y clickhousectl <command> --help en cualquier comando para ver la lista completa de indicadores.
Instalación
chctl por comodidad.
Para actualizar una instalación existente a la última versión:
Administración de Cloud
Autentíquese con ClickHouse Cloud y administre sus servicios directamente desde la línea de comandos.Autenticación
.clickhouse/credentials.json (local del proyecto e ignorado por git). También puedes usar variables de entorno:
--api-key/--api-secret, credenciales del proyecto en .clickhouse/credentials.json, variables de entorno (shell y luego .env) y tokens OAuth de cloud auth login.
Los tokens OAuth son de solo lectura; los comandos de escritura (create, delete, start, stop, update, scale) requieren autenticación mediante API key.
Servicios
Ejecución de consultas
Ejecuta SQL contra un servicio de Cloud a través de HTTP mediante la Query API, sin necesidad del binarioclickhouse local ni de la contraseña del servicio. Se requiere exactamente uno de estos dos parámetros: --id o --name:
.clickhouse/credentials.json. Pase --no-auto-enable para que falle en lugar de aprovisionar. Con OAuth, el SQL se ejecuta como su usuario de la nube con acceso de solo lectura (únicamente SELECT), y no se aprovisiona nada.
Aspectos a tener en cuenta:
service queryejecuta una sola sentencia por solicitud. La Query API rechaza el SQL con múltiples sentencias, sin importar cómo llegue —--query,--queries-fileo stdin—, conError: SQL error 62: Syntax error (Multi-statements are not allowed). Un;al final de una única sentencia no supone problema. Para scripts, ejecuteclickhousectl local use latesty utiliceclickhouse clientcontra el servicio en su lugar.--queryy--queries-fileson mutuamente excluyentes (código de salida 2). Stdin solo se lee cuando no se indica ninguno de los dos.--querynunca lee stdin, por lo que redirigir o canalizar datos junto con él es un error grave y no un no-op silencioso:Error: --query cannot be combined with SQL or data on stdin.En su lugar, envíe unINSERTy sus datos como un único flujo —printf 'INSERT INTO t FORMAT CSV\n' | cat - data.csv | clickhousectl cloud service query --id <service-id>— o lea una sentencia completa desde stdin con--queries-file -.- El output format predeterminado es
PrettyCompacten un terminal yTabSeparatedcuando la salida se canaliza.--jsonseleccionaJSONEachRowy no puede combinarse con--format(código de salida 2). - Una API key de consulta almacenada que el endpoint rechaza con HTTP 401/403 nunca se reemplaza automáticamente; la CLI lee el registro de administración de la key solo para informar del motivo. Reemplace esa credencial concreta con
clickhousectl cloud service repair-query-key <service-id>, que además elimina la key reemplazada. En un servicio en ejecución, solo devuelve el código 0 cuando una consulta de prueba con la nueva key tiene éxito, lo que se informa bajoverificationen la salida de--json. Si la Query API sigue rechazando la key cuando finaliza la ventana de readiness, el comando sale con código 1, pero la reparación se mantiene: no lo vuelva a ejecutar; ejecutecloud service queryen su lugar. - La Query API expira tras unos 30 segundos; la sentencia continúa ejecutándose en el servicio, pero el resultado se pierde. Para operaciones más largas, ejecute
clickhousectl local use latestpara incorporar el binary estándarclickhousealPATHy conéctese conclickhouse client --host <host> --secure --port 9440 --user default --password <password>en su lugar.
Endpoints y configuración del servicio
--backup-start-time debe corresponder exactamente a una hora en punto (HH:00) y la CLI lo valida antes de realizar cualquier llamada a la API. Además, requiere que el período de copia de seguridad sea de 24 o 48 horas: pase --backup-period-hours 24 o --backup-period-hours 48 en el mismo comando, o tenga ya almacenado uno de esos dos valores. Con cualquier otro período almacenado, la CLI rechaza la operación antes de llamar a la API, con Error: the stored backup period is 12 hours, but --backup-start-time requires 24 or 48.
--clear-backup-start-time elimina la hora de inicio almacenada y suprime esa restricción. Combínelo con --backup-period-hours para borrar la hora de inicio y establecer cualquier período en una sola llamada. Entra en conflicto con --backup-start-time.
Copias de seguridad
clickhousectl cloud service create --name restored-service --backup-id <backup-id>.
ClickPipes
Administra los ClickPipes para ingestar datos en un servicio de Cloud. La mayoría de los comandos reciben el ID del servicio como primer argumento.clickpipe create postgresrequiere uno de estos:--table-mapping <schema.table:target_table>(repetible, una tabla por indicador) o--table-mapping-json <json>; ambos pueden combinarse. La forma JSON toma literalmente el objeto de correspondencia de tablas de la API y es la única manera de establecerexcludedColumns,sortingKeys,partitionByExpr,partitionKeyytableEngine. Tenga en cuenta quepartitionKeyparticiona el snapshot inicial para lograr paralelismo y no guarda relación con elPARTITION BYde la tabla de destino, que corresponde apartitionByExpr.--iam-rolees obligatorio con--auth IAM_ROLEy se rechaza con autenticación básica, y--replication-slot-namesolo es válido con--replication-mode cdc_only.- Los ajustes de CDC de Postgres se aplican al crear el pipe:
--sync-interval-seconds,--pull-batch-size,--initial-load-parallelism,--snapshot-rows-per-partition,--snapshot-parallel-tables,--allow-nullable-columns,--enable-failover-slotsy--delete-on-merge. Solo el sync interval y el pull batch size pueden modificarse después; los ajustes de snapshot y de carga inicial, no. --role <role>en cualquier subcomandoclickpipe createes repetible y determina el rol de ClickHouse que se concede al usuario de destino del pipe. Sustituye al rol que ese usuario recibiría de otro modo: sin--role, el usuario tieneclickpipes_systemydefault_role; con--role my_role, tieneclickpipes_systemymy_role. El rol debe poder crear tablas en la base de datos de destino: con un rol de solo lectura, la creación falla conNot enough privileges. Los nombresclickpipesyclickpipes_system, reservados por la API, se rechazan.- TLS y la verificación de certificados están activados de forma predeterminada para las fuentes Postgres. Una cadena de confianza pública en la fuente no requiere archivo de CA; para una CA de fuente privada o autofirmada, indique su paquete PEM con
--ca-certificate <path>. Para una fuente ClickHouse Cloud Postgres, obtenga ese paquete conclickhousectl cloud postgres certs get. La verificación del hostname utiliza--host, salvo que--tls-host <hostname>lo anule. - En los pipes de Kafka y Kinesis,
--authse infiere de los indicadores de credenciales cuando se omite, y no se envía ninguna autenticación si no se proporciona ningún indicador de credencial. clickpipe settingsabarca únicamente los ajustes de ingestión de los pipes de streaming (Kafka, Kinesis) y de almacenamiento de objetos, y los ajustes exclusivos de Kafka se omiten en los pipes que no son de Kafka. Los pipes de CDC de bases de datos (Postgres, MySQL, MongoDB, BigQuery) no tienen ajustes de ingestión:settings getsobre uno de ellos finaliza con código 1 y remite aclickhousectl cloud clickpipe get <service-id> <clickpipe-id>, que es donde se informan su sync interval y su pull batch size.- Un pipe solo puede usar un reverse private endpoint que haya alcanzado el estado
Ready; un endpoint de AWS PrivateLink permanece enPendingAcceptancehasta que se acepte la solicitud de conexión en la cuenta propietaria de la fuente. Los pipes de Kafka referencian el endpoint por ID con--reverse-private-endpoint-id(repetible); los pipes de CDC de Postgres y MySQL pasan uno de losdnsNamesdel endpoint como--host. - Los pipes de Google Cloud Pub/Sub están en vista previa limitada: contacte con soporte para habilitar la funcionalidad en su organización antes de crear uno.
--service-account-filetoma la ruta a una clave JSON de service account de GCP, o-para leer la clave desde stdin; la clave nunca se acepta en línea, de modo que no aparece en los listados de procesos ni en el historial del intérprete de comandos.
Servicios Postgres (beta)
Cree y administre servicios de ClickHouse Cloud Postgres.--providertoma por defecto el valoraws; también se aceptagcp, con tamaños de máquina de GCP comoc4-standard-4.--sizelo valida la Cloud API y no la CLI, por lo que un tamaño no admitido solo se rechaza en el servidor.- Los cambios de rol presentan consistencia eventual y la API confirma
promoteyswitchoverantes de aplicarlos, de modo que un código de salida 0 por sí solo no garantiza que el rol haya cambiado. Ambos aceptan--waitpara sondear hasta que el destino informe el nuevo rol, y--wait-timeout <seconds>(300 por defecto) limita la duración del sondeo. El primary anterior puede seguir informandoisPrimary=truedurante varios minutos, así que compruebe conclickhousectl cloud postgres list --filter isPrimary=trueque solo un servicio sea primary. postgres deletefunciona desde cualquier estado, incluidorunning, por lo que no es necesario detener antes el servicio.
Organizaciones
API keys
Miembros e invitaciones
Registro de actividad
Salida JSON
Usa el indicador--json para obtener respuestas en formato JSON de cualquier comando de la nube:
org prometheus y service prometheus son la excepción: siempre emiten texto de exposición de Prometheus sin procesar e ignoran --json de forma silenciosa.
Desarrollo local
La CLI también gestiona instalaciones locales de ClickHouse, servidores locales e instancias locales de Postgres basadas en Docker. Consulte la página clickhousectl (CLI) para empezar a trabajar con el desarrollo local.- Los comandos
localtienen alcance de proyecto: usan el directorio.clickhousedel directorio de trabajo actual exacto y nunca buscan en directorios superiores. Sitúese en la raíz del proyecto antes de ejecutarlos. clickhousectl local usetambién crea un enlace simbólico a~/.local/bin/clickhouse, lo que hace que los subcomandos estándar comoclickhouse client,clickhouse benchmarkyclickhouse formatqueden disponibles directamente. Pase--no-globalpara omitir el enlace simbólico.local removerequiere una versión instalada exacta. Se niega a eliminar una versión que esté en uso por un servidor en ejecución en cualquier proyecto, o que sea la predeterminada actual;--forcedetiene esos servidores y borra tanto la predeterminada como el enlace simbólico global.- Sin nombre,
local server stopdetienedefaultsi existe y, en caso contrario, el único servidor conocido; si hay varios servidores no predeterminados, solicita un nombre.local server removesin nombre solo selecciona undefaultexistente: nunca deduce un servidor personalizado. local clientacepta-v/--versionpara elegir una versión de cliente instalada en modo directo de host/puerto, admite-qrepetido para varias consultas y acepta varias rutas en--queries-file. Combinar--queryy--queries-filees un error de uso.local postgres startse bloquea hasta que PostgreSQL acepta conexiones, con un límite de--wait-timeoutsegundos (60 de forma predeterminada, 600 como máximo). Si se omite--port, usa el 5432 si está libre y, en caso contrario, selecciona un puerto automáticamente; si el puerto solicitado explícitamente ya está ocupado, se rechaza.
Otros comandos
Requisitos
- macOS (aarch64, x86_64) o Linux (aarch64, x86_64)
- Los comandos de Cloud requieren una API key de ClickHouse Cloud para el acceso de escritura; el inicio de sesión con OAuth es de solo lectura
clickhousectl local postgresrequiere Docker