[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for ClickHouse®](../index.md) > [Пошаговые инструкции](index.md) > Кластеры > Создание кластера

# Создание кластера ClickHouse®



Кластер ClickHouse® состоит из одного или нескольких хостов базы данных. Если кластер состоит из нескольких хостов, между ними можно настроить [репликацию](../concepts/replication.md). Для репликации используется один из [сервисов координации](../concepts/coordination-system.md): ClickHouse® Keeper или ZooKeeper.

Подробнее о том, какой сервис координации выбрать, читайте в разделе [Выбор сервиса координации](../concepts/coordination-system.md#coordination-system-selection).

Хосты ClickHouse® Keeper и ZooKeeper учитываются в расчете использованной [квоты ресурсов](https://console.yandex.cloud/cloud?section=quotas) в облаке и в [расчете стоимости](../pricing.md) кластера.


Подключениями к БД кластера управляет сервис Connection Manager. Вместе с кластером автоматически создаются:

* [Подключение Connection Manager](../../metadata-hub/concepts/connection-manager.md) с информацией о соединении с БД.

* [Секрет Yandex Lockbox](../../metadata-hub/concepts/secret.md), в котором хранится пароль пользователя — владельца БД.

Подключение и секрет создаются для каждого нового пользователя БД. Чтобы увидеть все подключения, на странице кластера выберите вкладку **Подключения**. Для просмотра информации о подключении требуется роль `connection-manager.viewer`.

Использование сервиса Connection Manager и секретов, созданных с его помощью, не тарифицируется.



## Роли для создания кластера {#roles}

Для создания кластера Managed Service for ClickHouse® и работы с ним вашему аккаунту в Yandex Cloud нужны роли:

* [managed-clickhouse.editor](../security.md#managed-clickhouse-editor) или выше — чтобы создать кластер;
* [vpc.user](../../vpc/security/index.md#vpc-user) — чтобы работать с [сетью](../../vpc/concepts/network.md#network) кластера;
* [mdb.viewer](../../iam/roles-reference.md#mdb-viewer) — чтобы просматривать кластеры управляемых баз данных (MDB) на дашборде в [консоли управления](https://console.yandex.cloud).

Если вы хотите привязать сервисный аккаунт к кластеру (например, для [работы с Yandex Object Storage](s3-access.md)), вашему аккаунту в Yandex Cloud нужна роль [iam.serviceAccounts.user](../../iam/security/index.md#iam-serviceAccounts-user) или выше.

О назначении ролей читайте в [документации Yandex Identity and Access Management](../../iam/operations/roles/grant.md).


## Создать кластер с ClickHouse® Keeper {#create-cluster}

{% list tabs group=instructions %}

- Консоль управления {#console}

  
  <iframe width="640" height="360" src="https://runtime.strm.yandex.ru/player/video/vplvcndvjbwofzyjljsq?autoplay=0&mute=0" allow="autoplay; fullscreen; picture-in-picture; encrypted-media" frameborder="0" scrolling="no"></iframe>

  [Смотреть видео на YouTube](https://www.youtube.com/watch?v=M_RXJfOoEFE&list=PL1x4ET76A10bW1KU3twrdm7hH376z8G5R&index=4&pp=iAQB).



  Чтобы создать кластер Managed Service for ClickHouse® с сервисом координации ClickHouse® Keeper:

  1. В [консоли управления](https://console.yandex.cloud) выберите каталог, в котором нужно создать кластер БД.
  1. Перейдите в сервис **Managed Service for&nbsp;ClickHouse**.
  1. Нажмите кнопку **Создать кластер**.
  1. Введите имя кластера в поле **Имя кластера**. Имя кластера должно быть уникальным в рамках каталога.
  1. Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
      * `PRODUCTION` — для стабильных версий ваших приложений.
      * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
  1. Выберите [версию ClickHouse®](../concepts/update-policy.md), которую будет использовать кластер Managed Service for ClickHouse®, из выпадающего списка **Версия**. Для большинства кластеров рекомендуется выбрать самую новую LTS-версию.

  1. В блоке **Ресурсы**:

      * Выберите платформу, тип виртуальной машины и класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md). При изменении класса хостов для кластера меняются характеристики всех уже созданных экземпляров.

      
      * Выберите [тип диска](../concepts/storage.md).

        От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
        
        * Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
        * Локальные SSD-диски:
            * для платформ **Intel Broadwell** и **Intel Cascade Lake** — с шагом 100 ГБ;
            * для платформ **Intel Ice Lake** и **AMD Zen 4** — с шагом 368 ГБ.
        * Нереплицируемые SSD-диски и cверхбыстрые сетевые SSD-диски с тремя репликами — с шагом 93 ГБ.


      * Выберите размер диска, который будет использоваться для данных и резервных копий. Подробнее о том, как занимают пространство резервные копии, в разделе [Резервные копии](../concepts/backup.md).

      * (Опционально) Задайте настройки [автоматического увеличения размера хранилища](../concepts/storage.md#autoscaling) ClickHouse®:

        * В поле **Увеличивать размер** выберите один или оба порога:
          * **В окно обслуживания при заполненности более** — порог для планового увеличения. При его достижении размер хранилища увеличивается во время ближайшего [окна обслуживания](../concepts/maintenance.md#maintenance-window).
            
            Для планового увеличения необходимо настроить расписание [окна обслуживания](../concepts/maintenance.md#maintenance-window).
        
          * **Незамедлительно при заполненности более** — порог для незамедлительного увеличения. При его достижении размер хранилища увеличивается немедленно.
        * Задайте пороговое значение (в процентах от общего размера хранилища). Если выбраны оба порога, значение для незамедлительного увеличения должно быть не меньше, чем для планового.
        * Задайте **Максимальный размер хранилища**.

        Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда.

  
  1. В блоке **Сетевые настройки** выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная [настройка групп безопасности](connect/index.md#configuring-security-groups) для того, чтобы можно было подключаться к кластеру.


  1. (Опционально) В блоке **Настройки шардирования**:

      * Включите **Шардирование кластера**, чтобы создать кластер сразу с несколькими [шардами](../concepts/sharding.md). Добавить шарды можно как при создании, так и при изменении кластера.

      * Укажите параметры шардов, создаваемых вместе с кластером. Чтобы изменить настройки шарда, нажмите на значок ![pencil](../../_assets/console-icons/pencil.svg) в строке с его номером:

          * **Имя шарда** и его **Вес**.

          * **Конфигурация** хостов шарда:

              * **По умолчанию** — конфигурация хостов будет унаследована от конфигурации кластера.

              * **Переопределённая** — задайте класс хоста, настройки хранилища и настройки СУБД для всех хостов шарда.

      Чтобы добавить шарды в кластер, нажмите кнопку **Добавить шард**.

  1. В блоке **Хосты**:

      * Укажите параметры хостов БД, создаваемых вместе с кластером. Чтобы изменить настройки хоста, нажмите на значок ![pencil](../../_assets/console-icons/pencil.svg) в строке с его номером:

        * **Зона доступности** — выберите [зону доступности](../../overview/concepts/geo-scope.md).

        
        * **Подсеть** — укажите [подсеть](../../vpc/concepts/network.md#subnet) в выбранной зоне доступности.

        * **Публичный доступ** — разрешите [доступ](connect/index.md) к хосту из интернета.


        * Если для кластера включено [шардирование](../concepts/sharding.md), выберите шард.

        Чтобы добавить хосты в кластер, нажмите кнопку **Добавить хост**.

      * Выберите [сервис координации](../concepts/coordination-system.md) **ClickHouse Keeper (на отдельных хостах)** или **ClickHouse Keeper (встроенный)**.

        {% note alert %}
        
        ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
        
        {% endnote %}

  1. Если был выбран сервис координации **ClickHouse Keeper (на отдельных хостах)**, задайте следующие настройки:

      * В блоке **Ресурсы ClickHouse Keeper** выберите платформу, тип виртуальной машины и [класс хоста](../concepts/instance-types.md).
      * В блоке **Размер хранилища ClickHouse Keeper** выберите [тип диска](../concepts/storage.md), размер хранилища и при необходимости задайте настройки [автоматического увеличения размера хранилища](../concepts/storage.md#autoscaling) ClickHouse® Keeper.
      * В блоке **Хосты ClickHouse Keeper** при необходимости измените настройки автоматически добавленных хостов ClickHouse® Keeper.

        Чтобы изменить настройки хоста, нажмите на значок ![pencil](../../_assets/console-icons/pencil.svg) в строке нужного хоста и укажите:

        * **Зона доступности** — выберите [зону доступности](../../overview/concepts/geo-scope.md).

        
        * **Подсеть** — выберите [подсеть](../../vpc/concepts/network.md#subnet) в выбранной зоне доступности.


  1. В блоке **Настройки СУБД**:

      * Если вы хотите управлять пользователями кластера через SQL, в поле **Управление пользователями через SQL** выберите из выпадающего списка **Включено** и укажите пароль пользователя `admin`. Управление пользователями через другие интерфейсы при этом станет недоступно.

        В противном случае выберите **Выключено**.


      * Если вы хотите управлять базами данных через SQL, в поле **Управление базами данных через SQL** выберите из выпадающего списка **Включено**. Управление базами данных через другие интерфейсы при этом станет недоступно. Поле неактивно, если управление пользователями через SQL выключено.

        В противном случае выберите **Выключено**.

        {% note warning %}
        
        Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
        
        {% endnote %}

      * Укажите имя пользователя.

        Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.

      
      * Укажите пароль пользователя:

        * **Ввести вручную** — выберите, чтобы ввести свой пароль. Длина пароля — от 8 до 128 символов.

        * **Сгенерировать** — выберите, чтобы сгенерировать пароль с помощью сервиса Connection Manager.

        Чтобы увидеть пароль, после создания кластера выберите вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.


      * Укажите имя БД. Имя базы может содержать латинские буквы, цифры и подчеркивание. Максимальная длина имени 63 символа. Запрещено создание базы данных с именем `default`.

      * Выберите движок базы данных:

        * `Atomic` (по умолчанию) — поддерживает неблокирующие операции `DROP TABLE` и `RENAME TABLE`, а также атомарные операции `EXCHANGE TABLES`.
        * `Replicated` — поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.

          Доступен только в [реплицированных](../concepts/replication.md) кластерах.

        Движок задается при создании базы данных и не может быть изменен для этой базы.

      * При необходимости включите для кластера [гибридное хранилище](../concepts/storage.md#hybrid-storage-features).

        {% note warning %}

        Эту опцию невозможно выключить.

        {% endnote %}

      * При необходимости задайте [настройки СУБД](../concepts/settings-list.md#server-level-settings). Их также можно задать позднее.

        Через интерфейсы Yandex Cloud можно управлять ограниченным набором настроек. С помощью SQL-запросов можно [установить настройки ClickHouse® на уровне запроса](change-query-level-settings.md).

  1. При необходимости задайте сервисные настройки кластера:

      * **Начало резервного копирования (UTC)** — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию — `22:00 - 23:00` UTC.
      
      * **Срок хранения автоматических резервных копий, дней** — время, в течение которого нужно хранить созданные автоматически резервные копии (в днях). Если для такой копии истекает срок хранения, то она удаляется. Значение по умолчанию — 7 дней. Подробнее в разделе [Резервные копии](../concepts/backup.md#storage).
      
          Изменение срока хранения затрагивает как новые автоматические резервные копии, так и уже существующие. Например, изначальный срок хранения был 7 дней, оставшееся время жизни отдельной автоматической резервной копии — 1 день. При увеличении срока хранения до 9 дней оставшееся время жизни этой резервной копии будет уже 3 дня.
      
      * **Обслуживание** — настройки времени [технического обслуживания](../concepts/maintenance.md):
      
         * Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт **В любое время** (по умолчанию).
         * Чтобы указать предпочтительное время начала обслуживания, выберите пункт **По расписанию** и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
         
         Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
      
      
      * **Сервисный аккаунт** — аккаунт, от имени которого пользовательские программы могут управлять кластером. Подробнее в документации [Управление доступом в Managed Service for ClickHouse®](../security.md).
      
      * **Шифрование дисков** — опция включает шифрование диска [пользовательским ключом KMS](../../kms/concepts/key.md). Задайте ключ одним из способов:
      
         * Чтобы [создать](../../kms/operations/key.md#create) новый ключ, нажмите кнопку **Создать**.
      
         * Чтобы использовать созданный ранее ключ, выберите его в поле **Ключ KMS**.
      
         Подробнее о шифровании дисков в разделе [Хранилище](../concepts/storage.md#disk-encryption).
      
      
      * **Доступ из DataLens** — опция разрешает анализировать данные из кластера в сервисе [Yandex DataLens](../../datalens/concepts/index.md).
      
      
      * **Доступ из WebSQL** — опция разрешает [выполнять SQL-запросы](web-sql-query.md) к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL.
      
      
      
      
      * **Доступ из Метрики и AppMetrica** — опция разрешает [импортировать данные из AppMetrica](https://appmetrica.yandex.ru/docs/common/cloud/about.html) в кластер.
      
      * **Доступ из Serverless** — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса [Yandex Cloud Functions](../../functions/concepts/index.md). Подробнее о настройке доступа в документации [Cloud Functions](../../functions/operations/database-connection.md).
      
      
      * **Доступ из Yandex Query** — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса [Yandex Query](../../query/concepts/index.md). Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md).
      
      * **Защита от удаления** — управляет защитой кластера от непреднамеренного удаления.
      
         Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.

  1. Нажмите кнопку **Создать кластер**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы создать кластер Managed Service for ClickHouse® со встроенным сервисом координации ClickHouse® Keeper:

  
  1. Проверьте, есть ли в каталоге подсети для хостов кластера:

      ```bash
      yc vpc subnet list
      ```

     Если ни одной подсети в каталоге нет, [создайте нужные подсети](../../vpc/operations/subnet-create.md) в сервисе VPC.


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

      ```bash
      yc managed-clickhouse cluster create --help
      ```

  1. Укажите параметры кластера в команде создания (в примере приведены не все доступные параметры):

      
      ```bash
      yc managed-clickhouse cluster create \
        --name <имя_кластера> \
        --environment <окружение> \
        --network-name <имя_сети> \
        --shard name=<имя_шарда>,weight=<вес_шарда> \
        --host type=clickhouse,`
              `zone-id=<зона_доступности>,`
              `subnet-id=<идентификатор_подсети>,`
              `assign-public-ip=<публичный_доступ_к_хосту>,`
              `shard-name=<имя_шарда> \
        --clickhouse-resource-preset <класс_хоста> \
        --clickhouse-disk-type <тип_диска> \
        --clickhouse-disk-size <размер_хранилища_ГБ> \
        --embedded-keeper true \
        --user name=<имя_пользователя>,password=<пароль_пользователя> \
        --database name=<имя_базы_данных> \
        --security-group-ids <список_идентификаторов_групп_безопасности> \
        --websql-access=<доступ_из_WebSQL> \
        --deletion-protection
      ```


      Где:

      * `--environment` — окружение кластера: `prestable` или `production`.
      * `--shard` — параметры [шарда](../concepts/sharding.md): его имя и вес.

        Чтобы создать кластер сразу с несколькими шардами, передайте этот флаг нужное количество раз. Если не указать флаг `--shard`, будет создан кластер с одним шардом `shard1`.

      * `--host` — параметры хоста:
        * `type` — тип хоста: `clickhouse`.
        * `zone-id` — зона доступности.

        
        * `subnet-id` — идентификатор подсети. Его необходимо указывать, если в выбранной зоне доступности создано две и более подсетей.
        * `assign-public-ip` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`.

          {% note warning %}
          
          Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее в разделе [Настройка групп безопасности](connect/index.md#configuring-security-groups).
          
          {% endnote %}


        * `shard-name` — имя шарда, в котором будет размещен хост.

        
        Если вы создаете кластер из двух и более хостов ClickHouse® без сервиса координации и в [сети](../../vpc/concepts/network.md) кластера есть [подсети](../../vpc/concepts/network.md#subnet) в каждой [зоне доступности](../../overview/concepts/geo-scope.md), то три хоста ZooKeeper будут добавлены автоматически, по одному в каждую подсеть.
        
        Если подсети есть только в некоторых зонах доступности или вы хотите использовать другой сервис координации, вручную укажите сервис координации и настройки его хостов.


        Для каждого хоста необходимо указать отдельный флаг `--host`.

      * `--clickhouse-resource-preset` — [класс хоста](../concepts/instance-types.md) ClickHouse®.
      * `--clickhouse-disk-type` — [тип диска](../concepts/storage.md) ClickHouse®.
      * `--clickhouse-disk-size` — размер хранилища ClickHouse® в ГБ.
      * `--embedded-keeper` — использование встроенного [сервиса координации](../concepts/coordination-system.md) ClickHouse® Keeper: `true` или `false`.

        {% note alert %}
        
        ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
        
        {% endnote %}

      * `--user` — содержит имя (`name`) и пароль (`password`) пользователя ClickHouse®.

        Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.

        Длина пароля — от 8 до 128 символов.

        
        {% note info %}

        Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого измените команду и задайте параметры пользователя таким образом:

        ```bash
          --user name=<имя_пользователя>,generate-password=true
        ```

        Чтобы увидеть пароль, в [консоли управления](https://console.yandex.cloud) выберите созданный кластер, перейдите на вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.

        {% endnote %}


      
      * `--security-group-ids` — идентификаторы групп безопасности через запятую.

          {% note warning %}
          
          Если при создании кластера вы указали идентификаторы групп безопасности, то для подключения к кластеру может потребоваться [настройка групп безопасности](connect/index.md#configuring-security-groups).
          
          {% endnote %}


      * `--websql-access` — разрешает [выполнять SQL-запросы](web-sql-query.md) к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL. Значение по умолчанию — `false`.

      * `--deletion-protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

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

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

      {% note warning %}
      
      Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
      
      {% endnote %}

      1. Чтобы включить [режим управления пользователями через SQL](cluster-users.md#sql-user-management):

         * задайте значение `true` для параметра `--enable-sql-user-management`;
         * задайте пароль для пользователя `admin` в параметре `--admin-password`.

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --enable-sql-user-management true \
           --admin-password "<пароль_пользователя_admin>"
         ```


      1. Чтобы включить [режим управления базами данных через SQL](databases.md#sql-database-management):

         * задайте значение `true` для параметров `--enable-sql-user-management` и `--enable-sql-database-management`;
         * задайте пароль для пользователя `admin` в параметре `--admin-password`.

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --enable-sql-user-management true \
           --enable-sql-database-management true \
           --admin-password "<пароль_пользователя_admin>"
         ```

      
      1. Чтобы зашифровать диск [пользовательским ключом KMS](../../kms/concepts/key.md), передайте параметр `--disk-encryption-key-id <идентификатор_ключа_KMS>`.

         Подробнее о шифровании дисков читайте в разделе [Хранилище](../concepts/storage.md#disk-encryption).

      1. Чтобы разрешить доступ к кластеру из сервиса [Yandex Cloud Functions](../../functions/concepts/index.md), передайте параметр `--serverless-access`. Подробнее о настройке доступа читайте в документации [Cloud Functions](../../functions/operations/database-connection.md).


      1. Чтобы разрешить доступ к кластеру из сервиса [Yandex Query](../../query/concepts/index.md), передайте параметр `--yandexquery-access=true`. Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md).


      1. Чтобы задать [настройки гибридного хранилища](../concepts/storage.md#hybrid-storage-settings):

         * Включите гибридное хранилище, задав значение `true` для параметра `--cloud-storage`.

            {% note info %}
            
            Включенное однажды гибридное хранилище нельзя отключить.
            
            {% endnote %}

         * Передайте настройки гибридного хранилища в соответствующих параметрах:

            * `--cloud-storage-data-cache` — разрешает временное хранение файлов в кластерном хранилище. По умолчанию — `true` (разрешено).
            * `--cloud-storage-data-cache-max-size` — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
            * `--cloud-storage-move-factor` — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
            * `--cloud-storage-prefer-not-to-merge` — отключает [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах. Чтобы отключить слияние, укажите значение `true` или передайте параметр без значения. Чтобы оставить слияние включенным, укажите значение `false` или не передавайте параметр в команде CLI при создании кластера.

         ```bash
         yc managed-clickhouse cluster create \
            ...
            --cloud-storage=true \
            --cloud-storage-data-cache=<хранение_файлов> \
            --cloud-storage-data-cache-max-size=<объем_памяти_в_байтах> \
            --cloud-storage-move-factor=<доля_свободного_места> \
            --cloud-storage-prefer-not-to-merge=<слияние_кусков_данных>
           ...
         ```

         Где:
         * `--cloud-storage-data-cache` — хранение файлов в кластерном хранилище: `true` или `false`.
         * `--cloud-storage-prefer-not-to-merge` — отключает слияние кусков данных в кластерном и объектном хранилищах: `true` или `false`.

      1. Чтобы задать настройки автоматического увеличения размера хранилища ClickHouse®, используйте флаг `--disk-size-autoscaling`:

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --disk-size-autoscaling clickhouse-disk-size-limit=<максимальный_размер_хранилища_ГБ>,`
                                  `clickhouse-planned-usage-threshold=<порог_для_планового_увеличения_в_процентах>,`
                                  `clickhouse-emergency-usage-threshold=<порог_для_незамедлительного_увеличения_в_процентах>
           ...
         ```

         Где:

         * `clickhouse-disk-size-limit` — максимальный размер хранилища ClickHouse®, в гигабайтах.
         * `clickhouse-planned-usage-threshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).

           Допустимые значения: от `0` до `100`.

         * `clickhouse-emergency-usage-threshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).

           Допустимые значения: от `0` до `100`.

         {% note warning %}

         * Если заданы оба порога для ClickHouse®, значение `clickhouse-emergency-usage-threshold` должно быть не меньше `clickhouse-planned-usage-threshold`.

         * При использовании `clickhouse-planned-usage-threshold` необходимо настроить [окно технического обслуживания](../concepts/maintenance.md).

         {% endnote %}

         Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем шардам. Чтобы задать индивидуальные настройки для отдельного шарда, передайте аналогичные параметры во флаге `--shard`:

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --shard name=<имя_шарда>,`
                  `disk-size-limit=<максимальный_размер_хранилища_ГБ>,`
                  `planned-usage-threshold=<порог_для_планового_увеличения_в_процентах>,`
                  `emergency-usage-threshold=<порог_для_незамедлительного_увеличения_в_процентах>
           ...
         ```

      1. Чтобы настроить [окно технического обслуживания](../concepts/maintenance.md), используйте флаг `--maintenance-window`:

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --maintenance-window type=<тип_технического_обслуживания>,`
                               `day=<день_недели>,`
                               `hour=<порядковый_номер_часового_интервала>
                               
           ...
         ```

         Где `--maintenance-window` — настройки окна технического обслуживания:

         * `type` — тип окна технического обслуживания. Допустимые значения:

           * `anytime` (по умолчанию) — в любое время.
           * `weekly` — по расписанию. Для этого значения необходимо передать параметры `hour` и `day`.

         * `day` — день недели для типа `weekly`. Допустимые значения: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`, `SUN`.
         * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.

           > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.         


- Terraform {#tf}

  [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
  
  Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
  
  Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../terraform/index.md).

  Чтобы создать кластер Managed Service for ClickHouse® со встроенным сервисом координации ClickHouse® Keeper:

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

    1. Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
       
       
       Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

    1. Создайте конфигурационный файл с описанием [облачной сети](../../vpc/concepts/network.md#network) и [подсетей](../../vpc/concepts/network.md#subnet).
        * Сеть — описание [облачной сети](../../vpc/concepts/network.md#network), в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
        * Подсети — описание [подсетей](../../vpc/concepts/network.md#network), к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.

        Пример структуры конфигурационного файла, в котором описывается облачная сеть с одной подсетью:

        ```hcl
        resource "yandex_vpc_network" "<имя_сети_в_Terraform>" {
          name = "<имя_сети>"
        }

        resource "yandex_vpc_subnet" "<имя_подсети_в_Terraform>" {
          name           = "<имя_подсети>"
          zone           = "<зона_доступности>"
          network_id     = yandex_vpc_network.<имя_сети_в_Terraform>.id
          v4_cidr_blocks = ["<подсеть>"]
        }
        ```

    1. Создайте конфигурационный файл с описанием ресурсов кластера, которые необходимо создать:

       * Кластер базы данных — описание кластера и его хостов. Здесь же при необходимости:
          * Задайте [настройки СУБД на уровне сервера](../concepts/settings-list.md#server-level-settings). Их также можно указать позднее.
          * Включите защиту кластера от непреднамеренного удаления.

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

       * База данных — описание БД кластера.
       * Пользователь — описание пользователя кластера. Здесь же при необходимости задайте [настройки СУБД на уровне пользователя](../concepts/settings-list.md#dbms-user-settings). Их также можно указать позднее.

          Через интерфейсы Yandex Cloud можно управлять ограниченным набором настроек. С помощью SQL-запросов можно [установить настройки ClickHouse® на уровне запроса](change-query-level-settings.md).

       Пример структуры конфигурационного файла, в котором описывается кластер из трех хостов ClickHouse®:

       ```hcl
       resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
         name                = "<имя_кластера>"
         environment         = "<окружение>"
         network_id          = yandex_vpc_network.<имя_сети_в_Terraform>.id
         security_group_ids  = ["<список_идентификаторов_групп_безопасности>"]
         embedded_keeper     = true
         deletion_protection = <защита_кластера_от_удаления>

         clickhouse = {
           resources = {
             resource_preset_id = "<класс_хоста>"
             disk_type_id       = "<тип_диска>"
             disk_size          = <размер_хранилища_ГБ>
           }
         }

         shards = {
           "<имя_шарда>" = {
             weight = <вес_шарда>
           }
         }

         hosts = {
           "<имя_хоста_1>" = {
             type             = "CLICKHOUSE"
             zone             = "<зона_доступности>"
             subnet_id        = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
             assign_public_ip = <публичный_доступ_к_хосту>
             shard_name       = "<имя_шарда>"
           }

           "<имя_хоста_2>" = {
             type             = "CLICKHOUSE"
             zone             = "<зона_доступности>"
             subnet_id        = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
             assign_public_ip = <публичный_доступ_к_хосту>
             shard_name       = "<имя_шарда>"
           }

           "<имя_хоста_3>" = {
             type             = "CLICKHOUSE"
             zone             = "<зона_доступности>"
             subnet_id        = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
             assign_public_ip = <публичный_доступ_к_хосту>
             shard_name       = "<имя_шарда>"
           }
         }
       }

       resource "yandex_mdb_clickhouse_database" "<имя_БД>" {
         cluster_id = yandex_mdb_clickhouse_cluster_v2.<имя_кластера>.id
         name       = "<имя_БД>"
       }

       resource "yandex_mdb_clickhouse_user" "<имя_пользователя>" {
         cluster_id = yandex_mdb_clickhouse_cluster_v2.<имя_кластера>.id
         name       = "<имя_пользователя>"
         password   = "<пароль_пользователя>"
         permission {
           database_name = yandex_mdb_clickhouse_database.<имя_БД>.name
         }
         settings {
           <имя_параметра_1> = <значение_1>
           <имя_параметра_2> = <значение_2>
           ...
         }
       }
       ```

       Где:

       * `--embedded-keeper` — использование встроенного [сервиса координации](../concepts/coordination-system.md) ClickHouse® Keeper: `true` или `false`.

          {% note alert %}
          
          ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
          
          {% endnote %}

       * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

       * `shards` — [шарды](../concepts/sharding.md) кластера в виде ассоциативного массива элементов. Ключ задает имя шарда, а значение включает параметр `weight` — вес шарда.

       * `hosts` — хосты кластера в виде ассоциативного массива элементов. Ключ задает имя хоста, а значение — параметры хоста. Каждый элемент имеет следующую структуру:

          * `type` — тип хоста: `CLICKHOUSE`.
          * `zone` — [зона доступности](../../overview/concepts/geo-scope.md).
          * `subnet_id` — идентификатор [подсети](../../vpc/concepts/network.md#subnet).
          * `assign_public_ip` — публичный доступ к хосту ClickHouse®: `true` или `false`.

            {% note warning %}
            
            Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее в разделе [Настройка групп безопасности](connect/index.md#configuring-security-groups).
            
            {% endnote %}

          * `shard_name` — имя шарда.

          Если вы создаете кластер из двух и более хостов ClickHouse® без сервиса координации и в [сети](../../vpc/concepts/network.md) кластера есть [подсети](../../vpc/concepts/network.md#subnet) в каждой [зоне доступности](../../overview/concepts/geo-scope.md), то три хоста ZooKeeper будут добавлены автоматически, по одному в каждую подсеть.
          
          Если подсети есть только в некоторых зонах доступности или вы хотите использовать другой сервис координации, вручную укажите сервис координации и настройки его хостов.

       Для пользователя указываются:

       * `name`и `password`— имя и пароль пользователя ClickHouse®.

          Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.

          Длина пароля — от 8 до 128 символов.

          
          {% note info %}

          Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо `password = "<пароль_пользователя>"` укажите `generate_password = true`.

          Чтобы увидеть пароль, в [консоли управления](https://console.yandex.cloud) выберите созданный кластер, перейдите на вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.

          {% endnote %}


       * `permission` — список БД, к которым пользователь должен иметь доступ.

       1. Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок `maintenance_window`:
          
          ```hcl
          resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
            ...
            maintenance_window {
              type = "<тип_технического_обслуживания>"
              day  = "<день_недели>"
              hour = <порядковый_номер_часового_интервала>
            }
            ...
          }
          ```
          
          Где:
          
          * `type` — тип технического обслуживания. Принимает значения:
              * `ANYTIME` — в любое время.
              * `WEEKLY` — по расписанию.
          * `day` — день недели для типа `WEEKLY`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
          * `hour` — порядковый номер часового интервала по UTC для типа `WEEKLY`: от `1` до `24`.
          
            > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

       1. Чтобы разрешить доступ из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью Yandex WebSQL, добавьте блок `access` с нужными вам настройками:

          ```hcl
          resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
            ...
            access = {
              data_lens    = <доступ_из_DataLens>
              metrika      = <доступ_из_Метрики_и_AppMetrika>
              serverless   = <доступ_из_Cloud_Functions>
              yandex_query = <доступ_из_Yandex_Query>
              web_sql      = <выполнение_SQL-запросов_из_консоли_управления>
            }
            ...
          }
          ```

          Где:

          * `data_lens` — доступ из DataLens: `true` или `false`.
          * `metrika` — доступ из Метрики и AppMetrika: `true` или `false`.
          * `serverless` — доступ из Cloud Functions: `true` или `false`.
          * `yandex_query` — доступ из Yandex Query: `true` или `false`.
          * `web_sql` — выполнение SQL-запросов из консоли управления: `true` или `false`.

       1. Пользователями и базами данных в кластере можно управлять через SQL.

          {% note warning %}
          
          Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
          
          {% endnote %}

          *  Чтобы включить [управление пользователями через SQL](../concepts/user-access-rights.md#sql-user-management), добавьте к описанию кластера поле `sql_user_management` со значением `true` и поле `admin_password` с паролем пользователя `admin`:
             
             ```hcl
             resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
               name                = "<имя_кластера>"
               ...
               admin_password      = "<пароль_пользователя_admin>"
               sql_user_management = true
               ...
             }
             ```

          * Чтобы включить [управление базами данных через SQL](databases.md#sql-database-management), добавьте к описанию кластера поля `sql_user_management` и `sql_database_management` со значением `true`, а также поле `admin_password` с паролем пользователя `admin`:
            
            ```hcl
            resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
              name                    = "<имя_кластера>"
              ...
              admin_password          = "<пароль_пользователя_admin>"
              sql_database_management = true
              sql_user_management     = true
              ...
            }
            ```

       1. Чтобы зашифровать диск [пользовательским ключом KMS](../../kms/concepts/key.md), добавьте параметр `disk_encryption_key_id`:

          ```hcl
          resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
            ...
            disk_encryption_key_id = <идентификатор_ключа_KMS>
            ...
          }
          ```

          Подробнее о шифровании дисков читайте в разделе [Хранилище](../concepts/storage.md#disk-encryption).

       Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, читайте в [документации провайдера](../../terraform/resources/mdb_clickhouse_cluster.md).

    1. Проверьте корректность файлов конфигурации Terraform:

       1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
       1. Выполните команду:
       
          ```bash
          terraform validate
          ```
       
          Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Создайте кластер:

       1. Выполните команду для просмотра планируемых изменений:
       
          ```bash
          terraform plan
          ```
       
          Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
       
       1. Если вас устраивают планируемые изменения, внесите их:
          1. Выполните команду:
       
             ```bash
             terraform apply
             ```
       
          1. Подтвердите изменение ресурсов.
          1. Дождитесь завершения операции.

       В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в [консоли управления](https://console.yandex.cloud).

    {% note warning "Ограничения по времени" %}
    
    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
    
    * создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
    * изменение — 90 минут;
    * удаление — 30 минут.
    
    Операции, длящиеся дольше указанного времени, прерываются.
    
    {% cut "Как изменить эти ограничения?" %}
    
    Добавьте к описанию кластера блок `timeouts`, например:
    
    ```hcl
    resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
      ...
      timeouts = {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    ```
    
    {% endcut %}
    
    {% endnote %}


- REST API {#api}

    Чтобы создать кластер Managed Service for ClickHouse® со встроенным сервисом координации ClickHouse® Keeper:

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Воспользуйтесь методом [Cluster.Create](../api-ref/Cluster/create.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое (в примере приведены не все доступные параметры):

            
            ```json
            {
              "folderId": "<идентификатор_каталога>",
              "name": "<имя_кластера>",
              "environment": "<окружение>",
              "networkId": "<идентификатор_сети>",
              "securityGroupIds": [
                "<идентификатор_группы_безопасности_1>",
                "<идентификатор_группы_безопасности_2>",
                ...
                "<идентификатор_группы_безопасности_N>"
              ],
              "configSpec": {
                "version": "<версия_ClickHouse®>",
                "embeddedKeeper": true,
                "clickhouse": {
                  "resources": {
                    "resourcePresetId": "<класс_хостов_ClickHouse®>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"
                  },
                  "diskSizeAutoscaling": {
                    "plannedUsageThreshold": "<порог_для_планового_увеличения_в_процентах>",
                    "emergencyUsageThreshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                    "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                  }
                },
                "access": {
                  "dataLens": <доступ_из_DataLens>,
                  "webSql": <выполнение_SQL-запросов_из_консоли_управления>,
                  "metrika": <доступ_из_Метрики_и_AppMetrika>,
                  "serverless": <доступ_из_Cloud_Functions>,
                  "dataTransfer": <доступ_из_Data_Transfer>,
                  "yandexQuery": <доступ_из_Yandex_Query>
                },
                "cloudStorage": {
                  "enabled": <использование_гибридного_хранилища>,
                  "moveFactor": "<доля_свободного_места>",
                  "dataCacheEnabled": <временное_хранение_файлов>,
                  "dataCacheMaxSize": "<максимальный_объем_памяти_для_хранения_файлов>",
                  "preferNotToMerge": <отключение_слияния_кусков_данных>
                },
                "adminPassword": "<пароль_пользователя_admin>",
                "sqlUserManagement": <управление_пользователями_через_SQL>,
                "sqlDatabaseManagement": <управление_базами_данных_через_SQL>
              },
              "databaseSpecs": [
                {
                  "name": "<имя_базы_данных>",
                  "engine": "<движок_базы_данных>"
                },
                { <аналогичный_набор_настроек_для_базы_данных_2> },
                { ... },
                { <аналогичный_набор_настроек_для_базы_данных_N> }
              ],
              "userSpecs": [
                {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "databaseName": "<имя_базы_данных>"
                    }
                  ]
                },
                { <аналогичный_набор_настроек_для_пользователя_2> },
                { ... },
                { <аналогичный_набор_настроек_для_пользователя_N> }
              ],
              "hostSpecs": [
                {
                  "zoneId": "<зона_доступности>",
                  "type": "<тип_хоста>",
                  "subnetId": "<идентификатор_подсети>",
                  "assignPublicIp": <публичный_доступ_к_хосту>,
                  "shardName": "<имя_шарда>"
                },
                { <аналогичный_набор_настроек_для_хоста_2> },
                { ... },
                { <аналогичный_набор_настроек_для_хоста_N> }
              ],
              "shardSpecs": [
                {
                  "name": "<имя_шарда>",
                  "configSpec": {
                    "clickhouse": {
                      "weight": "<вес_шарда>", 
                      "resources": {
                        "resourcePresetId": "<класс_хостов_в_шарде>",
                        "diskSize": "<размер_хранилища_в_байтах>",
                        "diskTypeId": "<тип_диска>"
                      },
                      "diskSizeAutoscaling": {
                        "plannedUsageThreshold": "<порог_для_планового_увеличения_в_процентах>",
                        "emergencyUsageThreshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                        "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                      },
                      "config": {
                        <настройки_СУБД>
                      }
                    }
                  }
                },
                { <аналогичный_набор_настроек_для_шарда_2> },
                { ... },
                { <аналогичный_набор_настроек_для_шарда_N> }
              ],
              "deletionProtection": <защита_кластера_от_удаления>,
              "maintenanceWindow": {
                "weeklyMaintenanceWindow": {
                  "day": "<день_недели>",
                  "hour": "<порядковый_номер_часового_интервала>"
                }
              }
            }
            ```


            Где:

            * `name` — имя кластера.
            * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
            * `networkId` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер.

            
            * `securityGroupIds` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. массив Каждая строка — идентификатор группы безопасности.

                {% note warning %}
                
                Если при создании кластера вы указали идентификаторы групп безопасности, то для подключения к кластеру может потребоваться [настройка групп безопасности](connect/index.md#configuring-security-groups).
                
                {% endnote %}


            * `configSpec` — конфигурация кластера:

                * `version` — версия ClickHouse®: 25.8.24.21 LTS, 26.3.12.3 LTS, 26.4.4.38 и 26.5.2.39.
                * `embeddedKeeper` — использование встроенного [сервиса координации](../concepts/coordination-system.md) ClickHouse® Keeper: `true` или `false`.

                    {% note alert %}
                    
                    ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
                    
                    {% endnote %}

                * `clickhouse` — конфигурация ClickHouse®:

                    * `resources.resourcePresetId` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.diskSize` — размер диска в байтах.
                    * `resources.diskTypeId` — [тип диска](../concepts/storage.md).
                    * `diskSizeAutoscaling` — настройки автоматического увеличения размера хранилища ClickHouse®:

                      * `plannedUsageThreshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).
                      
                        Допустимые значения: от `0` до `100`.
                      
                      * `emergencyUsageThreshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).
                      
                        Допустимые значения: от `0` до `100`.
                      
                      * `diskSizeLimit` — максимальный размер хранилища ClickHouse®, в байтах.
                      
                      {% note warning %}
                      
                      * Если заданы оба порога, значение `emergencyUsageThreshold` должно быть не меньше `plannedUsageThreshold`.
                      
                      * При использовании параметра `plannedUsageThreshold` необходимо настроить [окно технического обслуживания](../concepts/maintenance.md).
                      
                      {% endnote %}
                      
                      Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда. Эти значения не сохраняются в конфигурации ClickHouse®.
                      
                      Чтобы посмотреть информацию о конкретном шарде, включая настройки автоматического увеличения размера хранилища, воспользуйтесь методом [Cluster.GetShard](../api-ref/Cluster/getShard.md) и передайте в запросе идентификатор кластера и имя шарда.
                      
                      Идентификатор кластера можно получить [со списком кластеров](cluster-list.md#list-clusters) в каталоге.
                      
                      Имя шарда можно получить [со списком шардов](shards.md#list-shards) в кластере.

                * `access` — настройки, которые разрешают доступ к кластеру из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью Yandex WebSQL:

                    * `dataLens` — разрешить доступ из DataLens: `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке подключения в разделе [Подключение из DataLens](datalens-connect.md).
                    
                    * `webSql` — разрешить [выполнять SQL-запросы](web-sql-query.md) к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL: `true` или `false`. Значение по умолчанию — `false`.
                    
                    
                    * `metrika` — разрешить [импорт данных из AppMetrika в кластер](https://appmetrica.yandex.ru/docs/common/cloud/about.html): `true` или `false`. Значение по умолчанию — `false`.
                    
                    * `serverless` — разрешить доступ к кластеру из сервиса [Yandex Cloud Functions](../../functions/concepts/index.md): `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке доступа в документации [Cloud Functions](../../functions/operations/database-connection.md).
                    
                    * `dataTransfer` — разрешить доступ к кластеру из сервиса [Yandex Data Transfer](../../data-transfer/concepts/index.md) в Serverless-режиме: `true` или `false`. Значение по умолчанию — `false`.
                    
                        Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.
                    
                    
                    * `yandexQuery` — разрешить доступ к кластеру из сервиса [Yandex Query](../../query/concepts/index.md): `true` или `false`. Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md). Значение по умолчанию — `false`.

                * `cloudStorage` — настройки [гибридного хранилища](../concepts/storage.md#hybrid-storage-features):

                    * `enabled` — включить гибридное хранилище в кластере, если оно выключено: `true` или `false`. Значение по умолчанию — `false` (выключено).
                    
                        {% note info %}
                        
                        Включенное однажды гибридное хранилище нельзя отключить.
                        
                        {% endnote %}
                    
                    * `moveFactor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage.
                    
                        Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
                    
                    * `dataCacheEnabled` — разрешить временное хранение файлов в кластерном хранилище: `true` или `false`.
                    
                        По умолчанию — `true` (разрешено).
                    
                    * `dataCacheMaxSize` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов.
                        
                        Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
                    
                    * `preferNotToMerge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`.
                    
                        Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.

                * `sql...` и `adminPassword` — группа настроек для управления пользователями и базами данных через SQL:

                    * `adminPassword` — пароль пользователя `admin`.
                    * `sqlUserManagement` — режим [управления пользователями через SQL](cluster-users.md#sql-user-management): `true` или `false`.
                    * `sqlDatabaseManagement` — режим [управления базами данных через SQL](databases.md#sql-database-management): `true` или `false`. Необходимо, чтобы был включен режим управления пользователями через SQL.


                    {% note warning %}
                    
                    Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
                    
                    {% endnote %}

            * `databaseSpecs` — настройки баз данных в виде массива элементов. Каждый элемент соответствует отдельной базе данных и имеет следующую структуру:

                * `name` — имя базы данных.
                * `engine` — движок базы данных. Возможные значения:

                  * `DATABASE_ENGINE_ATOMIC` (по умолчанию) — движок Atomic. Поддерживает неблокирующие операции `DROP TABLE` и `RENAME TABLE`, а также атомарные операции `EXCHANGE TABLES`.
                  * `DATABASE_ENGINE_REPLICATED` — движок Replicated. Поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.
                                      
                    Доступен только в [реплицированных](../concepts/replication.md) кластерах.
                  
                  * `DATABASE_ENGINE_UNSPECIFIED` — для этого значения будет выбран движок по умолчанию `DATABASE_ENGINE_ATOMIC`.
                                      
                  Движок задается при создании базы данных и не может быть изменен для этой базы.

            * `userSpecs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

                * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.
                * `password` — пароль пользователя. Длина пароля — от 8 до 128 символов.
                
                    
                    Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо `"password": "<пароль_пользователя>"` укажите `"generatePassword": true`.
                
                    Чтобы увидеть пароль, в [консоли управления](https://console.yandex.cloud) выберите созданный кластер, перейдите на вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.
                
                
                * `permissions` — список БД, к которым пользователь должен иметь доступ.
                
                    Список организован в виде массива параметров `databaseName`. Один параметр содержит имя отдельной БД.

            * `hostSpecs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:

                * `type` — тип хоста: `CLICKHOUSE`.
                * `zoneId` — [зона доступности](../../overview/concepts/geo-scope.md).

                
                * `subnetId` — идентификатор [подсети](../../vpc/concepts/network.md#subnet).


                * `shardName` — имя [шарда](../concepts/sharding.md). Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

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

                   {% note warning %}
                   
                   Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее в разделе [Настройка групп безопасности](connect/index.md#configuring-security-groups).
                   
                   {% endnote %}

                Если вы создаете кластер из двух и более хостов ClickHouse® без сервиса координации и в [сети](../../vpc/concepts/network.md) кластера есть [подсети](../../vpc/concepts/network.md#subnet) в каждой [зоне доступности](../../overview/concepts/geo-scope.md), то три хоста ZooKeeper будут добавлены автоматически, по одному в каждую подсеть.
                
                Если подсети есть только в некоторых зонах доступности или вы хотите использовать другой сервис координации, вручную укажите сервис координации и настройки его хостов.


            * `shardSpecs` — настройки шардов в виде массива элементов, где каждый элемент соответствует отдельному шарду. Если не передать этот блок в запросе, будет создан кластер с одним шардом `shard1`. Вы можете задать следующие настройки:

                * `name` — имя шарда.
                * `weight` — вес шарда.
                * `configSpec.clickhouse` — конфигурация хостов шарда: класс хоста, настройки хранилища и настройки СУБД. Если не указывать конфигурацию хостов шарда, она будет унаследована от конфигурации кластера.

            * `deletionProtection` — защита кластера от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`.

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

            * `maintenanceWindow` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в том числе для выключенных кластеров). Выберите один из вариантов:

                * `anytime` (по умолчанию) — в любое время.
                * `weeklyMaintenanceWindow` — по расписанию:
                    * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC. Допустимые значения: от `1` до `24`.

                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

            
            Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


        1. Выполните запрос:

            ```bash
            curl \
              --request POST \
              --header "Authorization: Bearer $IAM_TOKEN" \
              --header "Content-Type: application/json" \
              --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters' \
              --data '@body.json'
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/create.md#responses).

- gRPC API {#grpc-api}

    Чтобы создать кластер Managed Service for ClickHouse® со встроенным сервисом координации ClickHouse® Keeper:

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Воспользуйтесь вызовом [ClusterService.Create](../api-ref/grpc/Cluster/create.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое (в примере приведены не все доступные параметры):

            
            ```json
            {
              "folder_id": "<идентификатор_каталога>",
              "name": "<имя_кластера>",
              "environment": "<окружение>",
              "network_id": "<идентификатор_сети>",
              "security_group_ids": [
                "<идентификатор_группы_безопасности_1>",
                "<идентификатор_группы_безопасности_2>",
                ...
                "<идентификатор_группы_безопасности_N>"
              ],
              "config_spec": {
                "version": "<версия_ClickHouse®>",
                "embedded_keeper": true,
                "clickhouse": {
                  "resources": {
                    "resource_preset_id": "<класс_хостов_ClickHouse®>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"
                  },
                  "disk_size_autoscaling": {
                    "planned_usage_threshold": "<порог_для_планового_увеличения_в_процентах>",
                    "emergency_usage_threshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                    "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                  }
                },
                "access": {
                  "data_lens": <доступ_из_DataLens>,
                  "web_sql": <выполнение_SQL-запросов_из_консоли_управления>,
                  "metrika": <доступ_из_Метрики_и_AppMetrika>,
                  "serverless": <доступ_из_Cloud_Functions>,
                  "data_transfer": <доступ_из_Data_Transfer>,
                  "yandex_query": <доступ_из_Yandex_Query>
                },
                "cloud_storage": {
                  "enabled": <использование_гибридного_хранилища>,
                  "move_factor": "<доля_свободного_места>",
                  "data_cache_enabled": <временное_хранение_файлов>,
                  "data_cache_max_size": "<максимальный_объем_памяти_для_хранения_файлов>",
                  "prefer_not_to_merge": <отключение_слияния_кусков_данных>
                },
                "admin_password": "<пароль_пользователя_admin>",
                "sql_user_management": <управление_пользователями_через_SQL>,
                "sql_database_management": <управление_базами_данных_через_SQL>
              },
              "database_specs": [
                {
                  "name": "<имя_базы_данных>",
                  "engine": "<движок_базы_данных>"
                },
                { <аналогичный_набор_настроек_для_базы_данных_2> },
                { ... },
                { <аналогичный_набор_настроек_для_базы_данных_N> }
              ],
              "user_specs": [
                {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "database_name": "<имя_базы_данных>"
                    }
                  ]
                },
                { <аналогичный_набор_настроек_для_пользователя_2> },
                { ... },
                { <аналогичный_набор_настроек_для_пользователя_N> }
              ],
              "host_specs": [
                {
                  "zone_id": "<зона_доступности>",
                  "type": "<тип_хоста>",
                  "subnet_id": "<идентификатор_подсети>",
                  "assign_public_ip": <публичный_доступ_к_хосту>,
                  "shard_name": "<имя_шарда>"
                },
                { <аналогичный_набор_настроек_для_хоста_2> },
                { ... },
                { <аналогичный_набор_настроек_для_хоста_N> }
              ],
              "shard_specs": [
                {
                  "name": "<имя_шарда>",
                  "config_spec": {
                    "clickhouse": {
                      "weight": "<вес_шарда>",
                      "resources": {
                        "resource_preset_id": "<класс_хостов>",
                        "disk_size": "<размер_хранилища_в_байтах>",
                        "disk_type_id": "<тип_диска>"
                      },
                      "disk_size_autoscaling": {
                        "planned_usage_threshold": "<порог_для_планового_увеличения_в_процентах>",
                        "emergency_usage_threshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                        "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                      },
                      "config": {
                        <настройки_СУБД>
                      }
                    }
                  }
                },
                { <аналогичный_набор_настроек_для_шарда_2> },
                { ... },
                { <аналогичный_набор_настроек_для_шарда_N> }
              ],
              "deletion_protection": <защита_кластера_от_удаления>,
              "maintenance_window": {
                "weekly_maintenance_window": {
                  "day": "<день_недели>",
                  "hour": "<порядковый_номер_часового_интервала>"
                }
              }
            ```


            Где:

            * `name` — имя кластера.
            * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.

            * `network_id` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер.

            
            * `security_group_ids` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. массив Каждая строка — идентификатор группы безопасности.

                {% note warning %}
                
                Если при создании кластера вы указали идентификаторы групп безопасности, то для подключения к кластеру может потребоваться [настройка групп безопасности](connect/index.md#configuring-security-groups).
                
                {% endnote %}


            * `config_spec` — конфигурация кластера:

                * `version` — версия ClickHouse®: 25.8.24.21 LTS, 26.3.12.3 LTS, 26.4.4.38 и 26.5.2.39.

                * `embedded_keeper` — использование встроенного [сервиса координации](../concepts/coordination-system.md) ClickHouse® Keeper: `true` или `false`.

                    {% note alert %}
                    
                    ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
                    
                    {% endnote %}

                * `clickhouse` — конфигурация ClickHouse®:

                    * `resources.resource_preset_id` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.disk_size` — размер диска в байтах.
                    * `resources.disk_type_id` — [тип диска](../concepts/storage.md).

                    * `disk_size_autoscaling` — настройки автоматического увеличения размера хранилища ClickHouse®:

                        * `planned_usage_threshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).
                                              
                          Допустимые значения: от `0` до `100`.
                                              
                        * `emergency_usage_threshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).
                                              
                          Допустимые значения: от `0` до `100`.
                                              
                        * `disk_size_limit` — максимальный размер хранилища ClickHouse®, в байтах.
                                              
                        {% note warning %}
                                              
                        * Если заданы оба порога, значение `emergency_usage_threshold` должно быть не меньше `planned_usage_threshold`.
                                              
                        * При использовании параметра `planned_usage_threshold` необходимо настроить [окно технического обслуживания](../concepts/maintenance.md).
                                              
                        {% endnote %}
                                              
                        Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда. Эти значения не сохраняются в конфигурации ClickHouse®.
                                              
                        Чтобы посмотреть информацию о конкретном шарде, включая настройки автоматического увеличения размера хранилища, воспользуйтесь методом [ClusterService.GetShard](../api-ref/grpc/Cluster/getShard.md) и передайте в запросе идентификатор кластера и имя шарда.
                                              
                        Идентификатор кластера можно получить [со списком кластеров](cluster-list.md#list-clusters) в каталоге.
                        
                        Имя шарда можно получить [со списком шардов](shards.md#list-shards) в кластере.

                * `access` — настройки, которые разрешают доступ к кластеру из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью Yandex WebSQL:

                    * `data_lens` — разрешить доступ из DataLens: `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке подключения в разделе [Подключение из DataLens](datalens-connect.md).
                    
                    * `web_sql` — разрешить [выполнять SQL-запросы](web-sql-query.md) к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL: `true` или `false`. Значение по умолчанию — `false`.
                    
                    
                    * `metrika` — разрешить [импорт данных из AppMetrika в кластер](https://appmetrica.yandex.ru/docs/common/cloud/about.html): `true` или `false`. Значение по умолчанию — `false`.
                    
                    * `serverless` — разрешить доступ к кластеру из сервиса [Yandex Cloud Functions](../../functions/concepts/index.md): `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке доступа в документации [Cloud Functions](../../functions/operations/database-connection.md).
                    
                    * `data_transfer` — разрешить доступ к кластеру из сервиса [Yandex Data Transfer](../../data-transfer/concepts/index.md) в Serverless-режиме: `true` или `false`. Значение по умолчанию — `false`.
                    
                        Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.
                    
                    
                    * `yandex_query` — разрешить доступ к кластеру из сервиса [Yandex Query](../../query/concepts/index.md): `true` или `false`. Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md). Значение по умолчанию — `false`.

                * `cloud_storage` — настройки [гибридного хранилища](../concepts/storage.md#hybrid-storage-features):

                    * `enabled` — включить гибридное хранилище в кластере, если оно выключено: `true` или `false`. Значение по умолчанию — `false` (выключено).
                    
                        {% note info %}
                        
                        Включенное однажды гибридное хранилище нельзя отключить.
                        
                        {% endnote %}
                    
                    * `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage.
                    
                        Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
                    
                    * `data_cache_enabled` — разрешить временное хранение файлов в кластерном хранилище: `true` или `false`.
                    
                        По умолчанию — `true` (разрешено).
                    
                    * `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов.
                    
                        Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
                    
                    * `prefer_not_to_merge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`.
                    
                        Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.

                * `sql...` и `admin_password` — группа настроек для управления пользователями и базами данных через SQL:

                    * `admin_password` — пароль пользователя `admin`.
                    * `sql_user_management` — режим [управления пользователями через SQL](cluster-users.md#sql-user-management): `true` или `false`.
                    * `sql_database_management` — режим [управления базами данных через SQL](databases.md#sql-database-management): `true` или `false`. Необходимо, чтобы был включен режим управления пользователями через SQL.


                    {% note warning %}
                    
                    Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
                    
                    {% endnote %}

            * `database_specs` — настройки баз данных в виде массива элементов. Каждый элемент соответствует отдельной базе данных и имеет следующую структуру:

                * `name` — имя базы данных.
                * `engine` — движок базы данных. Возможные значения:

                  * `DATABASE_ENGINE_ATOMIC` (по умолчанию) — движок Atomic. Поддерживает неблокирующие операции `DROP TABLE` и `RENAME TABLE`, а также атомарные операции `EXCHANGE TABLES`.
                  * `DATABASE_ENGINE_REPLICATED` — движок Replicated. Поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.
                                      
                    Доступен только в [реплицированных](../concepts/replication.md) кластерах.
                  
                  * `DATABASE_ENGINE_UNSPECIFIED` — для этого значения будет выбран движок по умолчанию `DATABASE_ENGINE_ATOMIC`.
                                      
                  Движок задается при создании базы данных и не может быть изменен для этой базы.

            * `user_specs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

                * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.
                * `password` — пароль пользователя. Длина пароля — от 8 до 128 символов.
                
                  
                  Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо `"password": "<пароль_пользователя>"` укажите `"generate_password": true`.
                
                  Чтобы увидеть пароль, в [консоли управления](https://console.yandex.cloud) выберите созданный кластер, перейдите на вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.
                
                
                * `permissions` — список БД, к которым пользователь должен иметь доступ.
                
                    Список организован в виде массива параметров `database_name`. Один параметр содержит имя отдельной БД.

            * `host_specs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:

                * `type` — тип хоста: `CLICKHOUSE`.
                * `zone_id` — [зона доступности](../../overview/concepts/geo-scope.md).

                
                * `subnet_id` — идентификатор [подсети](../../vpc/concepts/network.md#subnet).


                * `shard_name` — имя [шарда](../concepts/sharding.md). Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

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

                   {% note warning %}
                   
                   Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее в разделе [Настройка групп безопасности](connect/index.md#configuring-security-groups).
                   
                   {% endnote %}

                Если вы создаете кластер из двух и более хостов ClickHouse® без сервиса координации и в [сети](../../vpc/concepts/network.md) кластера есть [подсети](../../vpc/concepts/network.md#subnet) в каждой [зоне доступности](../../overview/concepts/geo-scope.md), то три хоста ZooKeeper будут добавлены автоматически, по одному в каждую подсеть.
                
                Если подсети есть только в некоторых зонах доступности или вы хотите использовать другой сервис координации, вручную укажите сервис координации и настройки его хостов.


            * `shard_specs` — настройки шардов в виде массива элементов, где каждый элемент соответствует отдельному шарду. Если не передать этот блок в запросе, будет создан кластер с одним шардом `shard1`. Вы можете задать следующие настройки:

                * `name` — имя шарда.
                * `weight` — вес шарда.
                * `config_spec.clickhouse` — конфигурация хостов шарда: класс хоста, настройки хранилища и настройки СУБД. Если не указывать конфигурацию хостов шарда, она будет унаследована от конфигурации кластера.

            * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`.

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

            * `maintenance_window` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в том числе для выключенных кластеров). Выберите один из вариантов:

              * `anytime` (по умолчанию) — в любое время.
              * `weekly_maintenance_window` — по расписанию:
                  * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                  * `hour` — порядковый номер часового интервала по UTC. Допустимые значения: от `1` до `24`.

                    > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

            
            Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


        1. Выполните запрос:

            ```bash
            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 @ \
              mdb.api.cloud.yandex.net:443 \
              yandex.cloud.mdb.clickhouse.v1.ClusterService.Create \
              < body.json
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Создать кластер с ZooKeeper {#create-cluster-zk}

{% list tabs group=instructions %}

- Консоль управления {#console}

  Чтобы создать кластер Managed Service for ClickHouse® с сервисом координации ZooKeeper:

  1. В [консоли управления](https://console.yandex.cloud) выберите каталог, в котором нужно создать кластер БД.
  1. Перейдите в сервис **Managed Service for&nbsp;ClickHouse**.
  1. Нажмите кнопку **Создать кластер**.
  1. Введите имя кластера в поле **Имя кластера**. Имя кластера должно быть уникальным в рамках каталога.
  1. Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
      * `PRODUCTION` — для стабильных версий ваших приложений.
      * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
  1. Выберите [версию ClickHouse®](../concepts/update-policy.md), которую будет использовать кластер Managed Service for ClickHouse®, из выпадающего списка **Версия**. Для большинства кластеров рекомендуется выбрать самую новую LTS-версию.

  1. В блоке **Ресурсы**:

      * Выберите платформу, тип виртуальной машины и класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md). При изменении класса хостов для кластера меняются характеристики всех уже созданных экземпляров.

      
      * Выберите [тип диска](../concepts/storage.md).

        От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
        
        * Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
        * Локальные SSD-диски:
            * для платформ **Intel Broadwell** и **Intel Cascade Lake** — с шагом 100 ГБ;
            * для платформ **Intel Ice Lake** и **AMD Zen 4** — с шагом 368 ГБ.
        * Нереплицируемые SSD-диски и cверхбыстрые сетевые SSD-диски с тремя репликами — с шагом 93 ГБ.


      * Выберите размер диска, который будет использоваться для данных и резервных копий. Подробнее о том, как занимают пространство резервные копии, в разделе [Резервные копии](../concepts/backup.md).

      * (Опционально) Задайте настройки [автоматического увеличения размера хранилища](../concepts/storage.md#autoscaling) ClickHouse®:

        * В поле **Увеличивать размер** выберите один или оба порога:
          * **В окно обслуживания при заполненности более** — порог для планового увеличения. При его достижении размер хранилища увеличивается во время ближайшего [окна обслуживания](../concepts/maintenance.md#maintenance-window).
            
            Для планового увеличения необходимо настроить расписание [окна обслуживания](../concepts/maintenance.md#maintenance-window).
        
          * **Незамедлительно при заполненности более** — порог для незамедлительного увеличения. При его достижении размер хранилища увеличивается немедленно.
        * Задайте пороговое значение (в процентах от общего размера хранилища). Если выбраны оба порога, значение для незамедлительного увеличения должно быть не меньше, чем для планового.
        * Задайте **Максимальный размер хранилища**.

        Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда.

  
  1. В блоке **Сетевые настройки** выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная [настройка групп безопасности](connect/index.md#configuring-security-groups) для того, чтобы можно было подключаться к кластеру.


    1. (Опционально) В блоке **Настройки шардирования**:

        * Включите **Шардирование кластера**, чтобы создать кластер сразу с несколькими [шардами](../concepts/sharding.md). Добавить шарды можно также и после создания кластера.

        * Укажите параметры шардов, создаваемых вместе с кластером. Чтобы изменить настройки шарда, нажмите на значок ![pencil](../../_assets/console-icons/pencil.svg) в строке с его номером:

            * **Имя шарда** и его **Вес**.

            * **Конфигурация** хостов шарда:

                * **По умолчанию** — конфигурация хостов будет унаследована от конфигурации кластера.

                * **Переопределённая** — задайте класс хоста, настройки хранилища и настройки СУБД для всех хостов шарда.

        Чтобы добавить шарды в кластер, нажмите кнопку **Добавить шард**.

  1. В блоке **Хосты**:

      * Укажите параметры хостов БД, создаваемых вместе с кластером. Чтобы изменить настройки хоста, нажмите на значок ![pencil](../../_assets/console-icons/pencil.svg) в строке с его номером:

        * **Зона доступности** — выберите [зону доступности](../../overview/concepts/geo-scope.md).

        
        * **Подсеть** — укажите [подсеть](../../vpc/concepts/network.md#subnet) в выбранной зоне доступности.
        * **Публичный доступ** — разрешите [доступ](connect/index.md) к хосту из интернета.


        * Если для кластера включено [шардирование](../concepts/sharding.md), выберите шард.

        Чтобы добавить хосты в кластер, нажмите кнопку **Добавить хост**.

      * Выберите [сервис координации](../concepts/coordination-system.md) **ZooKeeper (на отдельных хостах)**.

  1. В блоке **Класс хоста ZooKeeper** выберите платформу, тип виртуальной машины и [класс хоста](../concepts/instance-types.md) для хостов ZooKeeper.

  1. В блоке **Размер хранилища ZooKeeper** выберите [тип диска](../concepts/storage.md), размер хранилища и при необходимости задайте настройки [автоматического увеличения размера хранилища](../concepts/storage.md#autoscaling) для хостов ZooKeeper.

  1. В блоке **Хосты ZooKeeper** при необходимости измените настройки автоматически добавленных хостов ZooKeeper.

      Чтобы изменить настройки хоста, нажмите на значок ![pencil](../../_assets/console-icons/pencil.svg) в строке нужного хоста и укажите:

      * **Зона доступности** — выберите [зону доступности](../../overview/concepts/geo-scope.md).

      
      * **Подсеть** — выберите [подсеть](../../vpc/concepts/network.md#subnet) в выбранной зоне доступности.


  1. В блоке **Настройки СУБД**:

      * Если вы хотите управлять пользователями кластера через SQL, в поле **Управление пользователями через SQL** выберите из выпадающего списка **Включено** и укажите пароль пользователя `admin`. Управление пользователями через другие интерфейсы при этом станет недоступно.

        В противном случае выберите **Выключено**.


      * Если вы хотите управлять базами данных через SQL, в поле **Управление базами данных через SQL** выберите из выпадающего списка **Включено**. Управление базами данных через другие интерфейсы при этом станет недоступно. Поле неактивно, если управление пользователями через SQL выключено.

        В противном случае выберите **Выключено**.

        {% note warning %}
        
        Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
        
        {% endnote %}

      * Укажите имя пользователя.

        Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.

      
      * Укажите пароль пользователя:

        * **Ввести вручную** — выберите, чтобы ввести свой пароль. Длина пароля — от 8 до 128 символов.

        * **Сгенерировать** — выберите, чтобы сгенерировать пароль с помощью сервиса Connection Manager.

        Чтобы увидеть пароль, после создания кластера выберите вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.


      * Укажите имя БД. Имя базы может содержать латинские буквы, цифры и подчеркивание. Максимальная длина имени 63 символа. Запрещено создание базы данных с именем `default`.

      * Выберите движок базы данных:

        * `Atomic` (по умолчанию) — поддерживает неблокирующие операции `DROP TABLE` и `RENAME TABLE`, а также атомарные операции `EXCHANGE TABLES`.
        * `Replicated` — поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.

          Доступен только в [реплицированных](../concepts/replication.md) кластерах.

        Движок задается при создании базы данных и не может быть изменен для этой базы.

      * При необходимости включите для кластера [гибридное хранилище](../concepts/storage.md#hybrid-storage-features).

        {% note warning %}

        Эту опцию невозможно выключить.

        {% endnote %}

      * При необходимости задайте [настройки СУБД](../concepts/settings-list.md#server-level-settings). Их также можно задать позднее.

        Через интерфейсы Yandex Cloud можно управлять ограниченным набором настроек. С помощью SQL-запросов можно [установить настройки ClickHouse® на уровне запроса](change-query-level-settings.md).

  1. При необходимости задайте сервисные настройки кластера:

      * **Начало резервного копирования (UTC)** — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию — `22:00 - 23:00` UTC.
      
      * **Срок хранения автоматических резервных копий, дней** — время, в течение которого нужно хранить созданные автоматически резервные копии (в днях). Если для такой копии истекает срок хранения, то она удаляется. Значение по умолчанию — 7 дней. Подробнее в разделе [Резервные копии](../concepts/backup.md#storage).
      
          Изменение срока хранения затрагивает как новые автоматические резервные копии, так и уже существующие. Например, изначальный срок хранения был 7 дней, оставшееся время жизни отдельной автоматической резервной копии — 1 день. При увеличении срока хранения до 9 дней оставшееся время жизни этой резервной копии будет уже 3 дня.
      
      * **Обслуживание** — настройки времени [технического обслуживания](../concepts/maintenance.md):
      
         * Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт **В любое время** (по умолчанию).
         * Чтобы указать предпочтительное время начала обслуживания, выберите пункт **По расписанию** и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
         
         Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
      
      
      * **Сервисный аккаунт** — аккаунт, от имени которого пользовательские программы могут управлять кластером. Подробнее в документации [Управление доступом в Managed Service for ClickHouse®](../security.md).
      
      * **Шифрование дисков** — опция включает шифрование диска [пользовательским ключом KMS](../../kms/concepts/key.md). Задайте ключ одним из способов:
      
         * Чтобы [создать](../../kms/operations/key.md#create) новый ключ, нажмите кнопку **Создать**.
      
         * Чтобы использовать созданный ранее ключ, выберите его в поле **Ключ KMS**.
      
         Подробнее о шифровании дисков в разделе [Хранилище](../concepts/storage.md#disk-encryption).
      
      
      * **Доступ из DataLens** — опция разрешает анализировать данные из кластера в сервисе [Yandex DataLens](../../datalens/concepts/index.md).
      
      
      * **Доступ из WebSQL** — опция разрешает [выполнять SQL-запросы](web-sql-query.md) к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL.
      
      
      
      
      * **Доступ из Метрики и AppMetrica** — опция разрешает [импортировать данные из AppMetrica](https://appmetrica.yandex.ru/docs/common/cloud/about.html) в кластер.
      
      * **Доступ из Serverless** — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса [Yandex Cloud Functions](../../functions/concepts/index.md). Подробнее о настройке доступа в документации [Cloud Functions](../../functions/operations/database-connection.md).
      
      
      * **Доступ из Yandex Query** — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса [Yandex Query](../../query/concepts/index.md). Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md).
      
      * **Защита от удаления** — управляет защитой кластера от непреднамеренного удаления.
      
         Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.

  1. Нажмите кнопку **Создать кластер**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы создать кластер Managed Service for ClickHouse® с сервисом координации ZooKeeper:

  
  1. Проверьте, есть ли в каталоге подсети для хостов кластера:

      ```bash
      yc vpc subnet list
      ```

     Если ни одной подсети в каталоге нет, [создайте нужные подсети](../../vpc/operations/subnet-create.md) в сервисе VPC.


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

      ```bash
      yc managed-clickhouse cluster create --help
      ```

  1. Укажите параметры кластера в команде создания (в примере приведены не все доступные параметры):

      
      ```bash
      yc managed-clickhouse cluster create \
        --name <имя_кластера> \
        --environment <окружение> \
        --network-name <имя_сети> \
        --shard name=<имя_шарда>,weight=<вес_шарда> \
        --host type=<тип_хоста>,`
              `zone-id=<зона_доступности>,`
              `subnet-id=<идентификатор_подсети>,`
              `assign-public-ip=<публичный_доступ_к_хосту>,`
              `shard-name=<имя_шарда> \
        --clickhouse-resource-preset <класс_хоста> \
        --clickhouse-disk-type <тип диска> \
        --clickhouse-disk-size <размер_хранилища_ГБ> \
        --zookeeper-resource-preset <класс_хоста> \
        --zookeeper-disk-type <тип диска> \
        --zookeeper-disk-size <размер_хранилища_ГБ> \
        --user name=<имя_пользователя>,password=<пароль_пользователя> \
        --database name=<имя_базы_данных> \
        --security-group-ids <список_идентификаторов_групп_безопасности> \
        --websql-access=<доступ_из_WebSQL> \
        --deletion-protection
      ```


      Где:

      * `--environment` — окружение кластера: `prestable` или `production`.
      * `--shard` — параметры [шарда](../concepts/sharding.md): его имя и вес.

        Чтобы создать кластер сразу с несколькими шардами, передайте этот флаг нужное количество раз. Если не указать флаг `--shard`, будет создан кластер с одним шардом `shard1`.

      * `--host` — параметры хоста:
        * `type` — тип хоста: `clickhouse` или `zookeeper`.
        * `zone-id` — зона доступности.

        
        * `subnet-id` — идентификатор подсети. Его необходимо указывать, если в выбранной зоне доступности создано две и более подсетей.
        * `assign-public-ip` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

          {% note warning %}
          
          Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее в разделе [Настройка групп безопасности](connect/index.md#configuring-security-groups).
          
          {% endnote %}


        * `shard-name` — имя шарда, в котором будет размещен хост.

        
        Если вы создаете кластер из двух и более хостов ClickHouse® без сервиса координации и в [сети](../../vpc/concepts/network.md) кластера есть [подсети](../../vpc/concepts/network.md#subnet) в каждой [зоне доступности](../../overview/concepts/geo-scope.md), то три хоста ZooKeeper будут добавлены автоматически, по одному в каждую подсеть.
        
        Если подсети есть только в некоторых зонах доступности или вы хотите использовать другой сервис координации, вручную укажите сервис координации и настройки его хостов.


        Для каждого хоста необходимо указать отдельный флаг `--host`.

      * `--clickhouse-resource-preset` — [класс хоста](../concepts/instance-types.md) ClickHouse®.
      * `--clickhouse-disk-type` — [тип диска](../concepts/storage.md) ClickHouse®.
      * `--clickhouse-disk-size` — размер хранилища ClickHouse® в ГБ.
      * `--zookeeper-resource-preset` — [класс хоста](../concepts/instance-types.md) ZooKeeper.
      * `--zookeeper-disk-type` — [тип диска](../concepts/storage.md) ZooKeeper.
      * `--zookeeper-disk-size` — размер хранилища ZooKeeper в ГБ.
      * `--user` — содержит имя (`name`) и пароль (`password`) пользователя ClickHouse®.

        Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.

        Длина пароля — от 8 до 128 символов.

        
        {% note info %}

        Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого измените команду и задайте параметры пользователя таким образом:

        ```bash
          --user name=<имя_пользователя>,generate-password=true
        ```

        Чтобы увидеть пароль, в [консоли управления](https://console.yandex.cloud) выберите созданный кластер, перейдите на вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.

        {% endnote %}


      
      * `--security-group-ids` — идентификаторы групп безопасности через запятую.

          {% note warning %}
          
          Если при создании кластера вы указали идентификаторы групп безопасности, то для подключения к кластеру может потребоваться [настройка групп безопасности](connect/index.md#configuring-security-groups).
          
          {% endnote %}


      * `--websql-access` — разрешает [выполнять SQL-запросы](web-sql-query.md) к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL. Значение по умолчанию — `false`.

      * `--deletion-protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

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

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

      {% note warning %}
      
      Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
      
      {% endnote %}

      1. Чтобы включить [режим управления пользователями через SQL](cluster-users.md#sql-user-management):

         * задайте значение `true` для параметра `--enable-sql-user-management`;
         * задайте пароль для пользователя `admin` в параметре `--admin-password`.

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --enable-sql-user-management true \
           --admin-password "<пароль_пользователя_admin>"
         ```


      1. Чтобы включить [режим управления базами данных через SQL](databases.md#sql-database-management):

         * задайте значение `true` для параметров `--enable-sql-user-management` и `--enable-sql-database-management`;
         * задайте пароль для пользователя `admin` в параметре `--admin-password`.

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --enable-sql-user-management true \
           --enable-sql-database-management true \
           --admin-password "<пароль_пользователя_admin>"
         ```

      
      1. Чтобы зашифровать диск [пользовательским ключом KMS](../../kms/concepts/key.md), передайте параметр `--disk-encryption-key-id <идентификатор_ключа_KMS>`.

         Подробнее о шифровании дисков читайте в разделе [Хранилище](../concepts/storage.md#disk-encryption).

      1. Чтобы разрешить доступ к кластеру из сервиса [Yandex Cloud Functions](../../functions/concepts/index.md), передайте параметр `--serverless-access`. Подробнее о настройке доступа читайте в документации [Cloud Functions](../../functions/operations/database-connection.md).


      1. Чтобы разрешить доступ к кластеру из сервиса [Yandex Query](../../query/concepts/index.md), передайте параметр `--yandexquery-access=true`. Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md).


      1. Чтобы задать [настройки гибридного хранилища](../concepts/storage.md#hybrid-storage-settings):

         * Включите гибридное хранилище, задав значение `true` для параметра `--cloud-storage`.

            {% note info %}
            
            Включенное однажды гибридное хранилище нельзя отключить.
            
            {% endnote %}

         * Передайте настройки гибридного хранилища в соответствующих параметрах:

            * `--cloud-storage-data-cache` — разрешает временное хранение файлов в кластерном хранилище. По умолчанию — `true` (разрешено).
            * `--cloud-storage-data-cache-max-size` — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
            * `--cloud-storage-move-factor` — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
            * `--cloud-storage-prefer-not-to-merge` — отключает [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах. Чтобы отключить слияние, укажите значение `true` или передайте параметр без значения. Чтобы оставить слияние включенным, укажите значение `false` или не передавайте параметр в команде CLI при создании кластера.

         ```bash
         yc managed-clickhouse cluster create \
            ...
            --cloud-storage=true \
            --cloud-storage-data-cache=<хранение_файлов> \
            --cloud-storage-data-cache-max-size=<объем_памяти_в_байтах> \
            --cloud-storage-move-factor=<доля_свободного_места> \
            --cloud-storage-prefer-not-to-merge=<слияние_кусков_данных>
           ...
         ```

         Где:
         * `--cloud-storage-data-cache` — хранение файлов в кластерном хранилище: `true` или `false`.
         * `--cloud-storage-prefer-not-to-merge` — отключает слияние кусков данных в кластерном и объектном хранилищах: `true` или `false`.

      1. Чтобы задать настройки автоматического увеличения размера хранилищ ClickHouse® и ZooKeeper, используйте флаг `--disk-size-autoscaling`:

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --disk-size-autoscaling clickhouse-disk-size-limit=<максимальный_размер_хранилища_ГБ>,`
                                  `clickhouse-planned-usage-threshold=<порог_для_планового_увеличения_в_процентах>,`
                                  `clickhouse-emergency-usage-threshold=<порог_для_незамедлительного_увеличения_в_процентах>,`
                                  `zookeeper-disk-size-limit=<максимальный_размер_хранилища_ГБ>,`
                                  `zookeeper-planned-usage-threshold=<порог_для_планового_увеличения_в_процентах>,`
                                  `zookeeper-emergency-usage-threshold=<порог_для_незамедлительного_увеличения_в_процентах>
           ...
         ```

         Где `--disk-size-autoscaling` — настройки автоматического увеличения размера хранилищ:

         * `clickhouse-disk-size-limit` — максимальный размер хранилища ClickHouse®, в гигабайтах.
         
         * `clickhouse-planned-usage-threshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).
         
           Допустимые значения: от `0` до `100`.
         
         * `clickhouse-emergency-usage-threshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).
         
           Допустимые значения: от `0` до `100`.
         
         * `zookeeper-disk-size-limit` — максимальный размер хранилища ZooKeeper, в гигабайтах.
         
         * `zookeeper-planned-usage-threshold` — порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).
         
           Допустимые значения: от `0` до `100`.
         
         * `zookeeper-emergency-usage-threshold` — порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).
         
           Допустимые значения: от `0` до `100`.
         
         {% note warning %}
         
         * Если заданы оба порога для ClickHouse®, значение `clickhouse-emergency-usage-threshold` должно быть не меньше `clickhouse-planned-usage-threshold`.
         
         * Если заданы оба порога для ZooKeeper, значение `zookeeper-emergency-usage-threshold` должно быть не меньше `zookeeper-planned-usage-threshold`.
         
         * При использовании параметров `clickhouse-planned-usage-threshold` и `zookeeper-planned-usage-threshold` необходимо настроить [окно технического обслуживания](../concepts/maintenance.md).
         
         {% endnote %}

         Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем шардам. Чтобы задать индивидуальные настройки для отдельного шарда, передайте аналогичные параметры во флаге `--shard`:

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --shard name=<имя_шарда>,`
                  `disk-size-limit=<максимальный_размер_хранилища_ГБ>,`
                  `planned-usage-threshold=<порог_для_планового_увеличения_в_процентах>,`
                  `emergency-usage-threshold=<порог_для_незамедлительного_увеличения_в_процентах>
           ...
         ```

      1. Чтобы настроить [окно технического обслуживания](../concepts/maintenance.md), используйте флаг `--maintenance-window`:

         ```bash
         yc managed-clickhouse cluster create \
           ...
           --maintenance-window type=<тип_технического_обслуживания>,`
                               `day=<день_недели>,`
                               `hour=<порядковый_номер_часового_интервала>
                               
           ...
         ```

         Где `--maintenance-window` — настройки окна технического обслуживания:

         * `type` — тип окна технического обслуживания. Допустимые значения:

           * `anytime` (по умолчанию) — в любое время.
           * `weekly` — по расписанию. Для этого значения необходимо передать параметры `hour` и `day`:

         * `day` — день недели для типа `weekly`. Допустимые значения: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`, `SUN`.
         * `hour` — порядковый номер часового интервала по UTC. Допустимые значения: от `1` до `24`.

            > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.         


- Terraform {#tf}

  [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
  
  Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
  
  Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../terraform/index.md).

  Чтобы создать кластер Managed Service for ClickHouse® с сервисом координации ZooKeeper:

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

    1. Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
       
       
       Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

    1. Создайте конфигурационный файл с описанием [облачной сети](../../vpc/concepts/network.md#network) и [подсетей](../../vpc/concepts/network.md#subnet).
        * Сеть — описание [облачной сети](../../vpc/concepts/network.md#network), в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
        * Подсети — описание [подсетей](../../vpc/concepts/network.md#network), к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.

       Пример структуры конфигурационного файла, в котором описывается облачная сеть с одной подсетью:

       ```hcl
       resource "yandex_vpc_network" "<имя_сети_в_Terraform>" {
         name = "<имя_сети>"
       }

       resource "yandex_vpc_subnet" "<имя_подсети_в_Terraform>" {
         name           = "<имя_подсети>"
         zone           = "<зона_доступности>"
         network_id     = yandex_vpc_network.<имя_сети_в_Terraform>.id
         v4_cidr_blocks = ["<подсеть>"]
       }
       ```

    1. Создайте конфигурационный файл с описанием ресурсов кластера, которые необходимо создать:

       * Кластер базы данных — описание кластера и его хостов. Здесь же при необходимости:
          * Задайте [настройки СУБД на уровне сервера](../concepts/settings-list.md#server-level-settings). Их также можно указать позднее.
          * Включите защиту кластера от непреднамеренного удаления.

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

       * База данных — описание БД кластера.
       * Пользователь — описание пользователя кластера. Здесь же при необходимости задайте [настройки СУБД на уровне пользователя](../concepts/settings-list.md#dbms-user-settings). Их также можно указать позднее.

          Через интерфейсы Yandex Cloud можно управлять ограниченным набором настроек. С помощью SQL-запросов можно [установить настройки ClickHouse® на уровне запроса](change-query-level-settings.md).

       Пример структуры конфигурационного файла, в котором описывается кластер из двух хостов ClickHouse® и трех хостов ZooKeeper:

       ```hcl
       resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
         name                = "<имя_кластера>"
         environment         = "<окружение>"
         network_id          = yandex_vpc_network.<имя_сети_в_Terraform>.id
         security_group_ids  = ["<список_идентификаторов_групп_безопасности>"]
         deletion_protection = <защита_кластера_от_удаления>

         clickhouse = {
           resources = {
             resource_preset_id = "<класс_хоста>"
             disk_type_id       = "<тип_диска>"
             disk_size          = <размер_хранилища_ГБ>
           }
         }

         zookeeper = {
           resources = {
             resource_preset_id = "<класс_хоста>"
             disk_type_id       = "<тип_диска>"
             disk_size          = <размер_хранилища_ГБ>
           }
         }

         shards = {
           "<имя_шарда>" = {
             weight = <вес_шарда>
           }
         }

         hosts = {
           "<имя_хоста_1>" = {
             type             = "CLICKHOUSE"
             zone             = "<зона_доступности>"
             subnet_id        = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
             assign_public_ip = <публичный_доступ_к_хосту>
             shard_name       = "<имя_шарда>"
           }

           "<имя_хоста_2>" = {
             type             = "CLICKHOUSE"
             zone             = "<зона_доступности>"
             subnet_id        = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
             assign_public_ip = <публичный_доступ_к_хосту>
             shard_name       = "<имя_шарда>"
           }

           "<имя_хоста_3>" = {
             type             = "ZOOKEEPER"
             zone             = "<зона_доступности>"
             subnet_id        = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
           }

           "<имя_хоста_4>" = {
             type             = "ZOOKEEPER"
             zone             = "<зона_доступности>"
             subnet_id        = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
           }

           "<имя_хоста_5>" = {
             type             = "ZOOKEEPER"
             zone             = "<зона_доступности>"
             subnet_id        = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
           }
         }
       }

       resource "yandex_mdb_clickhouse_database" "<имя_БД>" {
         cluster_id = yandex_mdb_clickhouse_cluster_v2.<имя_кластера>.id
         name       = "<имя_БД>"
       }

       resource "yandex_mdb_clickhouse_user" "<имя_пользователя>" {
         cluster_id = yandex_mdb_clickhouse_cluster_v2.<имя_кластера>.id
         name       = "<имя_пользователя>"
         password   = "<пароль_пользователя>"
         permission {
           database_name = yandex_mdb_clickhouse_database.<имя_БД>.name
         }
         settings {
           <имя_параметра_1> = <значение_1>
           <имя_параметра_2> = <значение_2>
           ...
         }
       }
       ```

       Где:

       * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

       * `shards` — [шарды](../concepts/sharding.md) кластера в виде ассоциативного массива элементов. Ключ задает имя шарда, а значение включает параметр `weight` — вес шарда.

       * `hosts` — хосты кластера в виде ассоциативного массива элементов. Ключ задает имя хоста, а значение — параметры хоста. Каждый элемент имеет следующую структуру:

          * `type` — тип хоста: `CLICKHOUSE` или `ZOOKEEPER`.
          * `zone` — [зона доступности](../../overview/concepts/geo-scope.md).
          * `subnet_id` — идентификатор [подсети](../../vpc/concepts/network.md#subnet).
          * `assign_public_ip` — публичный доступ к хосту ClickHouse®: `true` или `false`. Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

            {% note warning %}
            
            Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее в разделе [Настройка групп безопасности](connect/index.md#configuring-security-groups).
            
            {% endnote %}

          * `shard_name` — имя шарда. Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

          Если вы создаете кластер из двух и более хостов ClickHouse® без сервиса координации и в [сети](../../vpc/concepts/network.md) кластера есть [подсети](../../vpc/concepts/network.md#subnet) в каждой [зоне доступности](../../overview/concepts/geo-scope.md), то три хоста ZooKeeper будут добавлены автоматически, по одному в каждую подсеть.
          
          Если подсети есть только в некоторых зонах доступности или вы хотите использовать другой сервис координации, вручную укажите сервис координации и настройки его хостов.

       Для пользователя указываются:

       * `name`и `password`— имя и пароль пользователя ClickHouse®.

          Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.

          Длина пароля — от 8 до 128 символов.

          
          {% note info %}

          Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо `password = "<пароль_пользователя>"` укажите `generate_password = true`.

          Чтобы увидеть пароль, в [консоли управления](https://console.yandex.cloud) выберите созданный кластер, перейдите на вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.

          {% endnote %}


       * `permission` — список БД, к которым пользователь должен иметь доступ.

       1. Чтобы настроить время [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок `maintenance_window`:
          
          ```hcl
          resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
            ...
            maintenance_window {
              type = "<тип_технического_обслуживания>"
              day  = "<день_недели>"
              hour = <порядковый_номер_часового_интервала>
            }
            ...
          }
          ```
          
          Где:
          
          * `type` — тип технического обслуживания. Принимает значения:
              * `ANYTIME` — в любое время.
              * `WEEKLY` — по расписанию.
          * `day` — день недели для типа `WEEKLY`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
          * `hour` — порядковый номер часового интервала по UTC для типа `WEEKLY`: от `1` до `24`.
          
            > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

       1. Чтобы разрешить доступ из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью Yandex WebSQL, добавьте блок `access` с нужными вам настройками:

          ```hcl
          resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
            ...
            access = {
              data_lens    = <доступ_из_DataLens>
              metrika      = <доступ_из_Метрики_и_AppMetrika>
              serverless   = <доступ_из_Cloud_Functions>
              yandex_query = <доступ_из_Yandex_Query>
              web_sql      = <выполнение_SQL-запросов_из_консоли_управления>
            }
            ...
          }
          ```

          Где:

          * `data_lens` — доступ из DataLens: `true` или `false`.
          * `metrika` — доступ из Метрики и AppMetrika: `true` или `false`.
          * `serverless` — доступ из Cloud Functions: `true` или `false`.
          * `yandex_query` — доступ из Yandex Query: `true` или `false`.
          * `web_sql` — выполнение SQL-запросов из консоли управления: `true` или `false`.

       1. Пользователями и базами данных в кластере можно управлять через SQL.

          {% note warning %}
          
          Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
          
          {% endnote %}

          *  Чтобы включить [управление пользователями через SQL](../concepts/user-access-rights.md#sql-user-management), добавьте к описанию кластера поле `sql_user_management` со значением `true` и поле `admin_password` с паролем пользователя `admin`:
             
             ```hcl
             resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
               name                = "<имя_кластера>"
               ...
               admin_password      = "<пароль_пользователя_admin>"
               sql_user_management = true
               ...
             }
             ```

          * Чтобы включить [управление базами данных через SQL](databases.md#sql-database-management), добавьте к описанию кластера поля `sql_user_management` и `sql_database_management` со значением `true`, а также поле `admin_password` с паролем пользователя `admin`:
            
            ```hcl
            resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
              name                    = "<имя_кластера>"
              ...
              admin_password          = "<пароль_пользователя_admin>"
              sql_database_management = true
              sql_user_management     = true
              ...
            }
            ```

       1. Чтобы зашифровать диск [пользовательским ключом KMS](../../kms/concepts/key.md), добавьте параметр `disk_encryption_key_id`:

          ```hcl
          resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
            ...
            disk_encryption_key_id = <идентификатор_ключа_KMS>
            ...
          }
          ```

          Подробнее о шифровании дисков читайте в разделе [Хранилище](../concepts/storage.md#disk-encryption).

       Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, читайте в [документации провайдера](../../terraform/resources/mdb_clickhouse_cluster.md).

    1. Проверьте корректность файлов конфигурации Terraform:

       1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
       1. Выполните команду:
       
          ```bash
          terraform validate
          ```
       
          Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Создайте кластер:

       1. Выполните команду для просмотра планируемых изменений:
       
          ```bash
          terraform plan
          ```
       
          Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
       
       1. Если вас устраивают планируемые изменения, внесите их:
          1. Выполните команду:
       
             ```bash
             terraform apply
             ```
       
          1. Подтвердите изменение ресурсов.
          1. Дождитесь завершения операции.

       В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в [консоли управления](https://console.yandex.cloud).

    {% note warning "Ограничения по времени" %}
    
    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
    
    * создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
    * изменение — 90 минут;
    * удаление — 30 минут.
    
    Операции, длящиеся дольше указанного времени, прерываются.
    
    {% cut "Как изменить эти ограничения?" %}
    
    Добавьте к описанию кластера блок `timeouts`, например:
    
    ```hcl
    resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
      ...
      timeouts = {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    ```
    
    {% endcut %}
    
    {% endnote %}


- REST API {#api}

    Чтобы создать кластер Managed Service for ClickHouse® с сервисом координации ZooKeeper:

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Воспользуйтесь методом [Cluster.Create](../api-ref/Cluster/create.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое (в примере приведены не все доступные параметры):

            
            ```json
            {
              "folderId": "<идентификатор_каталога>",
              "name": "<имя_кластера>",
              "environment": "<окружение>",
              "networkId": "<идентификатор_сети>",
              "securityGroupIds": [
                "<идентификатор_группы_безопасности_1>",
                "<идентификатор_группы_безопасности_2>",
                ...
                "<идентификатор_группы_безопасности_N>"
              ],
              "configSpec": {
                "version": "<версия_ClickHouse®>",
                "clickhouse": {
                  "resources": {
                    "resourcePresetId": "<класс_хостов>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"
                  },
                  "diskSizeAutoscaling": {
                    "plannedUsageThreshold": "<порог_для_планового_увеличения_в_процентах>",
                    "emergencyUsageThreshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                    "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                  }
                },
                "zookeeper": {
                  "resources": {
                    "resourcePresetId": "<класс_хостов>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"
                  },
                  "diskSizeAutoscaling": {
                    "plannedUsageThreshold": "<порог_для_планового_увеличения_в_процентах>",
                    "emergencyUsageThreshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                    "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                  }
                },
                "access": {
                  "dataLens": <доступ_из_DataLens>,
                  "webSql": <выполнение_SQL-запросов_из_консоли_управления>,
                  "metrika": <доступ_из_Метрики_и_AppMetrika>,
                  "serverless": <доступ_из_Cloud_Functions>,
                  "dataTransfer": <доступ_из_Data_Transfer>,
                  "yandexQuery": <доступ_из_Yandex_Query>
                },
                "cloudStorage": {
                  "enabled": <использование_гибридного_хранилища>,
                  "moveFactor": "<доля_свободного_места>",
                  "dataCacheEnabled": <временное_хранение_файлов>,
                  "dataCacheMaxSize": "<максимальный_объем_памяти_для_хранения_файлов>",
                  "preferNotToMerge": <отключение_слияния_кусков_данных>
                },
                "adminPassword": "<пароль_пользователя_admin>",
                "sqlUserManagement": <управление_пользователями_через_SQL>,
                "sqlDatabaseManagement": <управление_базами_данных_через_SQL>
              },
              "databaseSpecs": [
                {
                  "name": "<имя_базы_данных>",
                  "engine": "<движок_базы_данных>"
                },
                { <аналогичный_набор_настроек_для_базы_данных_2> },
                { ... },
                { <аналогичный_набор_настроек_для_базы_данных_N> }
              ],
              "userSpecs": [
                {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "databaseName": "<имя_базы_данных>"
                    }
                  ]
                },
                { <аналогичный_набор_настроек_для_пользователя_2> },
                { ... },
                { <аналогичный_набор_настроек_для_пользователя_N> }
              ],
              "hostSpecs": [
                {
                  "zoneId": "<зона_доступности>",
                  "type": "<тип_хоста>",
                  "subnetId": "<идентификатор_подсети>",
                  "assignPublicIp": <публичный_доступ_к_хосту>,
                  "shardName": "<имя_шарда>"
                },
                { <аналогичный_набор_настроек_для_хоста_2> },
                { ... },
                { <аналогичный_набор_настроек_для_хоста_N> }
              ],
              "shardSpecs": [
                {
                  "name": "<имя_шарда>",
                  "configSpec": {
                    "clickhouse": {
                      "weight": "<вес_шарда>", 
                      "resources": {
                        "resourcePresetId": "<класс_хостов_в_шарде>",
                        "diskSize": "<размер_хранилища_в_байтах>",
                        "diskTypeId": "<тип_диска>"
                      },
                      "diskSizeAutoscaling": {
                        "plannedUsageThreshold": "<порог_для_планового_увеличения_в_процентах>",
                        "emergencyUsageThreshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                        "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                      },
                      "config": {
                        <настройки_СУБД>
                      }
                    }
                  }
                },
                { <аналогичный_набор_настроек_для_шарда_2> },
                { ... },
                { <аналогичный_набор_настроек_для_шарда_N> }
              ],
              "deletionProtection": <защита_кластера_от_удаления>,
              "maintenanceWindow": {
                "weeklyMaintenanceWindow": {
                  "day": "<день_недели>",
                  "hour": "<порядковый_номер_часового_интервала>"
                }
              }
            }
            ```


            Где:

            * `name` — имя кластера.
            * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
            * `networkId` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер.

            
            * `securityGroupIds` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. массив Каждая строка — идентификатор группы безопасности.

                {% note warning %}
                
                Если при создании кластера вы указали идентификаторы групп безопасности, то для подключения к кластеру может потребоваться [настройка групп безопасности](connect/index.md#configuring-security-groups).
                
                {% endnote %}


            * `configSpec` — конфигурация кластера:

                * `version` — версия ClickHouse®: 25.8.24.21 LTS, 26.3.12.3 LTS, 26.4.4.38 и 26.5.2.39.
                * `clickhouse` — конфигурация ClickHouse®:

                    * `resources.resourcePresetId` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.diskSize` — размер диска в байтах.
                    * `resources.diskTypeId` — [тип диска](../concepts/storage.md).

                    * `diskSizeAutoscaling` — настройки автоматического увеличения размера хранилища ClickHouse®:

                      * `plannedUsageThreshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).
                      
                        Допустимые значения: от `0` до `100`.
                      
                      * `emergencyUsageThreshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).
                      
                        Допустимые значения: от `0` до `100`.
                      
                      * `diskSizeLimit` — максимальный размер хранилища ClickHouse®, в байтах.
                      
                      {% note warning %}
                      
                      * Если заданы оба порога, значение `emergencyUsageThreshold` должно быть не меньше `plannedUsageThreshold`.
                      
                      * При использовании параметра `plannedUsageThreshold` необходимо настроить [окно технического обслуживания](../concepts/maintenance.md).
                      
                      {% endnote %}
                      
                      Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда. Эти значения не сохраняются в конфигурации ClickHouse®.
                      
                      Чтобы посмотреть информацию о конкретном шарде, включая настройки автоматического увеличения размера хранилища, воспользуйтесь методом [Cluster.GetShard](../api-ref/Cluster/getShard.md) и передайте в запросе идентификатор кластера и имя шарда.
                      
                      Идентификатор кластера можно получить [со списком кластеров](cluster-list.md#list-clusters) в каталоге.
                      
                      Имя шарда можно получить [со списком шардов](shards.md#list-shards) в кластере.

                * `zookeeper` — конфигурация [ZooKeeper](../concepts/coordination-system.md#zk):

                    * `resources.resourcePresetId` — идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.diskSize` — размер диска в байтах.
                    * `resources.diskTypeId` — [тип диска](../concepts/storage.md).

                    * `diskSizeAutoscaling` — настройки автоматического увеличения размера хранилища ZooKeeper:

                      * `plannedUsageThreshold` — порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).
                                            
                        Допустимые значения: от `0` до `100`.
                                            
                      * `emergencyUsageThreshold` — порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).
                                            
                        Допустимые значения: от `0` до `100`.
                                            
                      * `diskSizeLimit` — максимальный размер хранилища ZooKeeper, в байтах.
                                            
                      {% note warning %}
                                            
                      * Если заданы оба порога, значение `emergencyUsageThreshold` должно быть не меньше `plannedUsageThreshold`.
                                            
                      * При использовании параметра `plannedUsageThreshold` необходимо настроить [окно технического обслуживания](../concepts/maintenance.md).
                                            
                      {% endnote %}

                * `access` — настройки, которые разрешают доступ к кластеру из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью Yandex WebSQL:

                    * `dataLens` — разрешить доступ из DataLens: `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке подключения в разделе [Подключение из DataLens](datalens-connect.md).
                    
                    * `webSql` — разрешить [выполнять SQL-запросы](web-sql-query.md) к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL: `true` или `false`. Значение по умолчанию — `false`.
                    
                    
                    * `metrika` — разрешить [импорт данных из AppMetrika в кластер](https://appmetrica.yandex.ru/docs/common/cloud/about.html): `true` или `false`. Значение по умолчанию — `false`.
                    
                    * `serverless` — разрешить доступ к кластеру из сервиса [Yandex Cloud Functions](../../functions/concepts/index.md): `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке доступа в документации [Cloud Functions](../../functions/operations/database-connection.md).
                    
                    * `dataTransfer` — разрешить доступ к кластеру из сервиса [Yandex Data Transfer](../../data-transfer/concepts/index.md) в Serverless-режиме: `true` или `false`. Значение по умолчанию — `false`.
                    
                        Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.
                    
                    
                    * `yandexQuery` — разрешить доступ к кластеру из сервиса [Yandex Query](../../query/concepts/index.md): `true` или `false`. Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md). Значение по умолчанию — `false`.

                * `cloudStorage` — настройки [гибридного хранилища](../concepts/storage.md#hybrid-storage-features):

                    * `enabled` — включить гибридное хранилище в кластере, если оно выключено: `true` или `false`. Значение по умолчанию — `false` (выключено).
                    
                        {% note info %}
                        
                        Включенное однажды гибридное хранилище нельзя отключить.
                        
                        {% endnote %}
                    
                    * `moveFactor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage.
                    
                        Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
                    
                    * `dataCacheEnabled` — разрешить временное хранение файлов в кластерном хранилище: `true` или `false`.
                    
                        По умолчанию — `true` (разрешено).
                    
                    * `dataCacheMaxSize` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов.
                        
                        Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
                    
                    * `preferNotToMerge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`.
                    
                        Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.

                * `sql...` и `adminPassword` — группа настроек для управления пользователями и базами данных через SQL:

                    * `adminPassword` — пароль пользователя `admin`.
                    * `sqlUserManagement` — режим [управления пользователями через SQL](cluster-users.md#sql-user-management): `true` или `false`.
                    * `sqlDatabaseManagement` — режим [управления базами данных через SQL](databases.md#sql-database-management): `true` или `false`. Необходимо, чтобы был включен режим управления пользователями через SQL.


                    {% note warning %}
                    
                    Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
                    
                    {% endnote %}

            * `databaseSpecs` — настройки баз данных в виде массива элементов. Каждый элемент соответствует отдельной базе данных и имеет следующую структуру:

                * `name` — имя базы данных.
                * `engine` — движок базы данных. Возможные значения:

                  * `DATABASE_ENGINE_ATOMIC` (по умолчанию) — движок Atomic. Поддерживает неблокирующие операции `DROP TABLE` и `RENAME TABLE`, а также атомарные операции `EXCHANGE TABLES`.
                  * `DATABASE_ENGINE_REPLICATED` — движок Replicated. Поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.
                                      
                    Доступен только в [реплицированных](../concepts/replication.md) кластерах.
                  
                  * `DATABASE_ENGINE_UNSPECIFIED` — для этого значения будет выбран движок по умолчанию `DATABASE_ENGINE_ATOMIC`.
                                      
                  Движок задается при создании базы данных и не может быть изменен для этой базы.

            * `userSpecs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

                * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.
                * `password` — пароль пользователя. Длина пароля — от 8 до 128 символов.
                
                    
                    Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо `"password": "<пароль_пользователя>"` укажите `"generatePassword": true`.
                
                    Чтобы увидеть пароль, в [консоли управления](https://console.yandex.cloud) выберите созданный кластер, перейдите на вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.
                
                
                * `permissions` — список БД, к которым пользователь должен иметь доступ.
                
                    Список организован в виде массива параметров `databaseName`. Один параметр содержит имя отдельной БД.

            * `hostSpecs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:

                * `type` — тип хоста: `CLICKHOUSE` или `ZOOKEEPER`.
                * `zoneId` — [зона доступности](../../overview/concepts/geo-scope.md).

                
                * `subnetId` — идентификатор [подсети](../../vpc/concepts/network.md#subnet).


                * `shardName` — имя [шарда](../concepts/sharding.md). Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

                
                * `assignPublicIp` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

                   {% note warning %}
                   
                   Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее в разделе [Настройка групп безопасности](connect/index.md#configuring-security-groups).
                   
                   {% endnote %}

                Если вы создаете кластер из двух и более хостов ClickHouse® без сервиса координации и в [сети](../../vpc/concepts/network.md) кластера есть [подсети](../../vpc/concepts/network.md#subnet) в каждой [зоне доступности](../../overview/concepts/geo-scope.md), то три хоста ZooKeeper будут добавлены автоматически, по одному в каждую подсеть.
                
                Если подсети есть только в некоторых зонах доступности или вы хотите использовать другой сервис координации, вручную укажите сервис координации и настройки его хостов.


            * `shardSpecs` — настройки шардов в виде массива элементов, где каждый элемент соответствует отдельному шарду. Если не передать этот блок в запросе, будет создан кластер с одним шардом `shard1`. Вы можете задать следующие настройки:

                * `name` — имя шарда.
                * `weight` — вес шарда.
                * `configSpec.clickhouse` — конфигурация хостов шарда: класс хоста, настройки хранилища и настройки СУБД. Если не указывать конфигурацию хостов шарда, она будет унаследована от конфигурации кластера.

            * `deletionProtection` — защита кластера от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`.

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

            * `maintenanceWindow` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). Выберите один из вариантов:

                * `anytime` (по умолчанию) — в любое время.
                * `weeklyMaintenanceWindow` — по расписанию:
                    * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                    * `hour` — порядковый номер часового интервала по UTC. Допустимые значения: от `1` до `24`.

                      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

            
            Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


        1. Выполните запрос:

            ```bash
            curl \
              --request POST \
              --header "Authorization: Bearer $IAM_TOKEN" \
              --header "Content-Type: application/json" \
              --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters' \
              --data '@body.json'
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/create.md#responses).

- gRPC API {#grpc-api}

    Чтобы создать кластер Managed Service for ClickHouse® с сервисом координации ZooKeeper:

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Воспользуйтесь вызовом [ClusterService.Create](../api-ref/grpc/Cluster/create.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое (в примере приведены не все доступные параметры):

            
            ```json
            {
              "folder_id": "<идентификатор_каталога>",
              "name": "<имя_кластера>",
              "environment": "<окружение>",
              "network_id": "<идентификатор_сети>",
              "security_group_ids": [
                "<идентификатор_группы_безопасности_1>",
                "<идентификатор_группы_безопасности_2>",
                ...
                "<идентификатор_группы_безопасности_N>"
              ],
              "config_spec": {
                "version": "<версия_ClickHouse®>",
                "clickhouse": {
                  "resources": {
                    "resource_preset_id": "<класс_хостов>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"
                  },
                  "disk_size_autoscaling": {
                    "planned_usage_threshold": "<порог_для_планового_увеличения_в_процентах>",
                    "emergency_usage_threshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                    "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                  }
                },
                "zookeeper": {
                  "resources": {
                    "resource_preset_id": "<класс_хостов>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"
                  },
                  "disk_size_autoscaling": {
                    "planned_usage_threshold": "<порог_для_планового_увеличения_в_процентах>",
                    "emergency_usage_threshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                    "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                  }
                },
                "access": {
                  "data_lens": <доступ_из_DataLens>,
                  "web_sql": <выполнение_SQL-запросов_из_консоли_управления>,
                  "metrika": <доступ_из_Метрики_и_AppMetrika>,
                  "serverless": <доступ_из_Cloud_Functions>,
                  "data_transfer": <доступ_из_Data_Transfer>,
                  "yandex_query": <доступ_из_Yandex_Query>
                },
                "cloud_storage": {
                  "enabled": <использование_гибридного_хранилища>,
                  "move_factor": "<доля_свободного_места>",
                  "data_cache_enabled": <временное_хранение_файлов>,
                  "data_cache_max_size": "<максимальный_объем_памяти_для_хранения_файлов>",
                  "prefer_not_to_merge": <отключение_слияния_кусков_данных>
                },
                "admin_password": "<пароль_пользователя_admin>",
                "sql_user_management": <управление_пользователями_через_SQL>,
                "sql_database_management": <управление_базами_данных_через_SQL>
              },
              "database_specs": [
                {
                  "name": "<имя_базы_данных>",
                  "engine": "<движок_базы_данных>"
                },
                { <аналогичный_набор_настроек_для_базы_данных_2> },
                { ... },
                { <аналогичный_набор_настроек_для_базы_данных_N> }
              ],
              "user_specs": [
                {
                  "name": "<имя_пользователя>",
                  "password": "<пароль_пользователя>",
                  "permissions": [
                    {
                      "database_name": "<имя_базы_данных>"
                    }
                  ]
                },
                { <аналогичный_набор_настроек_для_пользователя_2> },
                { ... },
                { <аналогичный_набор_настроек_для_пользователя_N> }
              ],
              "host_specs": [
                {
                  "zone_id": "<зона_доступности>",
                  "type": "<тип_хоста>",
                  "subnet_id": "<идентификатор_подсети>",
                  "assign_public_ip": <публичный_доступ_к_хосту>,
                  "shard_name": "<имя_шарда>"
                },
                { <аналогичный_набор_настроек_для_хоста_2> },
                { ... },
                { <аналогичный_набор_настроек_для_хоста_N> }
              ],
              "shard_specs": [
                {
                  "name": "<имя_шарда>",
                  "config_spec": {
                    "clickhouse": {
                      "weight": "<вес_шарда>",
                      "resources": {
                        "resource_preset_id": "<класс_хостов>",
                        "disk_size": "<размер_хранилища_в_байтах>",
                        "disk_type_id": "<тип_диска>"
                      },
                      "disk_size_autoscaling": {
                        "planned_usage_threshold": "<порог_для_планового_увеличения_в_процентах>",
                        "emergency_usage_threshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                        "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                      },
                      "config": {
                        <настройки_СУБД>
                      }
                    }
                  }
                },
                { <аналогичный_набор_настроек_для_шарда_2> },
                { ... },
                { <аналогичный_набор_настроек_для_шарда_N> }
              ],
              "deletion_protection": <защита_кластера_от_удаления>,
              "maintenance_window": {
                "weekly_maintenance_window": {
                  "day": "<день_недели>",
                  "hour": "<порядковый_номер_часового_интервала>"
                }
              }
            ```


            Где:

            * `name` — имя кластера.
            * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.

            * `network_id` — идентификатор [сети](../../vpc/concepts/network.md), в которой будет размещен кластер.

            
            * `security_group_ids` — идентификаторы [групп безопасности](../../vpc/concepts/security-groups.md) в виде массива строк. массив Каждая строка — идентификатор группы безопасности.

                {% note warning %}
                
                Если при создании кластера вы указали идентификаторы групп безопасности, то для подключения к кластеру может потребоваться [настройка групп безопасности](connect/index.md#configuring-security-groups).
                
                {% endnote %}


            * `config_spec` — конфигурация кластера:

                * `version` — версия ClickHouse®: 25.8.24.21 LTS, 26.3.12.3 LTS, 26.4.4.38 и 26.5.2.39.

                * `clickhouse` — конфигурация ClickHouse®:

                    * `resources.resource_preset_id` — идентификатор [класса хостов](../concepts/instance-types.md). Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.disk_size` — размер диска в байтах.
                    * `resources.disk_type_id` — [тип диска](../concepts/storage.md).

                    * `disk_size_autoscaling` — настройки автоматического увеличения размера хранилища ClickHouse®:

                        * `planned_usage_threshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).
                                              
                          Допустимые значения: от `0` до `100`.
                                              
                        * `emergency_usage_threshold` — порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).
                                              
                          Допустимые значения: от `0` до `100`.
                                              
                        * `disk_size_limit` — максимальный размер хранилища ClickHouse®, в байтах.
                                              
                        {% note warning %}
                                              
                        * Если заданы оба порога, значение `emergency_usage_threshold` должно быть не меньше `planned_usage_threshold`.
                                              
                        * При использовании параметра `planned_usage_threshold` необходимо настроить [окно технического обслуживания](../concepts/maintenance.md).
                                              
                        {% endnote %}
                                              
                        Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда. Эти значения не сохраняются в конфигурации ClickHouse®.
                                              
                        Чтобы посмотреть информацию о конкретном шарде, включая настройки автоматического увеличения размера хранилища, воспользуйтесь методом [ClusterService.GetShard](../api-ref/grpc/Cluster/getShard.md) и передайте в запросе идентификатор кластера и имя шарда.
                                              
                        Идентификатор кластера можно получить [со списком кластеров](cluster-list.md#list-clusters) в каталоге.
                        
                        Имя шарда можно получить [со списком шардов](shards.md#list-shards) в кластере.

                * `zookeeper` — конфигурация [ZooKeeper](../concepts/coordination-system.md#zk):

                    * `resources.resource_preset_id` — идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода [ResourcePreset.list](../api-ref/ResourcePreset/list.md).
                    * `resources.disk_size` — размер диска в байтах.
                    * `resources.disk_type_id` — [тип диска](../concepts/storage.md).

                    * `disk_size_autoscaling` — настройки автоматического увеличения размера хранилища ZooKeeper:

                        * `planned_usage_threshold` — порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — `0` (автоматическое увеличение отключено).
                                              
                          Допустимые значения: от `0` до `100`.
                                              
                        * `emergency_usage_threshold` — порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — `0` (автоматическое увеличение отключено).
                                              
                          Допустимые значения: от `0` до `100`.
                                              
                        * `disk_size_limit` — максимальный размер хранилища ZooKeeper, в байтах.
                                              
                        {% note warning %}
                                              
                        * Если заданы оба порога, значение `emergency_usage_threshold` должно быть не меньше `planned_usage_threshold`.
                                              
                        * При использовании параметра `planned_usage_threshold` необходимо настроить [окно технического обслуживания](../concepts/maintenance.md).
                                              
                        {% endnote %}

                * `access` — настройки, которые разрешают доступ к кластеру из других сервисов и [выполнение SQL-запросов из консоли управления](web-sql-query.md) с помощью Yandex WebSQL:

                    * `data_lens` — разрешить доступ из DataLens: `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке подключения в разделе [Подключение из DataLens](datalens-connect.md).
                    
                    * `web_sql` — разрешить [выполнять SQL-запросы](web-sql-query.md) к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL: `true` или `false`. Значение по умолчанию — `false`.
                    
                    
                    * `metrika` — разрешить [импорт данных из AppMetrika в кластер](https://appmetrica.yandex.ru/docs/common/cloud/about.html): `true` или `false`. Значение по умолчанию — `false`.
                    
                    * `serverless` — разрешить доступ к кластеру из сервиса [Yandex Cloud Functions](../../functions/concepts/index.md): `true` или `false`. Значение по умолчанию — `false`. Подробнее о настройке доступа в документации [Cloud Functions](../../functions/operations/database-connection.md).
                    
                    * `data_transfer` — разрешить доступ к кластеру из сервиса [Yandex Data Transfer](../../data-transfer/concepts/index.md) в Serverless-режиме: `true` или `false`. Значение по умолчанию — `false`.
                    
                        Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.
                    
                    
                    * `yandex_query` — разрешить доступ к кластеру из сервиса [Yandex Query](../../query/concepts/index.md): `true` или `false`. Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md). Значение по умолчанию — `false`.

                * `cloud_storage` — настройки [гибридного хранилища](../concepts/storage.md#hybrid-storage-features):

                    * `enabled` — включить гибридное хранилище в кластере, если оно выключено: `true` или `false`. Значение по умолчанию — `false` (выключено).
                    
                        {% note info %}
                        
                        Включенное однажды гибридное хранилище нельзя отключить.
                        
                        {% endnote %}
                    
                    * `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage.
                    
                        Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
                    
                    * `data_cache_enabled` — разрешить временное хранение файлов в кластерном хранилище: `true` или `false`.
                    
                        По умолчанию — `true` (разрешено).
                    
                    * `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов.
                    
                        Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
                    
                    * `prefer_not_to_merge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`.
                    
                        Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.

                * `sql...` и `admin_password` — группа настроек для управления пользователями и базами данных через SQL:

                    * `admin_password` — пароль пользователя `admin`.
                    * `sql_user_management` — режим [управления пользователями через SQL](cluster-users.md#sql-user-management): `true` или `false`.
                    * `sql_database_management` — режим [управления базами данных через SQL](databases.md#sql-database-management): `true` или `false`. Необходимо, чтобы был включен режим управления пользователями через SQL.


                    {% note warning %}
                    
                    Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при [изменении настроек кластера](update.md#SQL-management).
                    
                    {% endnote %}

            * `database_specs` — настройки баз данных в виде массива элементов. Каждый элемент соответствует отдельной базе данных и имеет следующую структуру:

                * `name` — имя базы данных.
                * `engine` — движок базы данных. Возможные значения:

                  * `DATABASE_ENGINE_ATOMIC` (по умолчанию) — движок Atomic. Поддерживает неблокирующие операции `DROP TABLE` и `RENAME TABLE`, а также атомарные операции `EXCHANGE TABLES`.
                  * `DATABASE_ENGINE_REPLICATED` — движок Replicated. Поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.
                                      
                    Доступен только в [реплицированных](../concepts/replication.md) кластерах.
                  
                  * `DATABASE_ENGINE_UNSPECIFIED` — для этого значения будет выбран движок по умолчанию `DATABASE_ENGINE_ATOMIC`.
                                      
                  Движок задается при создании базы данных и не может быть изменен для этой базы.

            * `user_specs` — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

                * `name` — имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.
                * `password` — пароль пользователя. Длина пароля — от 8 до 128 символов.
                
                  
                  Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо `"password": "<пароль_пользователя>"` укажите `"generate_password": true`.
                
                  Чтобы увидеть пароль, в [консоли управления](https://console.yandex.cloud) выберите созданный кластер, перейдите на вкладку **Пользователи** и нажмите **Посмотреть пароль** в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль `lockbox.payloadViewer`.
                
                
                * `permissions` — список БД, к которым пользователь должен иметь доступ.
                
                    Список организован в виде массива параметров `database_name`. Один параметр содержит имя отдельной БД.

            * `host_specs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:

                * `type` — тип хоста: `CLICKHOUSE` или `ZOOKEEPER`.
                * `zone_id` — [зона доступности](../../overview/concepts/geo-scope.md).

                
                * `subnet_id` — идентификатор [подсети](../../vpc/concepts/network.md#subnet).


                * `shard_name` — имя [шарда](../concepts/sharding.md). Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

                
                * `assign_public_ip` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`. Эта настройка имеет смысл только для хостов типа `CLICKHOUSE`.

                   {% note warning %}
                   
                   Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее в разделе [Настройка групп безопасности](connect/index.md#configuring-security-groups).
                   
                   {% endnote %}

                Если вы создаете кластер из двух и более хостов ClickHouse® без сервиса координации и в [сети](../../vpc/concepts/network.md) кластера есть [подсети](../../vpc/concepts/network.md#subnet) в каждой [зоне доступности](../../overview/concepts/geo-scope.md), то три хоста ZooKeeper будут добавлены автоматически, по одному в каждую подсеть.
                
                Если подсети есть только в некоторых зонах доступности или вы хотите использовать другой сервис координации, вручную укажите сервис координации и настройки его хостов.


            * `shard_specs` — настройки шардов в виде массива элементов, где каждый элемент соответствует отдельному шарду. Если не передать этот блок в запросе, будет создан кластер с одним шардом `shard1`. Вы можете задать следующие настройки:

                * `name` — имя шарда.
                * `weight` — вес шарда.
                * `config_spec.clickhouse` — конфигурация хостов шарда: класс хоста, настройки хранилища и настройки СУБД. Если не указывать конфигурацию хостов шарда, она будет унаследована от конфигурации кластера.

            * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`. Значение по умолчанию — `false`.

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

            `maintenance_window` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). Выберите один из вариантов:

              * `anytime` (по умолчанию) — в любое время.
              * `weekly_maintenance_window` — по расписанию:
                  * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                  * `hour` — порядковый номер часового интервала по UTC. Допустимые значения: от `1` до `24`.

                    > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

            
            Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


        1. Выполните запрос:

            ```bash
            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 @ \
              mdb.api.cloud.yandex.net:443 \
              yandex.cloud.mdb.clickhouse.v1.ClusterService.Create \
              < body.json
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}


## Создать копию кластера {#duplicate}

Вы можете создать кластер ClickHouse®, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера ClickHouse® импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер ClickHouse® обладает множеством настроек и нужно создать похожий на него кластер.

Чтобы создать копию кластера ClickHouse®:

{% list tabs group=instructions %}

- Terraform {#tf}

    1. Если у вас еще нет Terraform, [установите его](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
    1. [Получите данные для аутентификации](../../tutorials/infrastructure-management/terraform-quickstart.md#get-credentials). Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
    1. [Настройте и инициализируйте провайдер](../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider). Чтобы не создавать конфигурационный файл с настройками провайдера вручную, [скачайте его](https://github.com/yandex-cloud-examples/yc-terraform-provider-settings/blob/main/provider.tf).
    1. Поместите конфигурационный файл в отдельную рабочую директорию и [укажите значения параметров](../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider). Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

    1. В той же рабочей директории разместите файл с расширением `.tf` и содержимым:

        ```hcl
        resource "yandex_mdb_clickhouse_cluster_v2" "old" { }
        ```

    1. Запишите идентификатор первоначального кластера ClickHouse® в переменную окружения:

        ```bash
        export CLICKHOUSE_CLUSTER_ID=<идентификатор_кластера>
        ```

        Идентификатор можно запросить вместе со [списком кластеров в каталоге](cluster-list.md#list-clusters).

    1. Импортируйте настройки первоначального кластера ClickHouse® в конфигурацию Terraform:

        ```bash
        terraform import yandex_mdb_clickhouse_cluster_v2.old ${CLICKHOUSE_CLUSTER_ID}
        ```

    1. Получите импортированную конфигурацию:

        ```bash
        terraform show
        ```

    1. Скопируйте ее из терминала и вставьте в файл с расширением `.tf`.
    1. Расположите файл в новой директории `imported-cluster`.
    1. Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:

        * Укажите новое имя кластера в строке `resource` и параметре `name`.
        * Удалите параметры `created_at`, `cluster_id` и `id`.
        * В описании хостов удалите параметры `fqdn`.
        * Если в блоке `clickhouse.config.merge_tree` для параметров `max_bytes_to_merge_at_max_space_in_pool`, `max_parts_in_total`, `number_of_free_entries_in_pool_to_execute_mutation` указано значение `0`, удалите эти параметры.
        * В блоке `clickhouse.config.kafka` задайте значение параметра `sasl_password` или удалите этот параметр.
        * В блоке `clickhouse.config.rabbitmq` задайте значение параметра `password` или удалите этот параметр.
        * Если в блоке `maintenance_window` указано значение параметра `type = "ANYTIME"`, удалите параметр `hour`.
        * Если есть блоки `user`, удалите их. Пользователи БД добавляются с помощью отдельного ресурса `yandex_mdb_clickhouse_user`.
        * (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.

    1. В директории `imported-cluster` [получите данные для аутентификации](../../tutorials/infrastructure-management/terraform-quickstart.md#get-credentials).

    1. В этой же директории [настройте и инициализируйте провайдер](../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider). Чтобы не создавать конфигурационный файл с настройками провайдера вручную, [скачайте его](https://github.com/yandex-cloud-examples/yc-terraform-provider-settings/blob/main/provider.tf).

    1. Поместите конфигурационный файл в директорию `imported-cluster` и [укажите значения параметров](../../tutorials/infrastructure-management/terraform-quickstart.md#configure-provider). Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

    1. Проверьте корректность файлов конфигурации Terraform:

        ```bash
        terraform validate
        ```

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

    1. Создайте необходимую инфраструктуру:

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

        В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в [консоли управления](https://console.yandex.cloud).

    {% note warning "Ограничения по времени" %}
    
    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
    
    * создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
    * изменение — 90 минут;
    * удаление — 30 минут.
    
    Операции, длящиеся дольше указанного времени, прерываются.
    
    {% cut "Как изменить эти ограничения?" %}
    
    Добавьте к описанию кластера блок `timeouts`, например:
    
    ```hcl
    resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
      ...
      timeouts = {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    ```
    
    {% endcut %}
    
    {% endnote %}

{% endlist %}


## Примеры {#examples}

### Создание кластера с одним хостом {#creating-a-single-host-cluster}

{% list tabs group=instructions %}

- CLI {#cli}

  Создайте кластер Managed Service for ClickHouse® с тестовыми характеристиками:

  
  * Имя `mych`.
  * Окружение `production`.
  * Сеть `default`.
  * Группа безопасности `enp6saqnq4ie********`.
  * Один хост ClickHouse® класса `s2.micro` в подсети `b0rcctk2rvtr********`, в зоне доступности `ru-central1-a`.
  * Хранилище на сетевых SSD-дисках (`network-ssd`) размером 20 ГБ.
  * Один пользователь `user1` с паролем `user1user1`.
  * Одна база данных `db1`.
  * Защита от непреднамеренного удаления.


  Выполните следующую команду:

  
  ```bash
  yc managed-clickhouse cluster create \
    --name mych \
    --environment=production \
    --network-name default \
    --clickhouse-resource-preset s2.micro \
    --host type=clickhouse,zone-id=ru-central1-a,subnet-id=b0rcctk2rvtr******** \
    --clickhouse-disk-size 20 \
    --clickhouse-disk-type network-ssd \
    --user name=user1,password=user1user1 \
    --database name=db1 \
    --security-group-ids enp6saqnq4ie******** \
    --deletion-protection
  ```



- Terraform {#tf}

  Создайте кластер Managed Service for ClickHouse® и сеть для него с тестовыми характеристиками:

  * Имя `mych`.
  * Окружение `PRESTABLE`.
  * Облако с идентификатором `b1gq90dgh25********`.
  * Каталог с идентификатором `b1gia87mbaom********`.
  * Новая облачная сеть `cluster-net`.
  * Новая [группа безопасности по умолчанию](connect/index.md#configuring-security-groups) `cluster-sg` (в сети `cluster-net`), разрешающая подключение к любому хосту кластера из любой сети (в том числе из интернета) по портам `8443`, `9440`.
  * Один шард `shard1`.
  * Один хост класса `s2.micro` в шарде `shard1`. Хост размещен в новой подсети `cluster-subnet-ru-central1-a`.

    Параметры подсети:
    * диапазон адресов — `172.16.1.0/24`;
    * сеть — `cluster-net`;
    * зона доступности — `ru-central1-a`.

  * Хранилище на сетевых SSD-дисках (`network-ssd`) размером 32 ГБ.
  * Имя базы данных `db1`.
  * Пользователь `user1` с паролем `user1user1`.
  * Техническое обслуживание проводится в любое время.

  Конфигурационные файлы для такого кластера выглядят так:

  1. Конфигурационный файл с описанием настроек провайдера:

      `provider.tf`
      
      ```hcl
      terraform {
        required_providers {
          yandex = {
            source = "yandex-cloud/yandex"
          }
        }
      }
      
      provider "yandex" {
        cloud_id  = "b1gq90dgh25********"
        folder_id = "b1gia87mbaom********"
      }
      ```

  1. Конфигурационный файл с описанием облачной сети и подсети:

      {% cut "networks.tf" %} 
      
      ```hcl
      resource "yandex_vpc_network" "cluster-net" { name = "cluster-net" }
      
      resource "yandex_vpc_subnet" "cluster-subnet-a" {
        name           = "cluster-subnet-ru-central1-a"
        zone           = "ru-central1-a"
        network_id     = yandex_vpc_network.cluster-net.id
        v4_cidr_blocks = ["172.16.1.0/24"]
      }
      ```
      
      {% endcut %}

  1. Конфигурационный файл с описанием группы безопасности:

      {% cut "security-groups.tf" %}
      
      ```hcl
      resource "yandex_vpc_default_security_group" "cluster-sg" {
        network_id = yandex_vpc_network.cluster-net.id
      
        ingress {
          description    = "HTTPS (secure)"
          port           = 8443
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      
        ingress {
          description    = "clickhouse-client (secure)"
          port           = 9440
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      
        egress {
          description    = "Allow all egress cluster traffic"
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      }
      ```
      
      {% endcut %}

  1. Конфигурационный файл с описанием кластера и его хоста:

      {% cut "cluster.tf" %}
      
      ```hcl
      resource "yandex_mdb_clickhouse_cluster_v2" "mych" {
        name               = "mych"
        environment        = "PRESTABLE"
        network_id         = yandex_vpc_network.cluster-net.id
        security_group_ids = [yandex_vpc_default_security_group.cluster-sg.id]
      
        clickhouse = {
          resources = {
            resource_preset_id = "s2.micro"
            disk_type_id       = "network-ssd"
            disk_size          = 32
          }
        }
      
        shards = {
          "shard1" = {
            weight = 1
          }
        }
      
        hosts = {
          "h1" = {
            type       = "CLICKHOUSE"
            zone       = "ru-central1-a"
            subnet_id  = yandex_vpc_subnet.cluster-subnet-a.id
            shard_name = "shard1"
          }
        }
      
        maintenance_window {
          type = "ANYTIME"
        }
      }
      
      resource "yandex_mdb_clickhouse_database" "db1" {
        cluster_id = yandex_mdb_clickhouse_cluster_v2.mych.id
        name       = "db1"
      }
      
      resource "yandex_mdb_clickhouse_user" "user1" {
        cluster_id = yandex_mdb_clickhouse_cluster_v2.mych.id
        name       = "user1"
        password   = "user1user1"
        permission {
          database_name = yandex_mdb_clickhouse_database.db1.name
        }
      }
      ```
      
      {% endcut %}


{% endlist %}

### Создание шардированного кластера {#creating-a-sharded-cluster}

{% list tabs group=instructions %}

- CLI {#cli}

  Создайте кластер Managed Service for ClickHouse® с тестовыми характеристиками:

  
  * Имя `mych`.
  * Окружение `production`.
  * Сеть `default`.
  * Группа безопасности `enp6saqnq4ie********`.
  * Три хоста ClickHouse® класса `s2.micro`, размещенные в разных шардах и разных подсетях:

      * в шарде `shard1`, в подсети с идентификатором `e9bhbia2scnk********` в зоне доступности `ru-central1-a`;
      * в шарде `shard2`, в подсети с идентификатором `e2lfqbm5nt9r********` в зоне доступности `ru-central1-b`;
      * в шарде `shard3`, в подсети с идентификатором `fl8beqmjckv8********` в зоне доступности `ru-central1-d`.

  * Хранилище на сетевых SSD-дисках (`network-ssd`) размером 20 ГБ.
  * Один пользователь `user1` с паролем `user1user1`.
  * Одна база данных `db1`.
  * Защита от непреднамеренного удаления.


  Выполните следующую команду:

  
  ```bash
  yc managed-clickhouse cluster create \
    --name mych \
    --environment=production \
    --network-name default \
    --shard name=shard1,weight=1 \
    --shard name=shard2,weight=1 \
    --shard name=shard3,weight=1 \
    --host type=clickhouse,zone-id=ru-central1-a,subnet-id=e9bhbia2scnk********,shard-name=shard1 \
    --host type=clickhouse,zone-id=ru-central1-b,subnet-id=e2lfqbm5nt9r********,shard-name=shard2 \
    --host type=clickhouse,zone-id=ru-central1-d,subnet-id=fl8beqmjckv8********,shard-name=shard3 \
    --clickhouse-resource-preset s2.micro \
    --clickhouse-disk-type network-ssd \
    --clickhouse-disk-size 20 \
    --user name=user1,password=user1user1 \
    --database name=db1 \
    --security-group-ids enp6saqnq4ie******** \
    --deletion-protection
  ```



- Terraform {#tf}

  Создайте кластер Managed Service for ClickHouse® и сеть для него с тестовыми характеристиками:

  * Имя `mych`.
  * Окружение `PRESTABLE`.
  * Облако с идентификатором `b1gq90dgh25********`.
  * Каталог с идентификатором `b1gia87mbaom********`.
  * Новая облачная сеть `cluster-net`.

  * Три хоста ClickHouse® класса `s2.micro`, размещенные в разных шардах и в новых подсетях, принадлежащих сети `cluster-net`:

      * в шарде `shard1`, в подсети `cluster-subnet-ru-central1-a` (диапазон `172.16.1.0/24`, зона доступности `ru-central1-a`).
      * в шарде `shard2`, в подсети `cluster-subnet-ru-central1-b` (диапазон `172.16.2.0/24`, зона доступности `ru-central1-b`).
      * в шарде `shard3`, в подсети `cluster-subnet-ru-central1-d` (диапазон `172.16.3.0/24`, зона доступности `ru-central1-d`).

  * Новая [группа безопасности по умолчанию](connect/index.md#configuring-security-groups) `cluster-sg` в сети `cluster-net`, разрешающая подключение к любому хосту кластера из любой сети (в том числе из интернета) по портам `8443` и `9440`.
  * Хранилище на сетевых SSD-дисках (`network-ssd`) размером 20 ГБ для каждого хоста ClickHouse®.
  * Имя базы данных `db1`.
  * Пользователь `user1` с паролем `user1user1`.
  * Техническое обслуживание проводится в любое время.

  Конфигурационные файлы для такого кластера выглядят так:

  1. Конфигурационный файл с описанием настроек провайдера:

      `provider.tf`
      
      ```hcl
      terraform {
        required_providers {
          yandex = {
            source = "yandex-cloud/yandex"
          }
        }
      }
      
      provider "yandex" {
        cloud_id  = "b1gq90dgh25********"
        folder_id = "b1gia87mbaom********"
      }
      ```

  1. Конфигурационный файл с описанием облачной сети и подсетей:

      {% cut "networks.tf" %} 
      
      ```hcl
      resource "yandex_vpc_network" "cluster-net" { name = "cluster-net" }
      
      resource "yandex_vpc_subnet" "cluster-subnet-a" {
        name           = "cluster-subnet-ru-central1-a"
        zone           = "ru-central1-a"
        network_id     = yandex_vpc_network.cluster-net.id
        v4_cidr_blocks = ["172.16.1.0/24"]
      }
      
      resource "yandex_vpc_subnet" "cluster-subnet-b" {
        name           = "cluster-subnet-ru-central1-b"
        zone           = "ru-central1-b"
        network_id     = yandex_vpc_network.cluster-net.id
        v4_cidr_blocks = ["172.16.2.0/24"]
      }
      
      resource "yandex_vpc_subnet" "cluster-subnet-d" {
        name           = "cluster-subnet-ru-central1-d"
        zone           = "ru-central1-d"
        network_id     = yandex_vpc_network.cluster-net.id
        v4_cidr_blocks = ["172.16.3.0/24"]
      }
      ```
      
      {% endcut %}

  1. Конфигурационный файл с описанием группы безопасности:

      {% cut "security-groups.tf" %}
      
      ```hcl
      resource "yandex_vpc_default_security_group" "cluster-sg" {
        network_id = yandex_vpc_network.cluster-net.id
      
        ingress {
          description    = "HTTPS (secure)"
          port           = 8443
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      
        ingress {
          description    = "clickhouse-client (secure)"
          port           = 9440
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      
        egress {
          description    = "Allow all egress cluster traffic"
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      }
      ```
      
      {% endcut %}

  1. Конфигурационный файл с описанием кластера и его хостов:

      {% cut "cluster.tf" %}
      
      ```hcl
      resource "yandex_mdb_clickhouse_cluster_v2" "mych" {
        name               = "mych"
        environment        = "PRESTABLE"
        network_id         = yandex_vpc_network.cluster-net.id
        security_group_ids = [yandex_vpc_default_security_group.cluster-sg.id]
      
        clickhouse = {
          resources = {
            resource_preset_id = "s2.micro"
            disk_type_id       = "network-ssd"
            disk_size          = 20
          }
        }
      
        shards = {
      
          "shard1" = {
            weight = 1
          }
      
          "shard2" = {
            weight = 1
          }
      
          "shard3" = {
            weight = 1
          }
      
        }
      
        hosts = {
      
          "host1" = {
            type       = "CLICKHOUSE"
            zone       = "ru-central1-a"
            subnet_id  = yandex_vpc_subnet.cluster-subnet-a.id
            shard_name = "shard1"
          }
      
          "host2" = {
            type       = "CLICKHOUSE"
            zone       = "ru-central1-b"
            subnet_id  = yandex_vpc_subnet.cluster-subnet-b.id
            shard_name = "shard2"
          }
      
          "host3" = {
            type       = "CLICKHOUSE"
            zone       = "ru-central1-d"
            subnet_id  = yandex_vpc_subnet.cluster-subnet-d.id
            shard_name = "shard3"
          }
      
        }
      
        maintenance_window {
          type = "ANYTIME"
        }
      }
      
      resource "yandex_mdb_clickhouse_database" "db1" {
        cluster_id = yandex_mdb_clickhouse_cluster_v2.mych.id
        name       = "db1"
      }
      
      resource "yandex_mdb_clickhouse_user" "user1" {
        cluster_id = yandex_mdb_clickhouse_cluster_v2.mych.id
        name       = "user1"
        password   = "user1user1"
        permission {
          database_name = yandex_mdb_clickhouse_database.db1.name
        }
      }
      ```
      
      {% endcut %}


{% endlist %}

### Создание кластера с сервисом координации ZooKeeper {#creating-a-multi-host-cluster}


{% list tabs group=instructions %}

- CLI {#cli}

  Создайте кластер Managed Service for ClickHouse® с тестовыми характеристиками:

  
  * Имя `ch-zk`.
  * Окружение `production`.
  * Сеть `default`.
  * Группа безопасности `enp6saqnq4ie********`.
  * Три хоста ClickHouse® класса `s2.micro`, размещенные в подсетях в трех разных зонах доступности:

    * в подсети с идентификатором `e9bhbia2scnk********` в зоне доступности `ru-central1-a`;
    * в подсети с идентификатором `e2lfqbm5nt9r********` в зоне доступности `ru-central1-b`;
    * в подсети с идентификатором `fl8beqmjckv8********` в зоне доступности `ru-central1-d`.

  * Три хоста ZooKeeper класса `b2.medium`, размещенные в подсетях в трех разных зонах доступности:

    * в подсети с идентификатором `e9bhbia2scnk********` в зоне доступности `ru-central1-a`;
    * в подсети с идентификатором `e2lfqbm5nt9r********` в зоне доступности `ru-central1-b`;
    * в подсети с идентификатором `fl8beqmjckv8********` в зоне доступности `ru-central1-d`.

  * Хранилище на сетевых SSD-дисках (`network-ssd`) размером 32 ГБ для каждого ClickHouse®-хоста кластера.
  * Хранилище на сетевых SSD-дисках (`network-ssd`) размером 10 ГБ для каждого ZooKeeper-хоста кластера.
  * Один пользователь `user1` с паролем `user1user1`.
  * Одна база данных `db1`.
  * Защита от непреднамеренного удаления.


  Выполните следующую команду:

  
  ```bash
  yc managed-clickhouse cluster create \
    --name ch-zk \
    --environment=production \
    --network-name default \
    --host type=clickhouse,zone-id=ru-central1-a,subnet-id=e9bhbia2scnk******** \
    --host type=clickhouse,zone-id=ru-central1-b,subnet-id=e2lfqbm5nt9r******** \
    --host type=clickhouse,zone-id=ru-central1-d,subnet-id=fl8beqmjckv8******** \
    --host type=zookeeper,zone-id=ru-central1-a,subnet-id=e9bhbia2scnk******** \
    --host type=zookeeper,zone-id=ru-central1-b,subnet-id=e2lfqbm5nt9r******** \
    --host type=zookeeper,zone-id=ru-central1-d,subnet-id=fl8beqmjckv8******** \
    --clickhouse-resource-preset s2.micro \
    --clickhouse-disk-size 32 \
    --clickhouse-disk-type network-ssd \
    --zookeeper-resource-preset b2.medium \
    --zookeeper-disk-size 10 \
    --zookeeper-disk-type network-ssd \
    --user name=user1,password=user1user1 \
    --database name=db1 \
    --security-group-ids enp6saqnq4ie******** \
    --deletion-protection
  ```



- Terraform {#tf}

  Создайте кластер Managed Service for ClickHouse® с тестовыми характеристиками:

  * Имя `mych`.
  * Окружение `PRESTABLE`.
  * Облако с идентификатором `b1gq90dgh25********`.
  * Каталог с идентификатором `b1gia87mbaom********`.
  * Новая облачная сеть `cluster-net`.

  * Один шард `shard1`, в котором будут размещены все хосты ClickHouse®.
  * Три хоста ClickHouse® класса `s2.micro` и три хоста ZooKeeper класса `b2.medium` (для обеспечения работы [репликации](../concepts/replication.md)).

    По одному хосту ClickHouse® и ZooKeeper будет размещено в новых подсетях:

    * `cluster-subnet-ru-central1-a`: `172.16.1.0/24`, зона доступности `ru-central1-a`.
    * `cluster-subnet-ru-central1-b`: `172.16.2.0/24`, зона доступности `ru-central1-b`.
    * `cluster-subnet-ru-central1-d`: `172.16.3.0/24`, зона доступности `ru-central1-d`.

    Эти подсети будут принадлежать сети `cluster-net`.

  * Новая [группа безопасности по умолчанию](connect/index.md#configuring-security-groups) `cluster-sg` (в сети `cluster-net`), разрешающая подключение к любому хосту кластера из любой сети (в том числе из интернета) по портам `8443`, `9440`.
  * Хранилище на сетевых SSD-дисках (`network-ssd`) размером 32 ГБ для каждого ClickHouse®-хоста кластера.
  * Хранилище на сетевых SSD-дисках (`network-ssd`) размером 10 ГБ для каждого ZooKeeper-хоста кластера.
  * Имя базы данных `db1`.
  * Пользователь `user1` с паролем `user1user1`.
  * Техническое обслуживание проводится в любое время.

  Конфигурационные файлы для такого кластера выглядят так:

  1. Конфигурационный файл с описанием настроек провайдера:

      `provider.tf`
      
      ```hcl
      terraform {
        required_providers {
          yandex = {
            source = "yandex-cloud/yandex"
          }
        }
      }
      
      provider "yandex" {
        cloud_id  = "b1gq90dgh25********"
        folder_id = "b1gia87mbaom********"
      }
      ```

  1. Конфигурационный файл с описанием облачной сети и подсетей:

      {% cut "networks.tf" %} 
      
      ```hcl
      resource "yandex_vpc_network" "cluster-net" { name = "cluster-net" }
      
      resource "yandex_vpc_subnet" "cluster-subnet-a" {
        name           = "cluster-subnet-ru-central1-a"
        zone           = "ru-central1-a"
        network_id     = yandex_vpc_network.cluster-net.id
        v4_cidr_blocks = ["172.16.1.0/24"]
      }
      
      resource "yandex_vpc_subnet" "cluster-subnet-b" {
        name           = "cluster-subnet-ru-central1-b"
        zone           = "ru-central1-b"
        network_id     = yandex_vpc_network.cluster-net.id
        v4_cidr_blocks = ["172.16.2.0/24"]
      }
      
      resource "yandex_vpc_subnet" "cluster-subnet-d" {
        name           = "cluster-subnet-ru-central1-d"
        zone           = "ru-central1-d"
        network_id     = yandex_vpc_network.cluster-net.id
        v4_cidr_blocks = ["172.16.3.0/24"]
      }
      ```
      
      {% endcut %}

  1. Конфигурационный файл с описанием группы безопасности:

      {% cut "security-groups.tf" %}
      
      ```hcl
      resource "yandex_vpc_default_security_group" "cluster-sg" {
        network_id = yandex_vpc_network.cluster-net.id
      
        ingress {
          description    = "HTTPS (secure)"
          port           = 8443
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      
        ingress {
          description    = "clickhouse-client (secure)"
          port           = 9440
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      
        egress {
          description    = "Allow all egress cluster traffic"
          protocol       = "TCP"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      }
      ```
      
      {% endcut %}

  1. Конфигурационный файл с описанием кластера и его хостов:

      {% cut "cluster.tf" %}
      
      ```hcl
      resource "yandex_mdb_clickhouse_cluster_v2" "mych" {
        name               = "mych"
        environment        = "PRESTABLE"
        network_id         = yandex_vpc_network.cluster-net.id
        security_group_ids = [yandex_vpc_default_security_group.cluster-sg.id]
      
        clickhouse = {
          resources = {
            resource_preset_id = "s2.micro"
            disk_type_id       = "network-ssd"
            disk_size          = 32
          }
        }
      
        zookeeper = {
          resources = {
            resource_preset_id = "b2.medium"
            disk_type_id       = "network-ssd"
            disk_size          = 10
          }
        }
      
        shards = {
          "shard1" = {
            weight = 1
          }
        }
      
        hosts = {
      
          "h1" = {
            type       = "CLICKHOUSE"
            zone       = "ru-central1-a"
            subnet_id  = yandex_vpc_subnet.cluster-subnet-a.id
            shard_name = "shard1"
          }
      
          "h2" = {
            type       = "CLICKHOUSE"
            zone       = "ru-central1-b"
            subnet_id  = yandex_vpc_subnet.cluster-subnet-b.id
            shard_name = "shard1"
          }
      
          "h3" = {
            type       = "CLICKHOUSE"
            zone       = "ru-central1-d"
            subnet_id  = yandex_vpc_subnet.cluster-subnet-d.id
            shard_name = "shard1"
          }
      
          "h4" = {
            type      = "ZOOKEEPER"
            zone      = "ru-central1-a"
            subnet_id = yandex_vpc_subnet.cluster-subnet-a.id
          }
      
          "h5" = {
            type      = "ZOOKEEPER"
            zone      = "ru-central1-b"
            subnet_id = yandex_vpc_subnet.cluster-subnet-b.id
          }
      
          "h6" = {
            type      = "ZOOKEEPER"
            zone      = "ru-central1-d"
            subnet_id = yandex_vpc_subnet.cluster-subnet-d.id
          }
        }
      
        maintenance_window {
          type = "ANYTIME"
        }
      }
      
      resource "yandex_mdb_clickhouse_database" "db1" {
        cluster_id = yandex_mdb_clickhouse_cluster_v2.mych.id
        name       = "db1"
      }
      
      resource "yandex_mdb_clickhouse_user" "user1" {
        cluster_id = yandex_mdb_clickhouse_cluster_v2.mych.id
        name       = "user1"
        password   = "user1user1"
        permission {
          database_name = yandex_mdb_clickhouse_database.db1.name
        }
      }
      ```
      
      {% endcut %}


{% endlist %}

_ClickHouse® является зарегистрированным товарным знаком [ClickHouse, Inc](https://clickhouse.com)._