Управление группами шардов в кластере ClickHouse®
Вы можете сгруппировать несколько шардов кластера ClickHouse® в группу шардов и затем размещать таблицы в этой группе.
Получить список групп шардов в кластере
- В консоли управления
выберите каталог, в котором находится кластер. - Перейдите
в сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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.cloud.yandex.net/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.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.ListShardGroupsИдентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Получить детальную информацию о группе шардов
- В консоли управления
выберите каталог, в котором находится кластер. - Перейдите
в сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
- Выберите группу шардов для просмотра детальной информации о ней.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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.cloud.yandex.net/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.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.GetShardGroupИдентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать группу шардов
- В консоли управления
выберите каталог, в котором находится кластер. - Перейдите
в сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
- Нажмите кнопку Создать группу шардов.
- Заполните поля формы и нажмите кнопку Применить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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_v2" "<имя_кластера>" { ... 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_v2" "<имя_кластера>" {
...
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.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>/shardGroups' \ --data '{ "shardGroupName": "<имя_группы_шардов>", "description": "<описание_группы_шардов>", "shardNames": [ "<шард_1>", "<шард_2>", ... "<шард_N>" ], "externalShards" [ { "name": "<внешний_шард_1>", "weight": <вес_шарда_при_записи_данных>, "replicas": [ { "host": "<FQDN_хоста>", "port": "<порт>", "secure": <использовать_SSL_соединение>, "user": "<имя_пользователя>", "password": "<пароль>", "priority": <приоритет_хоста> }, { <параметры_хоста_2> }, ... { <параметры_хоста_N> } ] }, { <параметры_внешнего_шарда_2> }, ... { <параметры_внешнего_шарда_N> } ] }'Где:
-
shardGroupName— название группы шардов. -
description— описание группы шардов. -
shardNames— список шардов, которые нужно включить в создаваемую группу. -
externalShards— список внешних шардов, которые нужно включить в создаваемую группу. Внешний шард — это шард в другом кластере Managed Service for ClickHouse® или пользовательской инсталляции ClickHouse®. Каждый элемент соответствует отдельному шарду и имеет следующую структуру:-
name— имя шарда. -
weight— вес шарда в группе.По умолчанию каждому внешнему шарду назначается вес
100. Если веса каких-либо шардов (как внешних, так и самого кластера) в группе отличаются от100, данные внутри группы шардов будут распределены между шардами в соответствии с весами.Для расчета приоритета шарда в группе при распределении данных вес каждого шарда делится на суммарный вес всех шардов, входящих в группу. Например, если у внешнего шарда вес
100, а у шарда кластера —300, то у первого шарда приоритет1/4, а у второго —3/4. Чем выше приоритет, тем больше данных окажется на шарде.Подробнее в документации ClickHouse®
. -
replicas— настройки хостов шарда:host— FQDN или IP-адрес хоста.port— порт для подключения к ClickHouse®.secure— использование шифрованного SSL/TLS-соединения при подключении к хосту:trueилиfalse.user,password— имя пользователя и пароль для доступа к БД ClickHouse®.priority— приоритет хоста для балансировки подключений к шарду. Значение по умолчанию —0. Чем меньше значение, тем выше приоритет при выборе хоста для подключения к шарду.
-
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите 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>" ], "external_shards" [ { "name": "<внешний_шард_1>", "weight": <вес_шарда_при_записи_данных>, "replicas": [ { "host": "<FQDN_хоста>", "port": <порт>, "secure": <использовать_SSL_соединение>, "user": "<имя_пользователя>", "password": "<пароль>", "priority": <приоритет_хоста> }, { <параметры_хоста_2> }, ... { <параметры_хоста_N> } ] }, { <параметры_внешнего_шарда_2> }, ... { <параметры_внешнего_шарда_N> } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.CreateShardGroupГде:
-
shard_group_name— название группы шардов. -
description— описание группы шардов. -
shard_names— список шардов, которые нужно включить в создаваемую группу. -
external_shards— список внешних шардов, которые нужно включить в создаваемую группу. Внешний шард — это шард в другом кластере Managed Service for ClickHouse® или пользовательской инсталляции ClickHouse®. Каждый элемент соответствует отдельному шарду и имеет следующую структуру:-
name— имя шарда. -
weight— вес шарда в группе.По умолчанию каждому внешнему шарду назначается вес
100. Если веса каких-либо шардов (как внешних, так и самого кластера) в группе отличаются от100, данные внутри группы шардов будут распределены между шардами в соответствии с весами.Для расчета приоритета шарда в группе при распределении данных вес каждого шарда делится на суммарный вес всех шардов, входящих в группу. Например, если у внешнего шарда вес
100, а у шарда кластера —300, то у первого шарда приоритет1/4, а у второго —3/4. Чем выше приоритет, тем больше данных окажется на шарде.Подробнее в документации ClickHouse®
. -
replicas— настройки хостов шарда:host— FQDN или IP-адрес хоста.port— порт для подключения к ClickHouse®.secure— использование шифрованного SSL/TLS-соединения при подключении к хосту:trueилиfalse.user,password— имя пользователя и пароль для доступа к БД ClickHouse®.priority— приоритет хоста для балансировки подключений к шарду. Значение по умолчанию —0. Чем ниже значение, тем выше приоритет при выборе хоста для подключения к шарду.
-
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить группу шардов
- В консоли управления
выберите каталог, в котором находится кластер. - Перейдите
в сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
- Нажмите на значок
для нужной группы шардов и выберите пункт Редактировать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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_v2" "<имя_кластера>" { ... 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_v2" "<имя_кластера>" {
...
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.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>/shardGroups/<имя_группы_шардов>' \ --data '{ "updateMask": "description,shardNames,externalShards", "description": "<описание_группы_шардов>", "shardNames": [ "<шард_1>", "<шард_2>", ... "<шард_N>" ], "externalShards" [ { "name": "<внешний_шард_1>", "weight": <вес_шарда_при_записи_данных>, "replicas": [ { "host": "<FQDN_хоста>", "port": "<порт>", "secure": <использовать_SSL_соединение>, "user": "<имя_пользователя>", "password": "<пароль>", "priority": <приоритет_хоста> }, { <параметры_хоста_2> }, ... { <параметры_хоста_N> } ] }, { <параметры_внешнего_шарда_2> }, ... { <параметры_внешнего_шарда_N> } ] }'Где:
-
updateMask— перечень изменяемых параметров в одну строку через запятую. -
description— новое описание группы шардов. -
shardNames— новый список шардов кластера, которые нужно включить в группу. Чтобы узнать имена шардов, получите их список в кластере. Этот список заменит собой текущий: убедитесь, что вы включили в новый список все необходимые шарды. -
externalShards— список внешних шардов с измененными параметрами, которые нужно включить в группу. Внешний шард — это шард в другом кластере Managed Service for ClickHouse® или пользовательской инсталляции ClickHouse®. Каждый элемент соответствует отдельному шарду и имеет следующую структуру:-
name— имя шарда. -
weight— вес шарда в группе.По умолчанию каждому внешнему шарду назначается вес
100. Если веса каких-либо шардов (как внешних, так и самого кластера) в группе отличаются от100, данные внутри группы шардов будут распределены между шардами в соответствии с весами.Для расчета приоритета шарда в группе при распределении данных вес каждого шарда делится на суммарный вес всех шардов, входящих в группу. Например, если у внешнего шарда вес
100, а у шарда кластера —300, то у первого шарда приоритет1/4, а у второго —3/4. Чем выше приоритет, тем больше данных окажется на шарде.Подробнее в документации ClickHouse®
. -
replicas— настройки хостов шарда:host— FQDN или IP-адрес хоста.port— порт для подключения к ClickHouse®.secure— использование шифрованного SSL/TLS-соединения при подключении к хосту:trueилиfalse.user,password— имя пользователя и пароль для доступа к БД ClickHouse®.priority— приоритет хоста для балансировки подключений к шарду. Значение по умолчанию —0. Чем ниже значение, тем выше приоритет при выборе хоста для подключения к шарду.
-
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите 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", "external_shards" ] }, "description": "<описание_группы_шардов>", "shard_names": [ "<шард_1>", "<шард_2>", ... "<шард_N>" ], "external_shards" [ { "name": "<внешний_шард_1>", "weight": <вес_шарда_при_записи_данных>, "replicas": [ { "host": "<FQDN_хоста>", "port": <порт>, "secure": <использовать_SSL_соединение>, "user": "<имя_пользователя>", "password": "<пароль>", "priority": <приоритет_хоста> }, { <параметры_хоста_2> }, ... { <параметры_хоста_N> } ] }, { <параметры_внешнего_шарда_2> }, ... { <параметры_внешнего_шарда_N> } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.UpdateShardGroupГде:
-
update_mask— перечень изменяемых параметров в виде массива строкpaths[]. -
description— новое описание группы шардов. -
shard_names— новый список шардов кластера, которые нужно включить в группу. Чтобы узнать имена шардов, получите их список в кластере. Этот список заменит собой текущий: убедитесь, что вы включили в новый список все необходимые шарды. -
external_shards— список внешних шардов с измененными параметрами, которые нужно включить в группу. Внешний шард — это шард в другом кластере Managed Service for ClickHouse® или пользовательской инсталляции ClickHouse®. Каждый элемент соответствует отдельному шарду и имеет следующую структуру:-
name— имя шарда. -
weight— вес шарда в группе.По умолчанию каждому внешнему шарду назначается вес
100. Если веса каких-либо шардов (как внешних, так и самого кластера) в группе отличаются от100, данные внутри группы шардов будут распределены между шардами в соответствии с весами.Для расчета приоритета шарда в группе при распределении данных вес каждого шарда делится на суммарный вес всех шардов, входящих в группу. Например, если у внешнего шарда вес
100, а у шарда кластера —300, то у первого шарда приоритет1/4, а у второго —3/4. Чем выше приоритет, тем больше данных окажется на шарде.Подробнее в документации ClickHouse®
. -
replicas— настройки хостов шарда:host— FQDN или IP-адрес хоста.port— порт для подключения к ClickHouse®.secure— использование шифрованного SSL/TLS-соединения при подключении к хосту:trueилиfalse.user,password— имя пользователя и пароль для доступа к БД ClickHouse®.priority— приоритет хоста для балансировки подключений к шарду. Значение по умолчанию —0. Чем ниже значение, тем выше приоритет при выборе хоста для подключения к шарду.
-
Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Удалить группу шардов
Удаление группы шардов не затрагивает входящие в нее шарды — они остаются в кластере.
Таблицы, созданные поверх удаляемой группы, остаются, но становятся неработоспособными: попытки выполнить запрос к ним приведут к ошибкам. Однако такие таблицы можно удалить до или после удаления группы шардов.
- В консоли управления
выберите каталог, в котором находится кластер. - Перейдите
в сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Группы шардов.
- Нажмите на значок
для нужной группы шардов и выберите пункт Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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_v2" "<имя_кластера>" {
...
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.cloud.yandex.net/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.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.DeleteShardGroupИдентификатор кластера можно запросить со списком кластеров в каталоге, а имя группы шардов — со списком групп в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc