Изменение настроек ClickHouse® на уровне сервера
Вы можете задать настройки ClickHouse® на уровне сервера
-
С помощью интерфейсов Yandex Cloud. Так можно задать только настройки ClickHouse®, доступные в Yandex Cloud.
-
С помощью SQL-запросов. Так задаются настройки для таблиц MergeTree. Вы можете:
- задать настройки при создании таблицы;
- задать настройки существующей таблицы;
- вернуть значения по умолчанию для настроек существующей таблицы.
Задать настройки ClickHouse® через интерфейсы Yandex Cloud
Изменение некоторых настроек сервера приводит к перезапуску серверов ClickHouse® на хостах кластера.
Примечание
Значение настройки Max server memory usage
Чтобы задать настройки ClickHouse®:
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Выберите кластер и нажмите кнопку Редактировать на панели сверху.
- В блоке Настройки СУБД нажмите кнопку Настроить.
- Задайте настройки ClickHouse®.
- Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы задать настройки ClickHouse®:
-
Посмотрите полный список настроек, установленных для кластера:
yc managed-clickhouse cluster get <имя_или_идентификатор_кластера> --full
-
Посмотрите описание команды CLI для изменения конфигурации кластера:
yc managed-clickhouse cluster update-config --help
-
Установите нужные значения параметров:
yc managed-clickhouse cluster update-config <имя_или_идентификатор_кластера> \ --set <имя_параметра_1>=<значение_1>,...
Чтобы задать настройки ClickHouse®:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
В описании кластера Managed Service for ClickHouse®, в блоке
clickhouse.config
, измените значения параметров:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... clickhouse { ... config { # Общие настройки СУБД ... merge_tree { # Настройки движка MergeTree ... } kafka { # Общие настройки получения данных из Apache Kafka ... } kafka_topic { # Настройки отдельного топика Apache Kafka ... } rabbit_mq { # Настройки получения данных из RabbitMQ username = "<имя_пользователя>" password = "<пароль>" } compression { # Настройки сжатия данных method = "<метод_сжатия>" min_part_size = <размер_куска_данных> min_part_size_ratio = <отношение_размеров> } graphite_rollup { # Настройки движка GraphiteMergeTree для прореживания, агрегирования и усреднения (rollup) данных Graphite. ... } } ... } ... }
Где:
method
— метод сжатия:LZ4
илиZSTD
.min_part_size
— минимальный размер куска данных таблицы в байтах.min_part_size_ratio
— отношение размера наименьшего куска данных в таблице к полному размеру таблицы.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.clickhouse.config.<настройка_1>,...,configSpec.clickhouse.config.<настройка_N>", "configSpec": { "clickhouse": { "config": { "<настройка_1>": "<значение_1>", "<настройка_2>": "<значение_2>", ... "<настройка_N>": "<значение_N>" } } } }'
Где:
updateMask
— перечень изменяемых параметров в одну строку через запятую.configSpec.clickhouse.config
— настройки ClickHouse® на уровне сервера. Возможные параметры и их значения см. в описании метода.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask
(в виде массива строкpaths[]
).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "configSpec.clickhouse.config.<настройка_1>", "configSpec.clickhouse.config.<настройка_2>", ... "configSpec.clickhouse.config.<настройка_N>" ] }, "config_spec": { "clickhouse": { "config": { "<настройка_1>": "<значение_1>", "<настройка_2>": "<значение_2>", ... "<настройка_N>": "<значение_N>" } } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.Update
Где:
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
.config_spec.clickhouse.config
— настройки ClickHouse® на уровне сервера. Возможные параметры и их значения см. в описании метода.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Проверить настройки таблицы MergeTree
-
Подключитесь к базе данных в кластере.
-
Чтобы посмотреть все настройки, заданные на уровне таблицы, выполните запрос:
SHOW CREATE TABLE <название_таблицы>;
Важно
Выдача
SHOW CREATE TABLE
содержит только переопределенные пользователем настройки. Если заданное пользователем значение настройки совпадает со значением по умолчанию, эта настройка тоже отображается в выдаче.
Задать настройки таблиц MergeTree с помощью SQL-запросов
Изменить настройки при создании таблицы MergeTree
-
Подключитесь к базе данных в кластере.
-
Создайте таблицу. Чтобы задать ее настройки, перечислите их через запятую в параметре
SETTINGS
:CREATE TABLE <название_таблицы> ( <описание_колонок_таблицы> ) ENGINE = MergeTree PRIMARY KEY (<столбец_или_группа_столбцов>) SETTINGS <название_настройки> = <значение_настройки>, <название_настройки> = <значение_настройки>;
Пример запроса для настроек merge_with_ttl_timeout
и merge_with_recompression_ttl_timeout :CREATE TABLE <имя_таблицы> ( user_id UInt32, message String, ) ENGINE = MergeTree PRIMARY KEY (user_id) SETTINGS merge_with_ttl_timeout = 15000, merge_with_recompression_ttl_timeout = 15000;
Подробнее о создании таблиц MergeTree см. в документации ClickHouse®
Изменить настройки существующей таблицы MergeTree
-
Подключитесь к базе данных в кластере.
-
Чтобы изменить настройки для существующей таблицы, выполните запрос:
ALTER TABLE <имя_таблицы> MODIFY SETTING <название_настройки> = <новое_значение_настройки>;
Вы можете изменить несколько настроек в одном запросе. Для этого перечислите пары
<название_настройки> = <новое_значение_настройки>
через запятую.
Вернуть настройку таблицы MergeTree к значению по умолчанию
-
Подключитесь к базе данных в кластере.
-
Чтобы вернуть настройку существующей таблицы к значению по умолчанию, выполните запрос:
ALTER TABLE <имя_таблицы> RESET SETTING <название_настройки>;
Вы можете вернуть к значениям по умолчанию несколько настроек в одном запросе. Для этого перечислите названия настроек через запятую.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc