Instrucciones del archivo de configuración de ClickHouse

Este artículo presenta principalmente los archivos de configuración de ClickHouse. La configuración en ClickHouse se divide principalmente en dos categorías, una es responsable de la configuración del lado del servidor y la otra es responsable de la configuración del lado del usuario. Los responsables de la configuración del lado del servidor generalmente se colocan config.xmlen el archivo, y los responsables de la configuración del lado del usuario generalmente se colocan users.xmlen el archivo. config.xmlPor supuesto, también es posible colocar ambos en el archivo, pero según la costumbre, los dos se dividirán en dos archivos para su configuración. config.xmlPor lo tanto, no separaremos ni introduciremos las siguientes funciones en el futuro users.xml, todas son universales.

Capacidades de múltiples perfiles

Para tener una mayor flexibilidad en los archivos de configuración, ClickHouse también admite la función de archivos de configuración múltiple, es decir, la configuración responsable de diferentes funciones se puede dividir en múltiples archivos de configuración y el contenido se fusiona como la configuración final. La ventaja de esto es que la configuración se puede clasificar y gestionar. Por ejemplo, la configuración relacionada con la topología del clúster ClickHouse se puede formar de forma independiente como un archivo de configuración (generalmente denominado clusters.xml), y la configuración relacionada con las macros también se puede formar de forma independiente como un archivo de configuración (generalmente denominado macros.xml).

Si desea utilizar la función de archivos de configuración múltiple, debe comprender cómo ClickHouse carga los archivos de configuración. La ruta de configuración principal predeterminada de ClickHouse es /etc/clickhouse-server/config.xml(por supuesto, puede usarla para especificar la ruta del archivo de configuración cuando se inicia ClickHouse Server --config-file=/etc/config/config.xml), si hay config.xmlun directorio en la carpeta donde se encuentra config.d, ClickHouse recorrerá todos los archivos en este directorio y guarde el contenido en Merge para generar el contenido de configuración final. Los pasos anteriores se ejecutarán cada vez que se reinicie ClickHouse.

¿Cómo se ocupa ClickHouse de establecer diferentes valores para la misma configuración? Tomemos macrocomo ejemplo para ver cómo lo maneja ClickHouse. El experimento se divide en dos situaciones, una es config.xmlconfiguración repetida marcoy la otra es configuración repetida con diferentes archivos de configuración marco.

Configuración duplicada de un solo archivo

Agregamos config.xmlla siguiente configuración y luego iniciamos ClickHouse Server para verificar ael valor de .

<clickhouse>
    ......
    <macros>
        <a>1</a>
    </macros>
    <macros>
        <a>2</a>
    </macros>
</clickhouse>

El valor consultado por la siguiente declaración aes 1.

SELECT * FROM system.macros

┌─macro─┬─substitution─┐
│ a     │ 1            │
└───────┴──────────────┘

Esto significa que en un mismo archivo de configuración, si el mismo parámetro de configuración está configurado con diferentes valores, ClickHouse usará el valor que aparece primero.

Configuración duplicada de varios archivos

config.dConfigure los dos archivos a.xmly en el directorio respectivamente b.xml, y configure ambos macro.

a.xml:
<clickhouse>
    <macros>
        <a>1</a>
    </macros>
</clickhouse>

b.xml:
<clickhouse>
    <macros>
        <a>2</a>
    </macros>
</clickhouse>

Además, el valor consultado por la declaración anterior aes 2.

SELECT * FROM system.macros

┌─macro─┬─substitution─┐
│ a     │ 2            │
└───────┴──────────────┘

¿Por qué esta vez toma el valor 2 en lugar de 1? Podemos observar los registros de ClickHouse Server:

2023.01.07 11:26:51.092322 [ 25669095 ] {
    
    } <Debug> ConfigReloader: Loading config 'config.xml'
Processing configuration file 'config.xml'.
Merging configuration file 'config.d/a.xml'.
Merging configuration file 'config.d/b.xml'.

