Los perfiles de configuración y los archivos de configuración basados en XML no son compatibles con ClickHouse Cloud. Por lo tanto, en ClickHouse Cloud no encontrarás un archivo
config.xml. En su lugar, debes usar comandos SQL para gestionar la configuración mediante perfiles de configuración.Para obtener más detalles, consulta “Configuring Settings”/etc/clickhouse-server/config.xml como archivo de configuración predeterminado, pero también es posible especificar manualmente la ubicación del archivo de configuración al iniciar el servidor mediante la opción de línea de comandos --config-file o -C.
Se pueden colocar archivos de configuración adicionales en el directorio config.d/, relativo al archivo de configuración principal; por ejemplo, en el directorio /etc/clickhouse-server/config.d/.
Los archivos de este directorio y la configuración principal se fusionan en una etapa de preprocesamiento antes de que la configuración se aplique en ClickHouse server.
Los archivos de configuración se fusionan en orden alfabético.
Para simplificar las actualizaciones y mejorar la modularidad, se recomienda mantener el archivo config.xml predeterminado sin modificar y colocar la personalización adicional en config.d/.
La configuración de ClickHouse Keeper se encuentra en /etc/clickhouse-keeper/keeper_config.xml.
Del mismo modo, los archivos de configuración adicionales de Keeper deben colocarse en /etc/clickhouse-keeper/keeper_config.d/.
Es posible mezclar archivos de configuración XML y YAML; por ejemplo, podrías tener un archivo de configuración principal config.xml y archivos de configuración adicionales config.d/network.xml, config.d/timezone.yaml y config.d/keeper.yaml.
No se admite mezclar XML y YAML dentro de un mismo archivo de configuración.
Los archivos de configuración XML deben usar <clickhouse>...</clickhouse> como etiqueta de nivel superior.
En los archivos de configuración YAML, clickhouse: es opcional; si no está presente, el analizador lo inserta automáticamente.
Combinación de archivos de configuración
config.d/) se combinan de la siguiente manera:
- Si un nodo (es decir, una ruta que conduce a un elemento) aparece en ambos archivos y no tiene los atributos
replaceoremove, se incluye en el archivo de configuración combinado, y los elementos secundarios de ambos nodos se incluyen y se combinan recursivamente. - Si uno de los dos nodos contiene el atributo
replace, se incluye en el archivo de configuración combinado, pero solo se incluyen los elementos secundarios del nodo con el atributoreplace. - Si uno de los dos nodos contiene el atributo
remove, el nodo no se incluye en el archivo de configuración combinado (si ya existe, se elimina).
config.xml
config.d/other_config.xml
Sustitución por variables de entorno y nodos de ZooKeeper
from_env.
Por ejemplo, con la variable de entorno $MAX_QUERY_SIZE = 150000:
from_zk (nodo de ZooKeeper):
Valores predeterminados
from_env o from_zk también puede tener el atributo replace="1" (este último debe aparecer antes de from_env/from_zk).
En este caso, el elemento puede definir un valor predeterminado.
El elemento toma el valor de la variable de entorno o del nodo de ZooKeeper si está definido; de lo contrario, toma el valor predeterminado.
Se repite el ejemplo anterior, pero suponiendo que MAX_QUERY_SIZE no está definido:
Sustitución con contenido de archivos
- Sustitución de valores: Si un elemento tiene el atributo
incl, su valor se reemplazará por el contenido del archivo al que hace referencia. De forma predeterminada, la ruta al archivo con las sustituciones es/etc/metrika.xml. Esto puede cambiarse en el elementoinclude_fromde la configuración del servidor. Los valores de sustitución se especifican en elementos/clickhouse/substitution_namedentro de este archivo. Si una sustitución especificada eninclno existe, se registra en el log. Para evitar que ClickHouse registre sustituciones ausentes, especifique el atributooptional="true"(por ejemplo, para la configuración de macros). - Sustitución de elementos: Si desea reemplazar el elemento completo por una sustitución, use
includecomo nombre del elemento. El nombre de elementoincludepuede combinarse con el atributofrom_zk = "/path/to/node". En este caso, el valor del elemento se reemplaza por el contenido del nodo de ZooKeeper en/path/to/node. Esto también funciona si almacena un subárbol XML completo como un nodo de ZooKeeper; se insertará íntegramente en el elemento de origen.
merge="true". Por ejemplo: <include from_zk="/some_path" merge="true">. En este caso, la configuración existente se fusionará con el contenido de la sustitución y los valores de configuración existentes se reemplazarán por los de la sustitución.
Cifrado y ocultación de la configuración
encrypted_by, con el nombre del codec de cifrado como valor.
A diferencia de los atributos from_zk, from_env e incl, o del elemento include, en el archivo preprocesado no se realiza ninguna sustitución (es decir, el descifrado del valor cifrado).
El descifrado solo se produce en tiempo de ejecución, dentro del proceso del servidor.
Por ejemplo:
from_env y from_zk también se pueden aplicar a encryption_codecs:
config.xml:
users.xml:
encrypt_decrypt:
hide_in_preprocessed.
Por ejemplo:
Configuración de usuarios
config.xml puede especificar una configuración independiente con ajustes de usuario, perfiles y cuotas. La ruta relativa a esta configuración se establece en el elemento users_config. De forma predeterminada, es users.xml. Si se omite users_config, los ajustes de usuario, los perfiles y las cuotas se especifican directamente en config.xml.
La configuración de usuarios puede dividirse en archivos independientes, de forma similar a config.xml y config.d/.
El nombre del directorio se define como la opción users_config sin el sufijo .xml, concatenada con .d.
El directorio users.d se usa de forma predeterminada, ya que users_config tiene como valor predeterminado users.xml.
Tenga en cuenta que los archivos de configuración primero se combinan teniendo en cuenta la configuración, y después se procesan las inclusiones.
Ejemplo de XML
Ejemplos de YAML
config.yaml.example.
Hay algunas diferencias entre los formatos YAML y XML en lo que respecta a las configuraciones de ClickHouse.
A continuación, se presentan algunos consejos para escribir configuraciones en formato YAML.
Una etiqueta XML con un valor de texto se representa como un par clave-valor en YAML
@. Tenga en cuenta que @ está reservado por el estándar YAML, por lo que debe ir entre comillas dobles:
#text:
Detalles de implementación
file-preprocessed.xml al iniciarse. Estos archivos contienen todas las sustituciones y anulaciones resueltas, y están pensados para uso informativo. Si se usaron sustituciones de ZooKeeper en los archivos de configuración, pero ZooKeeper no está disponible cuando se inicia el servidor, el servidor carga la configuración desde el archivo preprocesado.
El servidor realiza un seguimiento de los cambios en los archivos de configuración, así como en los archivos y nodos de ZooKeeper que se usaron al realizar sustituciones y anulaciones, y vuelve a cargar sobre la marcha la configuración de los usuarios y los clústeres. Esto significa que puede modificar el clúster, los usuarios y su configuración sin reiniciar el servidor.