Skip to main content
Perfis de configuração e arquivos de configuração baseados em XML não são compatíveis com ClickHouse Cloud. Portanto, no ClickHouse Cloud, você não encontrará um arquivo config.xml. Em vez disso, use comandos SQL para gerenciar as configurações por meio de perfis de configuração.Para mais detalhes, consulte “Configuração de settings”
O servidor ClickHouse pode ser configurado com arquivos de configuração em sintaxe XML ou YAML. Na maioria dos tipos de instalação, o servidor ClickHouse usa /etc/clickhouse-server/config.xml como arquivo de configuração padrão, mas também é possível especificar manualmente o local do arquivo de configuração na inicialização do servidor usando a opção de linha de comando --config-file ou -C. Arquivos de configuração adicionais podem ser colocados no diretório config.d/, relativo ao arquivo de configuração principal, por exemplo no diretório /etc/clickhouse-server/config.d/. Os arquivos desse diretório e a configuração principal são mesclados em uma etapa de pré-processamento antes de a configuração ser aplicada no servidor ClickHouse. Os arquivos de configuração são mesclados em ordem alfabética. Para simplificar atualizações e melhorar a modularização, é uma prática recomendada manter o arquivo padrão config.xml sem alterações e colocar personalizações adicionais em config.d/. A configuração do ClickHouse Keeper fica em /etc/clickhouse-keeper/keeper_config.xml. Da mesma forma, arquivos de configuração adicionais do Keeper precisam ser colocados em /etc/clickhouse-keeper/keeper_config.d/. É possível misturar arquivos de configuração XML e YAML; por exemplo, você pode ter um arquivo de configuração principal config.xml e arquivos de configuração adicionais config.d/network.xml, config.d/timezone.yaml e config.d/keeper.yaml. Não há suporte para misturar XML e YAML em um único arquivo de configuração. Arquivos de configuração XML devem usar <clickhouse>...</clickhouse> como tag de nível superior. Em arquivos de configuração YAML, clickhouse: é opcional; se estiver ausente, o parser o insere automaticamente.

Mesclagem de configuração

Dois arquivos de configuração (geralmente o arquivo de configuração principal e outro arquivo de configuração em config.d/) são mesclados da seguinte forma:
  • Se um nó (ou seja, um caminho que leva a um elemento) estiver presente em ambos os arquivos e não tiver os atributos replace ou remove, ele será incluído no arquivo de configuração mesclado, e os filhos de ambos os nós serão incluídos e mesclados recursivamente.
  • Se um dos dois nós contiver o atributo replace, ele será incluído no arquivo de configuração mesclado, mas apenas os filhos do nó com o atributo replace serão incluídos.
  • Se um dos dois nós contiver o atributo remove, o nó não será incluído no arquivo de configuração mesclado (se já existir, será removido).
Por exemplo, considerando dois arquivos de configuração:
config.xml
e
config.d/other_config.xml
O arquivo de configuração mesclado resultante será:

Substituição por variáveis de ambiente e nós do ZooKeeper

Para especificar que o valor de um elemento deve ser substituído pelo valor de uma variável de ambiente, você pode usar o atributo from_env. Por exemplo, com a variável de ambiente $MAX_QUERY_SIZE = 150000:
A configuração resultante será:
Também é possível usar from_zk (nó do ZooKeeper):
Resultando na configuração a seguir:

Valores padrão

Um elemento com os atributos from_env ou from_zk também pode ter o atributo replace="1" (este último deve aparecer antes de from_env/from_zk). Nesse caso, o elemento pode definir um valor padrão. O elemento assume o valor da variável de ambiente ou do nó do ZooKeeper, se estiver definido; caso contrário, assume o valor padrão. O exemplo anterior é repetido, mas supondo que MAX_QUERY_SIZE não esteja definido:
O resultado é a configuração:

Substituição com conteúdo de arquivo

Também é possível substituir partes da configuração pelo conteúdo de arquivos. Isso pode ser feito de duas formas:
  • Substituição de valores: se um elemento tiver o atributo incl, seu valor será substituído pelo conteúdo do arquivo referenciado. Por padrão, o caminho para o arquivo com substituições é /etc/metrika.xml. Isso pode ser alterado no elemento include_from da configuração do servidor. Os valores de substituição são especificados em elementos /clickhouse/substitution_name nesse arquivo. Se uma substituição especificada em incl não existir, isso será registrado no log. Para impedir que o ClickHouse registre substituições ausentes, especifique o atributo optional="true" (por exemplo, para configurações de macros).
  • Substituição de elementos: se você quiser substituir o elemento inteiro por uma substituição, use include como nome do elemento. O nome de elemento include pode ser combinado com o atributo from_zk = "/path/to/node". Nesse caso, o valor do elemento é substituído pelo conteúdo do nó do ZooKeeper em /path/to/node. Isso também funciona quando você armazena uma subárvore XML inteira como um nó do ZooKeeper; ela será inserida por completo no elemento de origem.