ClickHouse se cargará primero config.xmly luego recorrerá config.del directorio para cargar todos los archivos de configuración en orden alfabético de nombres de archivos. Si diferentes archivos contienen los mismos parámetros de configuración, los cargados posteriormente sobrescribirán los valores de los parámetros anteriores. Si a.xmlcambia a c.xml, el SELECT * FROM system.macrosresultado final de la ejecución será 1, puede probarlo usted mismo.

resumen

Aunque entendemos el comportamiento de ClickHouse al cargar archivos de configuración, todavía intentamos evitar el problema de la configuración repetida.

Función de reemplazo de configuración

ClickHouse admite el reemplazo de valores de configuración con variables de entorno, estrofas xml y valores de nodo de zookeeper.

Usar sustitución de variables de entorno

ClickHouse admite el uso en la sección xml from_env="xxx"para usar variables de entorno para reemplazar los valores de configuración actuales. El uso es el siguiente:

<clickhouse>
    <macros>
        <replica from_env="REPLICA" />
    </macros>
</clickhouse>

Las variables de entorno se pueden export REPLICA=0especificar con , y el resultado de la consulta es 0 con SELECT * FROM system.macros WHERE macro = 'replica'. Equivalente a configuración <replica>0</replica>.

Reemplazar con la sección xml

ClickHouse admite el uso en la sección xml incl="xxx"para especificar una sección xml para reemplazar la sección xml actual. El uso es el siguiente:

<clickhouse>
    <zookeeper incl="zookeeper-servers" optional="true">
        <node>
            <host>host1</host>
            <port>2181</port>
        </node>
    </zookeeper>  
</clickhouse>

<clickhouse>
    <zookeeper-servers>
        <node>
            <host>host2</host>
            <port>2182</port>
        </node>
    </zookeeper-servers>
</clickhouse>

Este <zookeeper>será <zookeeper-servers>reemplazado por el contenido contenido en el . Equivalente a la siguiente configuración:

<clickhouse>
    <zookeeper>
        <node>
            <host>host2</host>
            <port>2182</port>
        </node>
    </zookeeper>
</clickhouse>

optional="true"Este atributo sirve para evitar el problema de que se informe de un error si la sección xml especificada no existe. En caso afirmativo truey <zookeeper-servers>no existe, <zookeeper>se utilizará la configuración con host1 y puerto 2181. En general, no se recomienda configurar optional="true". Implica información de configuración clave, si hay un error se debe informar con anticipación para evitar utilizar una configuración incorrecta.

Reemplazar con el valor del nodo zookeeper

ClickHouse admite el uso en la sección xml from_zk="xxx"para especificar un valor de nodo de cuidador del zoológico (requiere el formulario de sección xml) para reemplazar la sección xml actual. El uso es el siguiente:

<clickhouse>
    <remote_servers from_zk="/clickhouse/remote_servers">
        <default>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>host1</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <host>host2</host>
                    <port>9000</port>
                </replica>
            </shard>
        </default>
    </remote_servers>
</clickhouse>

<!-- zookeeper 节点/clickhouse/remote_servers内容如下 -->
        <default>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>host3</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <host>host4</host>
                    <port>9000</port>
                </replica>
            </shard>
        </default>

De esta manera, la configuración del clúster denominada predeterminada será /clickhouse/remote_serversreemplazada por el valor del nodo en zookeeper. Preste atención al ajuste en el nodo zookeeper, que se incorporará a la configuración. Si desea considerarlo, puede mantener el ajuste en el nodo guardián del zoológico.

La configuración admite el formato yaml

ClickHouse también admite archivos de configuración en formato yaml. Para ver ejemplos específicos, consulte config.yaml.example . Y ClickHouse también admite el uso mixto de yaml y xml, pero no puede usar yaml y xml en un archivo al mismo tiempo. Esta sección no presenta demasiado esta parte. from_env="xxx"Debido a que yaml no es muy intuitivo y fácil de entender al expresar los atributos de la sección xml (como ), y el entorno de producción general todavía usa el formato xml como archivo de configuración de forma predeterminada, esta parte es suficiente para comprender y no recomendado.


Bienvenido a agregar WeChat: xiedeyantu para discutir problemas técnicos.

Supongo que te gusta

Origin blog.csdn.net/weixin_39992480/article/details/129208658
Recomendado
Clasificación