Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for ClickHouse®
  • Начало работы
    • Все инструкции
      • Информация об имеющихся кластерах
      • Создание кластера
      • Изменение настроек кластера
      • Обновление версии ClickHouse®
      • Остановка и запуск кластера
        • Управление хостами ClickHouse®
        • Управление хостами ZooKeeper
        • Миграция хостов в другую зону доступности
      • Управление резервными копиями
      • Удаление кластера
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Yandex Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Получить список хостов в кластере
  • Создать хост
  • Изменить хост
  • Перезапустить хост
  • Удалить хост
  1. Пошаговые инструкции
  2. Кластеры
  3. Управление хостами
  4. Управление хостами ClickHouse®

Управление хостами ClickHouse®

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Получить список хостов в кластере
  • Создать хост
  • Изменить хост
  • Перезапустить хост
  • Удалить хост

Вы можете выполнить следующие действия над хостами ClickHouse®:

  • получить список хостов в кластере;
  • создать хост;
  • изменить настройки ClickHouse® для хоста;
  • перезапустить хост;
  • удалить хост.

О том, как перенести хосты ClickHouse® в другую зону доступности, читайте в инструкции.

Важно

Если вы создали кластер без поддержки ClickHouse® Keeper, то прежде чем добавлять новые хосты в любой из шардов, добавьте не менее трех хостов ZooKeeper.

Получить список хостов в кластереПолучить список хостов в кластере

Консоль управления
CLI
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера, затем выберите вкладку Хосты.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы получить список хостов в кластере, выполните команду:

yc managed-clickhouse host list \
   --cluster-name=<имя_кластера>
+----------------------------+--------------+---------+--------+---------------+
|            NAME            |  CLUSTER ID  |  ROLE   | HEALTH |    ZONE ID    |
+----------------------------+--------------+---------+--------+---------------+
| rc1b...mdb.yandexcloud.kz | c9qp71dk1... | MASTER  | ALIVE  | ru-central1-b |
| rc1a...mdb.yandexcloud.kz | c9qp71dk1... | REPLICA | ALIVE  | ru-central1-a |
+----------------------------+--------------+---------+--------+---------------+

Имя кластера можно запросить со списком кластеров в каталоге.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.ListHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request GET \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts'
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.ListHosts и выполните запрос, например, с помощью 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.ListHosts
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Создать хостСоздать хост

Количество хостов в кластерах Managed Service for ClickHouse® ограничено квотами на количество CPU и объем памяти, которые доступны кластерам БД в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты и найдите блок Managed Databases.

С помощью CLI, Terraform и API можно создать сразу несколько хостов в кластере.

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.

  2. Нажмите на имя нужного кластера и перейдите на вкладку Хосты.

  3. Нажмите кнопку Создать хост.

  4. Укажите параметры хоста:

    • Зону доступности.
    • Подсеть (если нужной подсети в списке нет, создайте ее).
    • Выберите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
    • Имя шарда.
    • Выберите опцию Копировать схему данных, чтобы скопировать схему со случайной реплики на новый хост.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы создать один или несколько хостов:

  1. Запросите список подсетей кластера, чтобы выбрать подсеть для нового хоста:

    yc vpc subnet list
    

    Результат:

    +-----------+-----------+------------+---------------+------------------+
    |     ID    |   NAME    | NETWORK ID |     ZONE      |      RANGE       |
    +-----------+-----------+------------+---------------+------------------+
    | b0cl69... | default-d | enp6rq7... | ru-central1-d | [172.16.0.0/20]  |
    | e2lkj9... | default-b | enp6rq7... | ru-central1-b | [10.10.0.0/16]   |
    | e9b0ph... | a-2       | enp6rq7... | ru-central1-a | [172.16.32.0/20] |
    | e9b9v2... | default-a | enp6rq7... | ru-central1-a | [172.16.16.0/20] |
    +-----------+-----------+------------+---------------+------------------+
    

    Если нужной подсети в списке нет, создайте ее.

  2. Посмотрите описание команды CLI для создания хостов:

    yc managed-clickhouse hosts add --help
    
  3. Выполните команду создания хостов.

    Укажите в команде один или несколько параметров --host: по одному параметру на каждый хост, который нужно создать.

    Команда для создания одного хоста имеет вид:

    yc managed-clickhouse hosts add \
      --cluster-name=<имя_кластера> \
      --host zone-id=<зона_доступности>,`
        `subnet-id=<идентификатор_подсети>,`
        `assign-public-ip=<публичный_доступ_к_хосту>,`
        `shard-name=<имя_шарда>,`
        `type=clickhouse
    

    Где assign-public-ip — доступность хоста из интернета по публичному IP-адресу: true или false.

    Чтобы скопировать схему данных со случайной реплики на новый хост, укажите необязательный параметр --copy-schema.

    Managed Service for ClickHouse® запустит операцию создания хостов.

    Идентификатор подсети необходимо указать, если в зоне доступности больше одной подсети, в противном случае Managed Service for ClickHouse® автоматически выберет единственную подсеть. Имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Добавьте к описанию кластера Managed Service for ClickHouse® один или несколько блоков host: по одному блоку на каждый хост, который нужно создать.

    Единичный блок host имеет вид:

    resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
      ...
      host {
        type             = "CLICKHOUSE"
        zone             = "<зона_доступности>"
        subnet_id        = "<идентификатор_подсети>"
        assign_public_ip = <публичный_доступ_к_хосту>
      }
    }
    

    Где assign_public_ip — доступность хоста из интернета по публичному IP-адресу: true или false.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.AddHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts:batchCreate' \
        --data '{
                  "hostSpecs": [
                    {
                      "type": "CLICKHOUSE",
                      "zoneId": "<зона_доступности>",
                      "subnetId": "<идентификатор_подсети>",
                      "shardName": "<имя_шарда>",
                      "assignPublicIp": <публичный_доступ_к_хосту>
                    },
                    { <аналогичный_набор_настроек_для_создаваемого_хоста_2> },
                    { ... },
                    { <аналогичный_набор_настроек_для_создаваемого_хоста_N> }
                  ],
                  "copySchema": <копирование_схемы_данных>
                }'
    

    Где:

    • hostSpecs — массив, содержащий настройки создаваемых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:

      • type — тип хоста, всегда CLICKHOUSE для хостов ClickHouse®.
      • zoneId — зона доступности.
      • subnetId — идентификатор подсети.
      • shardName — имя шарда.
      • assignPublicIp — доступность хоста из интернета по публичному IP-адресу: true или false.
    • copySchema — параметр, который определяет, копировать ли схему данных со случайной реплики на создаваемые хосты: true или false.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.AddHosts и выполните запрос, например, с помощью 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": "<идентификатор_кластера>",
                "host_specs": [
                    {
                        "type": "CLICKHOUSE",
                        "zone_id": "<зона_доступности>",
                        "subnet_id": "<идентификатор_подсети>",
                        "shard_name": "<имя_шарда>",
                        "assign_public_ip": <публичный_доступ_к_хосту>
                    },
                    { <аналогичный_набор_настроек_для_создаваемого_хоста_2> },
                    { ... },
                    { <аналогичный_набор_настроек_для_создаваемого_хоста_N> }
                ],
                "copy_schema": <копировать_ли_схему_данных>
            }' \
        mdb.api.yandexcloud.kz:443 \
        yandex.cloud.mdb.clickhouse.v1.ClusterService.AddHosts
    

    Где:

    • host_specs — массив, содержащий настройки создаваемых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:

      • type — тип хоста, всегда CLICKHOUSE для хостов ClickHouse®.
      • zone_id — зона доступности.
      • subnet_id — идентификатор подсети.
      • shard_name — имя шарда.
      • assign_public_ip — доступность хоста из интернета по публичному IP-адресу: true или false.
    • copy_schema — параметр, который определяет, копировать ли схему данных со случайной реплики на создаваемые хосты: true или false.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Важно

Если после создания хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.

Используйте опцию копирования схемы данных только в том случае, когда схема одинакова на всех хостах-репликах кластера.

Изменить хостИзменить хост

Для каждого хоста в кластере Managed Service for ClickHouse® можно изменить настройки публичного доступа.

Консоль управления
CLI
Terraform
REST API
gRPC API

Чтобы изменить параметры хоста в кластере:

  1. Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Хосты.
  3. Нажмите на значок в строке нужного хоста и выберите пункт Редактировать.
  4. Включите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
  5. Нажмите кнопку Сохранить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы изменить параметры хоста, выполните команду:

yc managed-clickhouse host update <имя_хоста> \
  --cluster-name=<имя_кластера> \
  --assign-public-ip=<публичный_доступ_к_хосту>

Где assign-public-ip — доступность хоста из интернета по публичному IP-адресу: true или false.

Имя хоста можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. В блоке host нужного хоста добавьте параметр assign_public_ip или измените его значение.

    resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
      ...
      host {
        ...
        assign_public_ip = <публичный_доступ_к_хосту>
      }
      ...
    }
    

    Где assign_public_ip — доступность хоста из интернета по публичному IP-адресу: true или false.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.UpdateHosts и выполните запрос, например, с помощью cURL:

    Важно

    Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts:batchUpdate' \
        --data '{
                  "updateHostSpecs": [
                    {
                      "hostName": "<имя_хоста>",
                      "updateMask": "assignPublicIp",
                      "assignPublicIp": <публичный_доступ_к_хосту>
                    }
                  ]
                }'
    

    Где updateHostSpecs[] — перечень хостов, которые надо изменить, и их параметров. Структура отдельного элемента:

    • hostName — имя хоста, которое можно запросить со списком хостов в кластере.

    • updateMask — перечень изменяемых параметров в одну строку через запятую.

      В данном случае указан только один параметр: assignPublicIp.

    • assignPublicIp — доступность хоста из интернета по публичному IP-адресу: true или false.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.UpdateHosts и выполните запрос, например, с помощью 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_host_specs": [
                {
                    "host_name": "<имя_хоста>",
                    "update_mask": {
                        "paths": [
                            "assign_public_ip"
                        ]
                    },
                    "assign_public_ip": <публичный_доступ_к_хосту>
                }]
            }' \
        mdb.api.yandexcloud.kz:443 \
        yandex.cloud.mdb.clickhouse.v1.ClusterService.UpdateHosts
    

    Где update_host_specs[] — перечень хостов, которые надо изменить, и их параметров. Структура отдельного элемента:

    • host_name — имя хоста, которое можно запросить со списком хостов в кластере.

    • update_mask — перечень изменяемых параметров в виде массива строк paths[].

      В данном случае указан только один параметр: assign_public_ip.

    • assign_public_ip — доступность хоста из интернета по публичному IP-адресу: true или false.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Важно

Если после изменения хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.

Перезапустить хостПерезапустить хост

Перезапуск хостов может понадобиться, если нужно экстренно устранить такие проблемы, как:

  • перерасход ресурсов;
  • утечка памяти;
  • взаимоблокировка (deadlock) между запросами;
  • зависание операций и внутренних процессов ClickHouse®.

Чтобы перезапустить хост:

Консоль управления
CLI
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
  3. В строке нужного хоста нажмите на значок и выберите пункт Перезагрузить.
  4. Подтвердите перезагрузку хоста.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы перезапустить хост, выполните команду:

yc managed-clickhouse host restart <имя_хоста> \
   --cluster-name=<имя_кластера>

Имя хоста можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.RestartHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts:restartHosts' \
        --data '{
                  "hostNames": [
                    <перечень_имен_хостов>
                  ]
                }'
    

    Где hostNames — массив строк. Каждая строка — имя хоста, который нужно перезапустить. Имена хостов можно запросить со списком хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.RestartHosts и выполните запрос, например, с помощью 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": "<идентификатор_кластера>",
                "host_names": [
                  <перечень_имен_хостов>
                ]
            }' \
        mdb.api.yandexcloud.kz:443 \
        yandex.cloud.mdb.clickhouse.v1.ClusterService.RestartHosts
    

    Где host_names — массив строк. Каждая строка — имя хоста, который нужно перезапустить. Имена хостов можно запросить со списком хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Удалить хостУдалить хост

С помощью CLI, Terraform и API можно удалить сразу несколько хостов из кластера.

Важно

Нельзя удалить хост из кластера или шарда, если достигнут соответствующий лимит на минимальное количество хостов.

Нельзя удалить хосты, на которых размещается ClickHouse® Keeper, если при создании кластера была включена поддержка этого механизма репликации.

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Хосты.
  3. Нажмите на значок в строке нужного хоста и выберите пункт Удалить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы удалить один или несколько хостов из кластера, выполните команду, передав нужные имена хостов. Используйте пробел в качестве разделителя.

Команда для удаления одного хоста имеет вид:

yc managed-clickhouse hosts delete --cluster-name=<имя_кластера> \
  <имя_хоста>

Имена хостов можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Удалите из описания кластера Managed Service for ClickHouse® один или несколько блоков host с типом CLICKHOUSE.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Введите слово yes и нажмите Enter.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.DeleteHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts:batchDelete' \
        --data '{
                  "hostNames": [
                    <перечень_имен_хостов>
                  ]
                }'
    

    Где hostNames — массив строк. Каждая строка — имя хоста, который нужно удалить. Имена хостов можно запросить со списком хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.DeleteHosts и выполните запрос, например, с помощью 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": "<идентификатор_кластера>",
                "host_names": [
                  <перечень_имен_хостов>
                ]
            }' \
        mdb.api.yandexcloud.kz:443 \
        yandex.cloud.mdb.clickhouse.v1.ClusterService.DeleteHosts
    

    Где host_names — массив строк. Каждая строка — имя хоста, который нужно удалить. Имена хостов можно запросить со списком хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.

Была ли статья полезна?

Предыдущая
Остановка и запуск кластера
Следующая
Управление хостами ZooKeeper
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»