Signed-off-by: Slach <bloodjazman@gmail.com>
38 KiB
Конфигурационные параметры сервера
builtin_dictionaries_reload_interval
Интервал (в секундах) перезагрузки встроенных словарей.
ClickHouse перезагружает встроенные словари с заданным интервалом. Это позволяет править словари "на лету" без перезапуска сервера.
Значение по умолчанию - 3600.
Пример
<builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>
compression
Настройки компрессии данных.
!!! warning "Внимание" Лучше не использовать, если вы только начали работать с ClickHouse.
Общий вид конфигурации:
<compression>
<case>
<parameters/>
</case>
...
</compression>
Можно сконфигурировать несколько разделов <case>
.
Поля блока <case>
:
min_part_size
- Минимальный размер части таблицы.min_part_size_ratio
- Отношение размера минимальной части таблицы к полному размеру таблицы.method
- Метод сжатия. Возможные значения:lz4
,zstd
(экспериментальный).
ClickHouse проверит условия min_part_size
и min_part_size_ratio
и выполнит те блоки case
, для которых условия совпали. Если ни один <case>
не подходит, то ClickHouse применит алгоритм сжатия lz4
.
Пример
<compression incl="clickhouse_compression">
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>zstd</method>
</case>
</compression>
default_database
База данных по умолчанию.
Перечень баз данных можно получить запросом SHOW DATABASES.
Пример
<default_database>default</default_database>
default_profile
Профиль настроек по умолчанию.
Профили настроек находятся в файле, указанном в параметре user_config
.
Пример
<default_profile>default</default_profile>
dictionaries_config
Путь к конфигурации внешних словарей.
Путь:
- Указывается абсолютным или относительно конфигурационного файла сервера.
- Может содержать wildcard-ы * и ?.
Смотрите также "Внешние словари".
Пример
<dictionaries_config>*_dictionary.xml</dictionaries_config>
dictionaries_lazy_load
Отложенная загрузка словарей.
Если true
, то каждый словарь создаётся при первом использовании. Если словарь не удалось создать, то вызов функции, использующей словарь, сгенерирует исключение.
Если false
, то все словари создаются при старте сервера, и в случае ошибки сервер завершает работу.
По умолчанию - true
.
Пример
<dictionaries_lazy_load>true</dictionaries_lazy_load>
format_schema_path
Путь к каталогу со схемами для входных данных. Например со схемами для формата CapnProto.
Пример
<!-- Directory containing schema files for various input formats. -->
<format_schema_path>format_schemas/</format_schema_path>
graphite
Отправка данных в Graphite.
Настройки:
- host – Сервер Graphite.
- port – Порт сервера Graphite.
- interval – Период отправки в секундах.
- timeout – Таймаут отправки данных в секундах.
- root_path – Префикс для ключей.
- metrics – Отправка данных из таблицы system.metrics.
- events – Отправка дельты данных, накопленной за промежуток времени из таблицы system.events.
- events_cumulative – Отправка суммарных данных из таблицы system.events.
- asynchronous_metrics – Отправка данных из таблицы system.asynchronous_metrics.
Можно определить несколько секций <graphite>
, например, для передачи различных данных с различной частотой.
Пример
<graphite>
<host>localhost</host>
<port>42000</port>
<timeout>0.1</timeout>
<interval>60</interval>
<root_path>one_min</root_path>
<metrics>true</metrics>
<events>true</events>
<events_cumulative>false</events_cumulative>
<asynchronous_metrics>true</asynchronous_metrics>
</graphite>
graphite_rollup
Настройка прореживания данных для Graphite.
Подробнее читайте в разделе GraphiteMergeTree.
Пример
<graphite_rollup_example>
<default>
<function>max</function>
<retention>
<age>0</age>
<precision>60</precision>
</retention>
<retention>
<age>3600</age>
<precision>300</precision>
</retention>
<retention>
<age>86400</age>
<precision>3600</precision>
</retention>
</default>
</graphite_rollup_example>
http_port/https_port
Порт для обращений к серверу по протоколу HTTP(s).
Если указан https_port
, то требуется конфигурирование openSSL.
Если указан http_port
, то настройка openSSL игнорируется, даже если она задана.
Пример
<https>0000</https>
http_server_default_response
Страница, показываемая по умолчанию, при обращении к HTTP(s) серверу ClickHouse. Значение по умолчанию "Ok." (с переводом строки на конце).
Пример
Показывает https://tabix.io/
при обращении к http://localhost:http_port
.
<http_server_default_response>
<![CDATA[<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>]]>
</http_server_default_response>
include_from
Путь к файлу с подстановками.
Подробности смотрите в разделе "Конфигурационный файлы".
Пример
<include_from>/etc/metrica.xml</include_from>
interserver_http_port
Порт для обмена между серверами ClickHouse.
Пример
<interserver_http_port>9009</interserver_http_port>
interserver_http_host
Имя хоста, которое могут использовать другие серверы для обращения к этому.
Если не указано, то определяется аналогично команде hostname -f
.
Удобно использовать, чтобы отвязаться от конкретного сетевого интерфейса.
Пример
<interserver_http_host>example.yandex.ru</interserver_http_host>
interserver_http_credentials
Имя пользователя и пароль, использующиеся для аутентификации при репликации движками Replicated*. Это имя пользователя и пароль используются только для взаимодействия между репликами кластера и никак не связаны с аутентификацией клиентов ClickHouse. Сервер проверяет совпадение имени и пароля для соединяющихся с ним реплик, а также использует это же имя и пароль для соединения с другими репликами. Соответственно, эти имя и пароль должны быть прописаны одинаковыми для всех реплик кластера. По умолчанию аутентификация не используется.
Раздел содержит следующие параметры:
user
— имя пользователя.password
— пароль.
Пример конфигурации
<interserver_http_credentials>
<user>admin</user>
<password>222</password>
</interserver_http_credentials>
keep_alive_timeout
Время в секундах, в течение которого ClickHouse ожидает входящих запросов прежде, чем закрыть соединение.
Пример
<keep_alive_timeout>3</keep_alive_timeout>
listen_host
Ограничение по хостам, с которых может прийти запрос. Если необходимо, чтобы сервер отвечал всем, то надо указать ::
.
Примеры:
<listen_host>::1</listen_host>
<listen_host>127.0.0.1</listen_host>
logger
Настройки логирования.
Ключи:
- level - Уровень логирования. Допустимые значения:
trace
,debug
,information
,warning
,error
. - log - Файл лога. Содержит все записи согласно
level
. - errorlog - Файл лога ошибок.
- size - Размер файла. Действует для
log
иerrorlog
. Как только файл достиг размераsize
, ClickHouse архивирует и переименовывает его, а на его месте создает новый файл лога. - count - Количество заархивированных файлов логов, которые сохраняет ClickHouse.
Пример
<logger>
<level>trace</level>
<log>/var/log/clickhouse-server/clickhouse-server.log</log>
<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
<size>1000M</size>
<count>10</count>
</logger>
Также, существует поддержка записи в syslog. Пример конфига:
<logger>
<use_syslog>1</use_syslog>
<syslog>
<address>syslog.remote:10514</address>
<hostname>myhost.local</hostname>
<facility>LOG_LOCAL6</facility>
<format>syslog</format>
</syslog>
</logger>
Ключи:
- use_syslog - обязательная настройка, если требуется запись в syslog
- address - хост[:порт] демона syslogd. Если не указан, используется локальный
- hostname - опционально, имя хоста, с которого отсылаются логи
- facility - категория syslog,
записанная в верхнем регистре, с префиксом "LOG_": (
LOG_USER
,LOG_DAEMON
,LOG_LOCAL3
и прочие). Значения по умолчанию: при указанномaddress
-LOG_USER
, иначе -LOG_DAEMON
- format - формат сообщений. Возможные значения -
bsd
иsyslog
macros
Подстановки параметров реплицируемых таблиц.
Можно не указывать, если реплицируемых таблицы не используются.
Подробнее смотрите в разделе "Создание реплицируемых таблиц".
Пример
<macros incl="macros" optional="true" />
mark_cache_size
Приблизительный размер (в байтах) кэша засечек, используемых движками таблиц семейства MergeTree.
Кэш общий для сервера, память выделяется по мере необходимости.
Пример
<mark_cache_size>5368709120</mark_cache_size>
max_concurrent_queries
Максимальное количество одновременно обрабатываемых запросов.
Пример
<max_concurrent_queries>100</max_concurrent_queries>
max_connections
Максимальное количество входящих соединений.
Пример
<max_connections>4096</max_connections>
max_open_files
Максимальное количество открытых файлов.
По умолчанию - maximum
.
Рекомендуется использовать в Mac OS X, поскольку функция getrlimit()
возвращает некорректное значение.
Пример
<max_open_files>262144</max_open_files>
max_table_size_to_drop
Ограничение на удаление таблиц.
Если размер таблицы семейства MergeTree превышает max_table_size_to_drop
(в байтах), то ее нельзя удалить запросом DROP.
Если таблицу все же необходимо удалить, не перезапуская при этом сервер ClickHouse, то необходимо создать файл <clickhouse-path>/flags/force_drop_table
и выполнить запрос DROP.
Значение по умолчанию - 50GB.
Значение 0 означает, что можно удалять все таблицы без ограничений.
Пример
<max_table_size_to_drop>0</max_table_size_to_drop>
merge_tree
Тонкая настройка таблиц семейства MergeTree.
Подробнее смотрите в заголовочном файле MergeTreeSettings.h.
Пример
<merge_tree>
<max_suspicious_broken_parts>5</max_suspicious_broken_parts>
</merge_tree>
openSSL
Настройки клиента/сервера SSL.
Поддержку SSL обеспечивает библиотека libpoco
. Описание интерфейса находится в файле SSLManager.h
Ключи настроек сервера/клиента:
- privateKeyFile - Путь к файлу с секретным ключом сертификата в формате PEM. Файл может содержать ключ и сертификат одновременно.
- certificateFile - Путь к файлу сертификата клиента/сервера в формате PEM. Можно не указывать, если
privateKeyFile
содержит сертификат. - caConfig - Путь к файлу или каталогу, которые содержат доверенные корневые сертификаты.
- verificationMode - Способ проверки сертификатов узла. Подробности находятся в описании класса Context. Допустимые значения:
none
,relaxed
,strict
,once
. - verificationDepth - Максимальная длина верификационной цепи. Верификация завершится ошибкой, если длина цепи сертификатов превысит установленное значение.
- loadDefaultCAFile - Признак того, что будут использоваться встроенные CA-сертификаты для OpenSSL. Допустимые значения:
true
,false
. | - cipherList - Поддерживаемые OpenSSL-шифры. Например,
ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
. - cacheSessions - Включение/выключение кеширования сессии. Использовать обязательно вместе с
sessionIdContext
. Допустимые значения:true
,false
. - sessionIdContext - Уникальный набор произвольных символов, которые сервер добавляет к каждому сгенерированному идентификатору. Длина строки не должна превышать
SSL_MAX_SSL_SESSION_ID_LENGTH
. Рекомендуется к использованию всегда, поскольку позволяет избежать проблем как в случае, если сервер кеширует сессию, так и если клиент затребовал кеширование. По умолчанию${application.name}
. - sessionCacheSize - Максимальное количество сессий, которые кэширует сервер. По умолчанию - 1024*20. 0 - неограниченное количество сессий.
- sessionTimeout - Время кеширования сессии на сервере.
- extendedVerification - Автоматическая расширенная проверка сертификатов после завершении сессии. Допустимые значения:
true
,false
. - requireTLSv1 - Требование соединения TLSv1. Допустимые значения:
true
,false
. - requireTLSv1_1 - Требование соединения TLSv1.1. Допустимые значения:
true
,false
. - requireTLSv1_2 - Требование соединения TLSv1.2. Допустимые значения:
true
,false
. - fips - Активация режима OpenSSL FIPS. Поддерживается, если версия OpenSSL, с которой собрана библиотека поддерживает fips.
- privateKeyPassphraseHandler - Класс (подкласс PrivateKeyPassphraseHandler)запрашивающий кодовую фразу доступа к секретному ключу. Например,
<privateKeyPassphraseHandler>
,<name>KeyFileHandler</name>
,<options><password>test</password></options>
,</privateKeyPassphraseHandler>
. - invalidCertificateHandler - Класс (подкласс CertificateHandler) для подтверждения не валидных сертификатов. Например,
<invalidCertificateHandler> <name>ConsoleCertificateHandler</name> </invalidCertificateHandler>
. - disableProtocols - Запрещенные к использованию протоколы.
- preferServerCiphers - Предпочтение серверных шифров на клиенте.
Пример настройки:
<openSSL>
<server>
<!-- openssl req -subj "/CN=localhost" -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/clickhouse-server/server.key -out /etc/clickhouse-server/server.crt -->
<certificateFile>/etc/clickhouse-server/server.crt</certificateFile>
<privateKeyFile>/etc/clickhouse-server/server.key</privateKeyFile>
<!-- openssl dhparam -out /etc/clickhouse-server/dhparam.pem 4096 -->
<dhParamsFile>/etc/clickhouse-server/dhparam.pem</dhParamsFile>
<verificationMode>none</verificationMode>
<loadDefaultCAFile>true</loadDefaultCAFile>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
</server>
<client>
<loadDefaultCAFile>true</loadDefaultCAFile>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
<!-- Use for self-signed: <verificationMode>none</verificationMode> -->
<invalidCertificateHandler>
<!-- Use for self-signed: <name>AcceptCertificateHandler</name> -->
<name>RejectCertificateHandler</name>
</invalidCertificateHandler>
</client>
</openSSL>
part_log
Логирование событий, связанных с данными типа MergeTree. Например, события добавления или мержа данных. Лог можно использовать для симуляции алгоритмов слияния, чтобы сравнивать их характеристики. Также, можно визуализировать процесс слияния.
Запросы логируются не в отдельный файл, а в таблицу system.part_log. Вы можете изменить название этой таблицы в параметре table
(см. ниже).
При настройке логирования используются следующие параметры:
database
— имя базы данных;table
— имя таблицы;partition_by
— устанавливает произвольный ключ партиционирования;flush_interval_milliseconds
— период сброса данных из буфера в памяти в таблицу.
Пример
<part_log>
<database>system</database>
<table>part_log</table>
<partition_by>toMonday(event_date)</partition_by>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</part_log>
path
Путь к каталогу с данными.
!!! warning "Обратите внимание" Завершающий слеш обязателен.
Пример
<path>/var/lib/clickhouse/</path>
query_log
Настройка логирования запросов, принятых с настройкой log_queries=1.
Запросы логируются не в отдельный файл, а в системную таблицу system.query_log. Вы можете изменить название этой таблицы в параметре table
(см. ниже).
При настройке логирования используются следующие параметры:
database
— имя базы данных;table
— имя таблицы, куда будет записываться лог;partition_by
— произвольный ключ партиционирования для таблицы с логами;flush_interval_milliseconds
— период сброса данных из буфера в памяти в таблицу.
Если таблица не существует, то ClickHouse создаст её. Если структура журнала запросов изменилась при обновлении сервера ClickHouse, то таблица со старой структурой переименовывается, а новая таблица создается автоматически.
Пример
<query_log>
<database>system</database>
<table>query_log</table>
<partition_by>toMonday(event_date)</partition_by>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>
query_thread_log
Настройка логирования потоков выполнения запросов, принятых с настройкой log_query_threads=1.
Запросы логируются не в отдельный файл, а в системную таблицу system.query_thread_log. Вы можете изменить название этой таблицы в параметре table
(см. ниже).
При настройке логирования используются следующие параметры:
database
— имя базы данных;table
— имя таблицы, куда будет записываться лог;partition_by
— произвольный ключ партиционирования для таблицы с логами;flush_interval_milliseconds
— период сброса данных из буфера в памяти в таблицу.
Если таблица не существует, то ClickHouse создаст её. Если структура журнала запросов изменилась при обновлении сервера ClickHouse, то таблица со старой структурой переименовывается, а новая таблица создается автоматически.
Пример
<query_thread_log>
<database>system</database>
<table>query_thread_log</table>
<partition_by>toMonday(event_date)</partition_by>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_thread_log>
trace_log
Settings for the trace_log system table operation.
Parameters:
database
— Database for storing a table.table
— Table name.partition_by
— Custom partitioning key for a system table.flush_interval_milliseconds
— Interval for flushing data from the buffer in memory to the table.
The default server configuration file config.xml
contains the following settings section:
<trace_log>
<database>system</database>
<table>trace_log</table>
<partition_by>toYYYYMM(event_date)</partition_by>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</trace_log>
remote_servers
Конфигурация кластеров, которые использует движок таблиц Distributed и табличная функция cluster
.
Пример
<remote_servers incl="clickhouse_remote_servers" />
Значение атрибута incl
смотрите в разделе "Конфигурационные файлы".
Смотрите также
timezone
Временная зона сервера.
Указывается идентификатором IANA в виде часового пояса UTC или географического положения (например, Africa/Abidjan).
Временная зона необходима при преобразованиях между форматами String и DateTime, которые возникают при выводе полей DateTime в текстовый формат (на экран или в файл) и при получении DateTime из строки. Также, временная зона используется в функциях, которые работают со временем и датой, если они не получили временную зону в параметрах вызова.
Пример
<timezone>Europe/Moscow</timezone>
tcp_port
Порт для взаимодействия с клиентами по протоколу TCP.
Пример
<tcp_port>9000</tcp_port>
tcp_port_secure
TCP порт для защищённого обмена данными с клиентами. Используйте с настройкой OpenSSL.
Возможные значения
Положительное целое число.
Значение по умолчанию
<tcp_port_secure>9440</tcp_port_secure>
mysql_port
Порт для взаимодействия с клиентами по протоколу MySQL.
Пример
<mysql_port>9004</mysql_port>
tmp_path
Путь ко временным данным для обработки больших запросов.
!!! warning "Обратите внимание" Завершающий слеш обязателен.
Пример
<tmp_path>/var/lib/clickhouse/tmp/</tmp_path>
uncompressed_cache_size
Размер кеша (в байтах) для несжатых данных, используемых движками таблиц семейства MergeTree.
Кеш единый для сервера. Память выделяется по требованию. Кеш используется в том случае, если включена опция use_uncompressed_cache.
Несжатый кеш выгодно использовать для очень коротких запросов в отдельных случаях.
Пример
<uncompressed_cache_size>8589934592</uncompressed_cache_size>
user_files_path
Каталог с пользовательскими файлами. Используется в табличной функции file().
Пример
<user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
users_config
Путь к файлу, который содержит:
- Конфигурации пользователей.
- Права доступа.
- Профили настроек.
- Настройки квот.
Пример
<users_config>users.xml</users_config>
zookeeper
Содержит параметры, позволяющие ClickHouse взаимодействовать с кластером ZooKeeper.
ClickHouse использует ZooKeeper для хранения метаданных о репликах при использовании реплицированных таблиц. Если реплицированные таблицы не используются, этот раздел параметров может отсутствовать.
Раздел содержит следующие параметры:
-
node
— адрес ноды (сервера) ZooKeeper. Можно сконфигурировать несколько нод.Например:
<node index="1">
<host>example_host</host>
<port>2181</port>
</node>
Атрибут `index` задает порядок опроса нод при попытках подключиться к кластеру ZooKeeper.
session_timeout
— максимальный таймаут клиентской сессии в миллисекундах.root
— znode, который используется как корневой для всех znode, которые использует сервер ClickHouse. Необязательный.identity
— пользователь и пароль, которые может потребовать ZooKeeper для доступа к запрошенным znode. Необязательный.
Пример конфигурации
<zookeeper>
<node>
<host>example1</host>
<port>2181</port>
</node>
<node>
<host>example2</host>
<port>2181</port>
</node>
<session_timeout_ms>30000</session_timeout_ms>
<!-- Optional. Chroot suffix. Should exist. -->
<root>/path/to/zookeeper/node</root>
<!-- Optional. Zookeeper digest ACL string. -->
<identity>user:password</identity>
</zookeeper>
Смотрите также
use_minimalistic_part_header_in_zookeeper
Способ хранения заголовков кусков данных в ZooKeeper.
Параметр применяется только к семейству таблиц MergeTree
. Его можно установить:
-
Глобально в разделе merge_tree файла
config.xml
.ClickHouse использует этот параметр для всех таблиц на сервере. Вы можете изменить настройку в любое время. Существующие таблицы изменяют свое поведение при изменении параметра.
-
Для каждой отдельной таблицы.
При создании таблицы укажите соответствующую настройку движка. Поведение существующей таблицы с установленным параметром не изменяется даже при изменении глобального параметра.
Возможные значения
- 0 — функциональность выключена.
- 1 — функциональность включена.
Если use_minimalistic_part_header_in_zookeeper = 1
, то реплицированные таблицы хранят заголовки кусков данных в компактном виде, используя только одну znode
. Если таблица содержит много столбцов, этот метод хранения значительно уменьшает объём данных, хранящихся в Zookeeper.
!!! attention "Внимание"
После того как вы установили use_minimalistic_part_header_in_zookeeper = 1
, невозможно откатить ClickHouse до версии, которая не поддерживает этот параметр. Будьте осторожны при обновлении ClickHouse на серверах в кластере. Не обновляйте все серверы сразу. Безопаснее проверять новые версии ClickHouse в тестовой среде или только на некоторых серверах кластера.
Заголовки частей данных, ранее сохранённые с этим параметром, не могут быть восстановлены в их предыдущем (некомпактном) представлении.
Значение по умолчанию: 0.
disable_internal_dns_cache
Отключает внутренний кеш DNS записей. Используется при эксплуатации ClickHouse в системах с часто меняющейся инфраструктурой, таких как Kubernetes.
Значение по умолчанию: 0.
dns_cache_update_period
Период обновления IP адресов у записей во внутреннем DNS кеше ClickHouse (в секундах). Обновление выполняется асинхронно, отдельным системным потоком.
Значение по умолчанию: 15.