Профили настроек и конфигурационные файлы на основе XML не поддерживаются в ClickHouse Cloud. Поэтому в ClickHouse Cloud вы не найдете файл
config.xml. Вместо этого для управления настройками через профили настроек следует использовать команды SQL.Подробнее см. в разделе “Настройка параметров”/etc/clickhouse-server/config.xml в качестве конфигурационного файла по умолчанию, но расположение конфигурационного файла также можно указать вручную при запуске сервера с помощью параметра командной строки --config-file или -C.
Дополнительные конфигурационные файлы можно размещать в каталоге config.d/ относительно основного конфигурационного файла, например в каталоге /etc/clickhouse-server/config.d/.
Файлы в этом каталоге и основная конфигурация объединяются на этапе предварительной обработки перед применением конфигурации в сервере ClickHouse.
Конфигурационные файлы объединяются в алфавитном порядке.
Чтобы упростить обновления и улучшить модульность, рекомендуется не изменять файл config.xml по умолчанию и размещать дополнительные пользовательские настройки в config.d/.
Конфигурация ClickHouse Keeper находится в /etc/clickhouse-keeper/keeper_config.xml.
Аналогично, дополнительные конфигурационные файлы для Keeper нужно размещать в /etc/clickhouse-keeper/keeper_config.d/.
Можно комбинировать конфигурационные файлы XML и YAML: например, у вас может быть основной конфигурационный файл config.xml и дополнительные конфигурационные файлы config.d/network.xml, config.d/timezone.yaml и config.d/keeper.yaml.
Смешивание XML и YAML в пределах одного конфигурационного файла не поддерживается.
В конфигурационных файлах XML в качестве тега верхнего уровня следует использовать <clickhouse>...</clickhouse>.
В конфигурационных файлах YAML clickhouse: указывать необязательно; если он отсутствует, парсер добавляет его автоматически.
Слияние конфигурации
config.d/) объединяются следующим образом:
- Если узел (то есть путь, ведущий к элементу) присутствует в обоих файлах и не имеет атрибутов
replaceилиremove, он включается в итоговый файл конфигурации, а дочерние элементы из обоих узлов включаются и рекурсивно объединяются. - Если один из двух узлов содержит атрибут
replace, он включается в итоговый файл конфигурации, но включаются только дочерние элементы из узла с атрибутомreplace. - Если один из двух узлов содержит атрибут
remove, узел не включается в итоговый файл конфигурации (если он уже существует, он удаляется).
config.xml
config.d/other_config.xml
Подстановка с использованием переменных окружения и узлов ZooKeeper
from_env.
Например, при переменной окружения $MAX_QUERY_SIZE = 150000:
from_zk (узла ZooKeeper):
Значения по умолчанию
from_env или from_zk также может иметь атрибут replace="1" (последний должен располагаться перед from_env/from_zk).
В этом случае для элемента можно задать значение по умолчанию.
Элемент принимает значение переменной окружения или узла ZooKeeper, если оно задано; в противном случае используется значение по умолчанию.
Ниже повторяется предыдущий пример, но при условии, что MAX_QUERY_SIZE не задан:
Подстановка содержимого файла
- Подстановка значений: Если у элемента есть атрибут
incl, его значение будет заменено содержимым указанного файла. По умолчанию путь к файлу с подстановками —/etc/metrika.xml. Его можно изменить в элементеinclude_fromв конфигурации сервера. Значения для подстановки задаются в элементах/clickhouse/substitution_nameв этом файле. Если подстановка, указанная вincl, не существует, об этом будет сделана запись в журнале. Чтобы ClickHouse не писал в журнал об отсутствующих подстановках, укажите атрибутoptional="true"(например, для настроек macros). - Подстановка элементов: Если вы хотите заменить подстановкой весь элемент целиком, используйте
includeв качестве имени элемента. Имя элементаincludeможно использовать вместе с атрибутомfrom_zk = "/path/to/node". В этом случае значение элемента заменяется содержимым узла ZooKeeper по пути/path/to/node. Это также работает, если вы храните в узле ZooKeeper всё XML-поддерево: оно будет полностью вставлено в исходный элемент.
merge="true". Например: <include from_zk="/some_path" merge="true">. В этом случае существующая конфигурация будет объединена с содержимым подстановки, а существующие параметры конфигурации будут заменены значениями из подстановки.
Шифрование и скрытие конфигурации
encrypted_by со значением — именем кодека шифрования.
В отличие от атрибутов from_zk, from_env и incl, а также элемента include, в предварительно обработанном файле подстановка (то есть расшифровка зашифрованного значения) не выполняется.
Расшифровка происходит только во время выполнения в процессе сервера.
Например:
from_env и from_zk также можно использовать для encryption_codecs:
config.xml приведён ниже:
users.xml:
encrypt_decrypt:
hide_in_preprocessed.
Например:
Пользовательские настройки
config.xml можно указать отдельную конфигурацию с пользовательскими настройками, профилями и квотами. Относительный путь к этой конфигурации задается в элементе users_config. По умолчанию используется users.xml. Если users_config не указан, пользовательские настройки, профили и квоты задаются прямо в config.xml.
Пользовательскую конфигурацию можно разделить на отдельные файлы, аналогично config.xml и config.d/.
Имя каталога определяется как значение параметра users_config без суффикса .xml с добавлением .d.
По умолчанию используется каталог users.d, так как значение users_config по умолчанию — users.xml.
Обратите внимание, что файлы конфигурации сначала сливаются с учетом настроек, и только после этого обрабатываются директивы include.
Пример XML
Примеры YAML
config.yaml.example.
Форматы YAML и XML имеют некоторые различия в контексте конфигураций ClickHouse.
Ниже приведены рекомендации по написанию конфигурации в формате YAML.
XML-тег с текстовым значением в YAML представляется как пара ключ-значение
@. Обратите внимание: символ @ зарезервирован стандартом YAML, поэтому его нужно заключать в двойные кавычки:
#text:
Подробности реализации
file-preprocessed.xml. Эти файлы содержат все выполненные подстановки и переопределения и предназначены только для ознакомления. Если в конфигурационных файлах использовались подстановки из ZooKeeper, но при запуске сервера ZooKeeper недоступен, сервер загружает конфигурацию из предварительно обработанного файла.
Сервер отслеживает изменения в конфигурационных файлах, а также в файлах и узлах ZooKeeper, которые использовались при выполнении подстановок и переопределений, и на лету перезагружает настройки для пользователей и кластеров. Это означает, что вы можете изменять кластер, пользователей и их настройки без перезапуска сервера.