Изменение настроек ClickHouse® на уровне запроса
- Получить список настроек ClickHouse® на уровне запроса
- Задать настройки ClickHouse® через интерфейсы Yandex Cloud
- Задать настройки ClickHouse® в учетной записи пользователя
- Задать настройки ClickHouse® в профиле настроек
- Задать настройки ClickHouse® в сессии
- Задать настройки ClickHouse® при подключении к БД через командную строку
Вы можете задать настройки ClickHouse® на уровне запроса
-
С помощью интерфейсов Yandex Cloud. Так можно задать только настройки ClickHouse®, доступные в Yandex Cloud.
-
С помощью SQL-запросов. Так можно задать любые настройки ClickHouse® на уровне запроса. Способ, как установить настройки, зависит от их типа:
-
Настройки пользователей. В SQL-запросах
CREATE USER
иALTER USER
вы можете передать настройки в условииSETTINGS
. В результате настройки применятся только к указанному пользователю.Чтобы воспользоваться этим способом, при создании или изменении кластера включите опцию Управление пользователями через SQL. После этого нельзя будет управлять пользователями через интерфейсы Yandex Cloud: управление пользователями через SQL невозможно выключить.
-
Настройки на уровне профиля. В ClickHouse® профиль настроек
содержит их значения и ограничения, а также список ролей и пользователей, к которым применяется профиль. Настройки ClickHouse® передаются в SQL-запросахCREATE SETTINGS PROFILE
иALTER SETTINGS PROFILE
.Чтобы воспользоваться этим способом, при создании или изменении кластера включите опцию Управление пользователями через SQL.
-
Настройки сессии. Во время сессии можно передать настройки ClickHouse® с помощью SQL-запроса
SET
. Так можно задать настройки в кластере с любой конфигурацией, но они будут действовать только для текущей сессии.Способ подходит не для всех SQL-редакторов: в некоторых из них каждый запрос выполняется в отдельной сессии. Проверьте параметры своего SQL-редактора, прежде чем настраивать сессию.
-
Настройки подключения. Когда вы подключаетесь к базе данных с помощью утилиты clickhouse-client, в команде для подключения можно передать настройки ClickHouse® с помощью флагов. Так можно задать настройки в кластере с любой конфигурацией, но они будут действовать только для установленного подключения.
Вы можете также указать настройки подключения в различных драйверах для ClickHouse® либо передать настройки в виде URL-параметров при отправке запросов HTTP API ClickHouse®. Подробнее об этих способах см. в документации ClickHouse®
.
-
Получить список настроек ClickHouse® на уровне запроса
-
Подключитесь к БД в кластере.
-
Выполните запрос:
SELECT name, description, value FROM system.settings;
Результат содержит названия, описания и значения настроек ClickHouse® на уровне запроса. Результат показывает значения для текущей сессии и пользователя, установившего эту сессию.
Задать настройки ClickHouse® через интерфейсы Yandex Cloud
Чтобы задать настройки ClickHouse®:
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера, затем перейдите в раздел Пользователи.
- В строке с именем нужного пользователя нажмите кнопку
и выберите Настроить. - В списке Дополнительные настройки разверните settings и задайте настройки ClickHouse®.
- Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы задать настройки ClickHouse®:
-
Посмотрите полный список настроек, установленных для пользователя:
yc managed-clickhouse user get <имя_пользователя> <имя_или_идентификатор_кластера>
-
Посмотрите описание команды CLI для изменения настроек пользователя:
yc managed-clickhouse user update --help
-
Установите нужные значения параметров:
yc managed-clickhouse user update <имя_пользователя> <имя_или_идентификатор_кластера> \ --settings="<имя_параметра_1>=<значение_1>,<имя_параметра_2>=<значение_2>,..."
Чтобы задать настройки ClickHouse®:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
В описании пользователя кластера Managed Service for ClickHouse®, в блоке
settings
, измените значения параметров:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... user { name = <имя_пользователя> ... settings { <имя_параметра1> = <значение1> <имя_параметра2> = <значение2> ... } } ... }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы 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-токен>"
-
Воспользуйтесь методом User.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/<идентификатор_кластера>/users/<имя_пользователя>' \ --data '{ "updateMask": "<перечень_изменяемых_настроек>", "settings": { <настройки_ClickHouse®> } }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую. -
settings
— нужные настройки ClickHouse® с новыми значениями.
Идентификатор кластера можно запросить со списком кластеров в каталоге. Имя пользователя можно запросить со списком пользователей в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом UserService/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/user_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "user_name": "<имя_пользователя>", "update_mask": { "paths": [ <перечень_изменяемых_настроек> ] }, "settings": { <настройки_ClickHouse®> } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.UserService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
. -
settings
— нужные настройки ClickHouse® с новыми значениями.
Идентификатор кластера можно запросить со списком кластеров в каталоге. Имя пользователя можно запросить со списком пользователей в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Задать настройки ClickHouse® в учетной записи пользователя
Передать настройки ClickHouse® можно при добавлении нового пользователя или изменении настроек уже созданного пользователя.
Добавить нового пользователя с настройками ClickHouse®
-
Подключитесь к БД в кластере под учетной записью
admin
. -
Создайте пользователя:
CREATE USER <имя_пользователя> IDENTIFIED WITH sha256_password BY '<пароль_пользователя>' SETTINGS <список_настроек_ClickHouse®>;
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
Длина пароля от 8 до 128 символов.
В параметре
SETTINGS
помимо значения настройки можно указать ее минимальное и максимальное значение. Пример для настройки idle_connection_timeout :CREATE USER <имя_пользователя> IDENTIFIED WITH sha256_password BY 'password' SETTINGS idle_connection_timeout = 60 MIN 5 MAX 120;
Подробнее о создании пользователей см. в документации ClickHouse®
.
Изменить настройки ClickHouse® у пользователя
-
Подключитесь к БД в кластере под учетной записью
admin
. -
Измените учетную запись пользователя:
ALTER USER <имя_пользователя> SETTINGS <список_настроек_ClickHouse®>;
Подробнее об изменении учетных записей см. в документации ClickHouse®
.
Задать настройки ClickHouse® в профиле настроек
Передать настройки ClickHouse® можно при создании или изменении профиля настроек.
Создать профиль с настройками ClickHouse®
-
Подключитесь к БД в кластере под учетной записью
admin
. -
Создайте профиль настроек:
CREATE SETTINGS PROFILE <название_профиля_настроек> SETTINGS <список_настроек_ClickHouse®>;
В параметре
SETTINGS
помимо значения настройки можно указать ее минимальное и максимальное значение. Пример для настройки idle_connection_timeout :CREATE SETTINGS PROFILE <название_профиля_настроек> SETTINGS idle_connection_timeout = 60 MIN 5 MAX 120;
Профиль настроек можно привязать к пользователю:
CREATE SETTINGS PROFILE <название_профиля_настроек> SETTINGS <список_настроек_ClickHouse®> TO <имя_пользователя>;
Подробнее о создании профилей настроек см. в документации ClickHouse®
.
Изменить настройки ClickHouse® в профиле настроек
-
Подключитесь к БД в кластере под учетной записью
admin
. -
Измените профиль настроек:
ALTER SETTINGS PROFILE <название_профиля_настроек> SETTINGS <список_настроек_ClickHouse®>;
В этом запросе можно задать граничные значения настроек и привязать профиль к пользователю. Подробнее об изменении профилей настроек см. в документации ClickHouse®
.
Задать настройки ClickHouse® в сессии
-
Подключитесь к БД в кластере.
-
Выполните запрос:
SET <имя_пользователя> SETTINGS <список_настроек_ClickHouse®>;
Примененные настройки будут действовать только во время открытой сессии.
-
Убедитесь, что настройки применились:
SELECT value FROM system.settings;
Чтобы посмотреть значение одной настройки, выполните запрос:
SELECT value FROM system.settings WHERE name='<название_настройки>';
Задать настройки ClickHouse® при подключении к БД через командную строку
-
Установите зависимости, необходимые для подключения к БД.
-
Посмотрите описание команды для подключения к БД:
clickhouse-client --help
Большинство флагов в выводе команды — это расширенные настройки ClickHouse®.
-
Выберите флаги с нужными настройками. Для этого соотнесите названия флагов с названиями настроек ClickHouse®
. -
Укажите выбранные флаги в команде на подключение к БД:
-
Подключение без SSL:
clickhouse-client --host <FQDN_любого_хоста_ClickHouse®> \ --user <имя_пользователя> \ --database <имя_БД> \ --port 9000 \ --ask-password \ <флаги_с_настройками_ClickHouse®>
-
Подключение с SSL:
clickhouse-client --host <FQDN_любого_хоста_ClickHouse®> \ --secure \ --user <имя_пользователя> \ --database <имя_БД> \ --port 9440 \ --ask-password \ <флаги_с_настройками_ClickHouse®>
-
Пример подключения без SSL с настройкой idle_connection_timeout
:clickhouse-client --host rc1d-***.mdb.yandexcloud.net \ --user user1 \ --database db1 \ --port 9440 \ --ask-password \ --idle_connection_timeout 60
-
-
Убедитесь, что настройки применились:
SELECT value FROM system.settings;
Чтобы посмотреть значение одной настройки, выполните запрос:
SELECT value FROM system.settings WHERE name='<название_настройки>';
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc