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

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

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

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

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

ZooKeeper — это сервис, который обеспечивает координацию и распределение запросов между хостами ClickHouse® для репликации данных. Для обеспечения репликации в кластере Managed Service for ClickHouse® должно быть три или пять хостов ZooKeeper. Такой кластер будет отказоустойчивым.

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

Подробнее о работе хостов ZooKeeper читайте в разделе ZooKeeper.

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

  • получить список хостов в кластере;
  • добавить хосты ZooKeeper;
  • изменить настройки хостов ZooKeeper;
  • перезагрузить хост;
  • перенести хосты 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.net | c9qp71dk1... | MASTER  | ALIVE  | ru-central1-b |
| rc1a...mdb.yandexcloud.net | 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.cloud.yandex.net/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.cloud.yandex.net:443 \
        yandex.cloud.mdb.clickhouse.v1.ClusterService.ListHosts
    

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

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

Добавить хосты ZooKeeperДобавить хосты ZooKeeper

Примечание

В зоне доступности ru-central1-d недоступно использование платформы Intel Broadwell.

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

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

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

  4. Укажите класс хостов.

  5. Задайте настройки хранилища.

  6. При необходимости измените настройки хостов ZooKeeper. Чтобы это сделать, наведите курсор на строку нужного хоста и нажмите на значок .

  7. Чтобы преобразовать нереплицируемые таблицы в реплицируемые, включите настройку Преобразовать нереплицируемые таблицы. Нереплицируемые таблицы на движке семейства MergeTree будут автоматически преобразованы в реплицируемые на движке ReplicatedMergeTree.

    Важно

    После включения этой настройки ее нельзя отключить.

  8. Нажмите кнопку Сохранить изменения.

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

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

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

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

    yc managed-clickhouse cluster add-zookeeper --help
    
  2. Запустите операцию с характеристиками хостов по умолчанию:

    yc managed-clickhouse cluster add-zookeeper <имя_кластера> \
       --host zone-id=ru-central1-d,subnet-name=default-d \
       --host zone-id=ru-central1-a,subnet-name=default-a \
       --host zone-id=ru-central1-b,subnet-name=default-b
    

    Если в сети, в которой расположен кластер, ровно 3 подсети, по одной в каждой зоне доступности, то явно указывать подсети для хостов необязательно: Managed Service for ClickHouse® автоматически распределит хосты по этим подсетям.

    Чтобы преобразовать нереплицируемые таблицы в реплицируемые, добавьте в команду параметр --convert-tables-to-replicated. Нереплицируемые таблицы на движке семейства MergeTree будут автоматически преобразованы в реплицируемые на движке ReplicatedMergeTree.

    Важно

    После включения этой настройки ее нельзя отключить.

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

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

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

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

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

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

  2. Убедитесь, что в конфигурационном файле описаны три подсети — по одной для каждой зоны доступности. При необходимости добавьте недостающие:

    resource "yandex_vpc_network" "<имя_сети>" {
      name = "<имя_сети>"
    }
    
    resource "yandex_vpc_subnet" "<имя_подсети_в_зоне_ru-central1-a>" {
      name           = "<имя_подсети_в_зоне_ru-central1-a>"
      zone           = "ru-central1-a"
      network_id     = yandex_vpc_network.<имя_сети>.id
      v4_cidr_blocks = [ "<диапазон_адресов_подсети_в_зоне_ru-central1-a>" ]
    }
    
    resource "yandex_vpc_subnet" "<имя_подсети_в_зоне_ru-central1-b>" {
      name           = "<имя_подсети_в_зоне_ru-central1-b>"
      zone           = "ru-central1-b"
      network_id     = yandex_vpc_network.<имя_сети>.id
      v4_cidr_blocks = [ "<диапазон_адресов_подсети_в_зоне_ru-central1-b>" ]
    }
    
    resource "yandex_vpc_subnet" "<имя_подсети_в_зоне_ru-central1-d>" {
      name           = "<имя_подсети_в_зоне_ru-central1-d>"
      zone           = "ru-central1-d"
      network_id     = yandex_vpc_network.<имя_сети>.id
      v4_cidr_blocks = [ "<диапазон_адресов_подсети_в_зоне_ru-central1-d>" ]
    }
    
  3. Добавьте к описанию кластера ClickHouse® блок с конфигурацией ZooKeeper и не менее трех блоков host с типом ZOOKEEPER.

    Требования к хостам ZooKeeper:

    • В каждой зоне доступности должно быть минимум по одному хосту.
    • Минимальный класс хоста — b1.medium.
    • Тип диска — network-ssd.
    • Минимальный размер хранилища — 10 гигабайт.
    resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
      ...
      zookeeper {
        resources {
          resource_preset_id = "<класс_хостов>"
          disk_type_id       = "network-ssd"
          disk_size          = <размер_хранилища_ГБ>
        }
      }
      ...
      host {
        type      = "ZOOKEEPER"
        zone      = "ru-central1-a"
        subnet_id = yandex_vpc_subnet.<имя_подсети_в_зоне_ru-central1-a>.id
      }
      host {
        type      = "ZOOKEEPER"
        zone      = "ru-central1-b"
        subnet_id = yandex_vpc_subnet.<имя_подсети_в_зоне_ru-central1-b>.id
      }
      host {
        type      = "ZOOKEEPER"
        zone      = "ru-central1-d"
        subnet_id = yandex_vpc_subnet.<имя_подсети_в_зоне_ru-central1-d>.id
      }
    }
    

    Где resource_preset_id — класс хоста: b1.medium или выше.

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

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

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

      terraform validate
      

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

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

    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.AddZookeeper и выполните запрос, например с помощью 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/<идентификатор_кластера>:addZookeeper' \
      --data '{
               "resources": {
                 "resourcePresetId": "<класс_хостов>",
                 "diskSize": "<размер_хранилища_в_байтах>",
                 "diskTypeId": "<тип_диска>"
               },
               "hostSpecs": [
                 {
                   "type": "ZOOKEEPER",
                   "zoneId": "<зона_доступности>",
                   "subnetId": "<идентификатор_подсети>"
                 },
                 { <аналогичный_набор_настроек_для_создаваемого_хоста_2> },
                 { ... },
                 { <аналогичный_набор_настроек_для_создаваемого_хоста_N> }
               ],
               "convertTablesToReplicated": true
             }'
    

    Где:

    • resources — набор ресурсов для хостов ZooKeeper:

      • resourcePresetId — идентификатор класса хостов;
      • diskSize — размер диска в байтах;
      • diskTypeId — тип диска.
    • hostSpecs — массив, содержащий настройки создаваемых хостов. Один элемент массива содержит настройки для одного хоста, в кластере должно быть минимум три хоста ZooKeeper. Элемент массива имеет следующую структуру:

      • type — тип хоста ZOOKEEPER;
      • zoneId — зона доступности;
      • subnetId — идентификатор подсети.
    • convertTablesToReplicated — преобразование нереплицируемых таблиц в реплицируемые: true или false. Нереплицируемые таблицы на движке семейства MergeTree будут автоматически преобразованы в реплицируемые на движке ReplicatedMergeTree.

      Важно

      После включения этой настройки ее нельзя отключить.

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

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

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

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

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

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

  3. Воспользуйтесь вызовом ClusterService.AddZookeeper и выполните запрос, например с помощью 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": "<идентификатор_кластера>",
            "resources": {
              "resource_preset_id": "<класс_хостов>",
              "disk_size": "<размер_хранилища_в_байтах>",
              "disk_type_id": "<тип_диска>"
            },
            "host_specs": [
              {
                "type": "ZOOKEEPER",
                "zone_id": "<зона_доступности>",
                "subnet_id": "<идентификатор_подсети>"
              },
              { <аналогичный_набор_настроек_для_создаваемого_хоста_2> },
              { ... },
              { <аналогичный_набор_настроек_для_создаваемого_хоста_N> }
            ],
            "convert_tables_to_replicated": true
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.clickhouse.v1.ClusterService.AddZookeeper
    

    Где:

    • resources — набор ресурсов для хостов ZooKeeper:

      • resource_preset_id — идентификатор класса хостов;
      • disk_size — размер диска в байтах;
      • disk_type_id — тип диска.
    • host_specs — массив, содержащий настройки создаваемых хостов. Один элемент массива содержит настройки для одного хоста, в кластере должно быть минимум три хоста ZooKeeper.

      Элемент массива имеет следующую структуру:

      • type — тип хоста ZOOKEEPER;
      • zone_id — зона доступности;
      • subnet_id — идентификатор подсети.
    • convert_tables_to_replicated — преобразование нереплицируемых таблиц в реплицируемые: true или false. Нереплицируемые таблицы на движке семейства MergeTree будут автоматически преобразованы в реплицируемые на движке ReplicatedMergeTree.

      Важно

      После включения этой настройки ее нельзя отключить.

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

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

