Управление группами шардов в кластере ClickHouse®
Вы можете сгруппировать несколько шардов кластера ClickHouse® в группу шардов и затем размещать таблицы в этой группе.
Получить список групп шардов в кластере
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список групп шардов в кластере, выполните команду:
yc managed-clickhouse shard-groups list \
--cluster-name=<имя_кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.ListShardGroups и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/shardGroups'
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.ListShardGroups и выполните запрос, например, с помощью gRPCurl
: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": "<идентификатор_кластера>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.ListShardGroups
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Получить детальную информацию о группе шардов
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
- Выберите группу шардов для просмотра детальной информации о ней.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить детальную информацию о группе шардов в кластере, выполните команду:
yc managed-clickhouse shard-groups get \
--cluster-name=<имя_кластера> \
--name=<имя_группы_шардов>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.GetShardGroup и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/shardGroups/<имя_группы_шардов>'
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.GetShardGroup и выполните запрос, например, с помощью gRPCurl
: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": "<идентификатор_кластера>", "shard_group_name": "<имя_группы_шардов>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.GetShardGroup
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать группу шардов
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
- Нажмите кнопку Создать группу шардов.
- Заполните поля формы и нажмите кнопку Применить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать группу шардов в кластере, выполните команду:
yc managed-clickhouse shard-groups create \
--cluster-name=<имя_кластера> \
--name=<имя_группы_шардов> \
--description=<описание_группы_шардов> \
--shards=<список_имен_шардов>
Где --shards
— список имен шардов, которые нужно включить в группу.
Имя кластера можно запросить со списком кластеров в каталоге.
Имена шардов можно запросить со списком шардов в кластере.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера Managed Service for ClickHouse® блок описания группы шардов
shard_group
.resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... shard_group { name = "<имя_группы_шардов>" description = "<необязательное_описание_группы_шардов>" shard_names = [ # Список шардов, входящих в группу "<имя_шарда_1>", ... "<имя_шарда_N>" ] } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы 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.CreateShardGroup и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/shardGroups' \ --data '{ "shardGroupName": "<имя_группы_шардов>", "description": "<описание_группы_шардов>", "shardNames": [ "<шард_1>", "<шард_2>", ... "<шард_N>" ] }'
Где:
shardGroupName
— название группы шардов.description
— описание группы шардов.shardNames
— список шардов, которые нужно включить в создаваемую группу.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.CreateShardGroup и выполните запрос, например, с помощью gRPCurl
: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": "<идентификатор_кластера>", "shard_group_name": "<имя_группы_шардов>", "description": "<описание_группы_шардов>", "shard_names": [ "<шард_1>", "<шард_2>", ... "<шард_N>" ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.CreateShardGroup
Где:
shard_group_name
— название группы шардов.description
— описание группы шардов.shard_names
— список шардов, которые нужно включить в создаваемую группу.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить группу шардов
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
- Нажмите на значок
для нужной группы шардов и выберите пункт Редактировать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить группу шардов в кластере, выполните команду:
yc managed-clickhouse shard-groups update \
--cluster-name=<имя_кластера> \
--name=<имя_группы_шардов> \
--description=<новое_описание_группы_шардов> \
--shards=<новый_список_имен_шардов>
Где --shards
— новый список имен шардов, которые нужно включить в группу.
Эта команда заменяет существующий список шардов в группе новым, который был передан команде в параметре --shards
. Перед выполнением команды убедитесь, что вы включили в новый список все необходимые шарды.
Имя кластера можно запросить со списком кластеров в каталоге.
Имя группы шардов можно запросить со списком групп шардов в кластере.
Имена шардов можно запросить со списком шардов в кластере.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Измените в описании кластера Managed Service for ClickHouse® блок
shard_group
с нужной группой шардов:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... shard_group { name = "<новое_имя_группы_шардов>" description = "<новое_описание_группы_шардов>" shard_names = [ # Новый список входящих в группу шардов "<имя_шарда_1>", ... "<имя_шарда_N>" ] } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы 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.updateShardGroup и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/shardGroups/<имя_группы_шардов>' \ --data '{ "updateMask": "description,shardNames", "description": "<описание_группы_шардов>", "shardNames": [ "<шард_1>", "<шард_2>", ... "<шард_N>" ] }'
Где:
updateMask
— перечень изменяемых параметров в одну строку через запятую.description
— новое описание группы шардов.shardNames
— новый список шардов, которые нужно включить в группу. Чтобы узнать имена шардов, получите их список в кластере. Этот список заменит собой текущий: убедитесь, что вы включили в новый список все необходимые шарды.
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.UpdateShardGroup и выполните запрос, например, с помощью 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": "<идентификатор_кластера>", "shard_group_name": "<имя_группы_шардов>", "update_mask": { "paths": [ "description", "shard_names" ] }, "description": "<описание_группы_шардов>", "shard_names": [ "<шард_1>", "<шард_2>", ... "<шард_N>" ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.UpdateShardGroup
Где:
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
.description
— новое описание группы шардов.shard_names
— новый список шардов, которые нужно включить в группу. Чтобы узнать имена шардов, получите их список в кластере. Этот список заменит собой текущий: убедитесь, что вы включили в новый список все необходимые шарды.
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Удалить группу шардов
Удаление группы шардов не затрагивает входящие в нее шарды — они остаются в кластере.
Таблицы, созданные поверх удаляемой группы, остаются, но становятся неработоспособными: попытки выполнить запрос к ним приведут к ошибкам. Однако такие таблицы можно удалить до или после удаления группы шардов.
- В консоли управления
перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
- Нажмите на значок
для нужной группы шардов и выберите пункт Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить группу шардов в кластере, выполните команду:
yc managed-clickhouse shard-groups delete \
--cluster-name=<имя_кластера> \
--name=<имя_группы_шардов>
Имя кластера можно запросить со списком кластеров в каталоге.
Имя группы шардов можно запросить со списком групп шардов в кластере.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите из описания кластера Managed Service for ClickHouse® блок описания нужной группы шардов
shard_group
. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yes
и нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
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.DeleteShardGroup и выполните запрос, например, с помощью cURL
:curl \ --request DELETE \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/shardGroups/<имя_группы_шардов>'
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.DeleteShardGroup и выполните запрос, например, с помощью gRPCurl
: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": "<идентификатор_кластера>", "shard_group_name": "<имя_группы_шардов>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.DeleteShardGroup
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc