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”/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
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
replaceouremove, 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 atributoreplaceserã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).
config.xml
config.d/other_config.xml
Substituição por variáveis de ambiente e nós do ZooKeeper
from_env.
Por exemplo, com a variável de ambiente $MAX_QUERY_SIZE = 150000:
from_zk (nó do ZooKeeper):
Valores padrão
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:
Substituição com conteúdo de arquivo
- 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 elementoinclude_fromda configuração do servidor. Os valores de substituição são especificados em elementos/clickhouse/substitution_namenesse arquivo. Se uma substituição especificada eminclnão existir, isso será registrado no log. Para impedir que o ClickHouse registre substituições ausentes, especifique o atributooptional="true"(por exemplo, para configurações de macros). - Substituição de elementos: se você quiser substituir o elemento inteiro por uma substituição, use
includecomo nome do elemento. O nome de elementoincludepode ser combinado com o atributofrom_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.
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
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:
from_env e from_zk também podem ser aplicados a encryption_codecs:
config.xml é o seguinte:
users.xml é o seguinte:
encrypt_decrypt:
hide_in_preprocessed.
Por exemplo:
Configurações de usuário
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
Exemplos de 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
@. Observe que @ é reservado pelo padrão YAML e, por isso, deve ser colocado entre aspas duplas:
#text:
Detalhes de implementação
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.