Um exemplo disso é mostrado abaixo:
Se você quiser mesclar o conteúdo da substituição com a configuração existente, em vez de apenas anexá-lo, pode usar o atributo merge="true". Por exemplo: <include from_zk="/some_path" merge="true">. Nesse caso, a configuração existente será mesclada com o conteúdo da substituição, e as configurações existentes serão substituídas pelos valores da substituição.

Criptografando e ocultando a configuração

Você pode usar criptografia simétrica para criptografar um elemento de configuração, por exemplo, uma senha em texto simples ou uma chave privada. Para isso, primeiro configure o codec de criptografia e, em seguida, adicione o atributo encrypted_by, com o nome do codec de criptografia como valor, ao elemento que será criptografado. Diferentemente dos atributos from_zk, from_env e incl, ou do elemento include, nenhuma substituição (ou seja, a descriptografia do valor criptografado) é realizada no arquivo pré-processado. A descriptografia ocorre apenas em tempo de execução, no processo do servidor. Por exemplo:
Os atributos from_env e from_zk também podem ser aplicados a encryption_codecs:
Chaves de criptografia e valores criptografados podem ser definidos em qualquer um dos arquivos de configuração. Um exemplo de config.xml é o seguinte:
Um exemplo de users.xml é o seguinte:
Para criptografar um valor, você pode usar o programa de exemplo encrypt_decrypt:
Mesmo com elementos de configuração criptografados, eles ainda aparecem no arquivo de configuração pré-processado. Se isso for um problema para a sua implantação do ClickHouse, há duas alternativas: definir as permissões do arquivo pré-processado como 600 ou usar o atributo hide_in_preprocessed. Por exemplo:

Configurações de usuário

O arquivo config.xml pode especificar uma configuração separada com configurações de usuário, perfis e cotas. O caminho relativo para essa configuração é definido no elemento users_config. Por padrão, ele é users.xml. Se users_config for omitido, as configurações de usuário, os perfis e as cotas serão especificados diretamente em config.xml. A configuração de usuário pode ser dividida em arquivos separados, assim como em config.xml e config.d/. O nome do diretório é definido pela configuração users_config, sem o sufixo .xml, concatenado com .d. O diretório users.d é usado por padrão, já que users_config tem como padrão users.xml. Observe que os arquivos de configuração primeiro são mesclados, levando em conta as configurações, e as inclusões são processadas depois disso.

Exemplo em XML

Por exemplo, você pode ter um arquivo de configuração separado para cada usuário, assim:

Exemplos de YAML

Aqui você pode ver a configuração padrão escrita em YAML: config.yaml.example. Há algumas diferenças entre os formatos YAML e XML no que diz respeito às configurações do ClickHouse. As dicas para escrever configurações no formato YAML são apresentadas abaixo. Uma tag XML com um valor de texto é representada por um par chave-valor em YAML
XML correspondente:
Um nó XML aninhado é representado como um mapa YAML:
XML correspondente:
Para criar a mesma tag XML várias vezes, use uma sequência YAML:
XML correspondente:
Para fornecer um atributo XML, você pode usar uma chave de atributo com o prefixo @. Observe que @ é reservado pelo padrão YAML e, por isso, deve ser colocado entre aspas duplas:
XML correspondente:
Também é possível usar atributos em uma sequência YAML:
XML correspondente:
A sintaxe mencionada anteriormente não permite representar, em YAML, nós de texto XML com atributos XML. Esse caso especial pode ser tratado usando uma chave de atributo #text:
XML correspondente:

Detalhes de implementação

Para cada arquivo de configuração, o servidor também gera arquivos file-preprocessed.xml ao iniciar. Esses arquivos contêm todas as substituições e sobrescritas já resolvidas e se destinam apenas à consulta. Se substituições do ZooKeeper tiverem sido usadas nos arquivos de configuração, mas o ZooKeeper não estiver disponível na inicialização do servidor, o servidor carregará a configuração a partir do arquivo pré-processado. O servidor monitora alterações nos arquivos de configuração, bem como nos arquivos e nós do ZooKeeper usados para realizar substituições e sobrescritas, e recarrega dinamicamente as configurações de usuários e clusters. Isso significa que você pode modificar o cluster, os usuários e suas configurações sem reiniciar o servidor.
Última modificação em 3 de julho de 2026