Примечание

По умолчанию для хостов ZooKeeper задаются следующие характеристики:

  • Класс хоста b2.medium.
  • Хранилище на сетевых SSD-дисках (network-ssd) размером 10 ГБ.

Изменить настройки хостов ZooKeeperИзменить настройки хостов ZooKeeper

После создания хостов ZooKeeper вы можете изменить только их класс и размер хранилища. Рекомендуется изменять класс хостов только во время отсутствия рабочей нагрузки на кластер.

Минимальное количество ядер для одного хоста ZooKeeper зависит от суммарного количества ядер хостов ClickHouse®. Подробнее см. в разделе Репликация.

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Выберите кластер и нажмите кнопку Редактировать на панели сверху.
  3. В блоке Класс хоста ZooKeeper выберите платформу, тип виртуальной машины и нужный класс хоста ZooKeeper.
  4. В блоке Размер хранилища ZooKeeper задайте размер хранилища ZooKeeper.
  5. Нажмите кнопку Сохранить изменения.

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

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

Чтобы изменить конфигурацию хостов ZooKeeper:

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

    yc managed-clickhouse cluster update --help
    
  2. Запросите список доступных классов хостов (в колонке ZONE IDS указаны зоны доступности, в которых можно выбрать соответствующий класс):

    yc managed-clickhouse resource-preset list
    
    +-----------+--------------------------------+-------+----------+
    |    ID     |            ZONE IDS            | CORES |  MEMORY  |
    +-----------+--------------------------------+-------+----------+
    | s1.micro  | ru-central1-a, ru-central1-b,  |     2 | 8.0 GB   |
    |           | ru-central1-d                  |       |          |
    | ...                                                           |
    +-----------+--------------------------------+-------+----------+
    
  3. В команде на изменение кластера передайте новый класса хоста ZooKeeper и размер хранилища:

    yc managed-clickhouse cluster update <имя_или_идентификатор_кластера> \
       --zookepeer-resource-preset=<класс_хостов> \
       --zookeeper-disk-size=<размер_хранилища_ГБ>
    

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

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

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

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

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

  2. В блоке с конфигурацией ZooKeeper укажите новый класс хоста и размер хранилища.

    Требования к хостам ZooKeeper:

    • Минимальный класс хоста — b1.medium.
    • Минимальный размер хранилища — 10 гигабайт.
    resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
      ...
      zookeeper {
        resources {
          resource_preset_id = "<класс_хостов>"
          disk_type_id       = "network-ssd"
          disk_size          = <размер_хранилища_ГБ>
        }
      }
      ...
    }
    
  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. Запросите список доступных классов хостов:

    1. Воспользуйтесь методом ResourcePreset.List и выполните запрос, например с помощью cURL:

      curl \
          --request GET \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/resourcePresets'
      
    2. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  3. Измените класс хостов и размер хранилища:

    1. Воспользуйтесь методом Cluster.Update и выполните запрос, например с помощью cURL:

      Важно

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

      curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --header "Content-Type: application/json" \
          --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \
          --data '{
                    "updateMask": "configSpec.zookeeper.resources.resourcePresetId,configSpec.zookeeper.resources.diskSize",
                    "configSpec": {
                      "zookeeper": {
                        "resources": {
                          "resourcePresetId": "<класс_хостов>",
                          "diskSize": "<размер_хранилища_ГБ>"
                        }
                      }
                    }
                  }'
      

      Где:

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

        Укажите нужные параметры:

        • configSpec.zookeeper.resources.resourcePresetId — если нужно изменить класс хостов ZooKeeper.
        • configSpec.zookeeper.resources.diskSize — если нужно изменить размер хранилища ZooKeeper.
      • configSpec.zookeeper.resources.resourcePresetId — идентификатор класса хостов.

      • configSpec.zookeeper.resources.diskSize — размер хранилища в гигабайтах.

      Идентификатор кластера можно запросить со списком кластеров в каталоге. Список доступных классов хостов с их идентификаторами был получен ранее.

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

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

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

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

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

  3. Запросите список доступных классов хостов:

    1. Воспользуйтесь вызовом ResourcePresetService.List и выполните запрос, например с помощью gRPCurl:

      grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/resource_preset_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          mdb.api.cloud.yandex.net:443 \
          yandex.cloud.mdb.clickhouse.v1.ResourcePresetService.List
      
    2. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  4. Измените класс хостов и размер хранилища:

    1. Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например с помощью gRPCurl:

      Важно

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

      Формат перечисления настроек
      "update_mask": {
          "paths": [
              "<настройка_1>",
              "<настройка_2>",
              ...
              "<настройка_N>"
          ]
      }
      
      grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d '{
                "cluster_id": "<идентификатор_кластера>",
                "update_mask": {
                  "paths": [
                    "config_spec.zookeeper.resources.resource_preset_id",
                    "config_spec.zookeeper.resources.disk_size"
                  ]
                },
                "config_spec": {
                  "zookeeper": {
                    "resources": {
                      "resource_preset_id": "<класс_хостов>",
                      "disk_size": "<размер_хранилища_ГБ>"
                    }
                  }
                }
              }' \
          mdb.api.cloud.yandex.net:443 \
          yandex.cloud.mdb.clickhouse.v1.ClusterService.Update
      

      Где:

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

        Укажите нужные параметры:

        • config_spec.zookeeper.resources.resource_preset_id — если нужно изменить класс хостов ZooKeeper.
        • config_spec.zookeeper.resources.disk_size — если нужно изменить размер хранилища.
      • config_spec.zookeeper.resources.resource_preset_id — идентификатор класса хостов.

      • config_spec.zookeeper.resources.disk_size — размер хранилища в гигабайтах.

      Идентификатор кластера можно запросить со списком кластеров в каталоге. Список доступных классов хостов с их идентификаторами был получен ранее.

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

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

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

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

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

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

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

  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.cloud.yandex.net/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.cloud.yandex.net:443 \
        yandex.cloud.mdb.clickhouse.v1.ClusterService.RestartHosts
    

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

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

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

Преобразовать нереплицируемые таблицы в реплицируемыеПреобразовать нереплицируемые таблицы в реплицируемые

Чтобы автоматически преобразовать нереплицируемые таблицы на движке семейства MergeTree в реплицируемые на движке ReplicatedMergeTree, добавьте хосты ZooKeeper с включенным преобразованием таблиц.

Подробнее читайте в разделе Добавить хосты ZooKeeper и в документации ClickHouse®.

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

Важно

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

Консоль управления
CLI
Terraform
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 hosts delete <имя_хоста> \
  --cluster-name=<имя_кластера>

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

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

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

Чтобы удалить хост ZooKeeper:

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

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

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

  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.cloud.yandex.net/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.cloud.yandex.net:443 \
        yandex.cloud.mdb.clickhouse.v1.ClusterService.DeleteHosts
    

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

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

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

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

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

Предыдущая
Управление хостами ClickHouse®
Следующая
Миграция хостов в другую зону доступности
Проект Яндекса
© 2025 ООО «Яндекс.Облако»