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

# Создание кластера Yandex MPP Analytics for PostgreSQL


{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступна только [зона доступности](../../overview/concepts/geo-scope.md) `kz1-a`.

{% endnote %}

{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступны только [платформы](../../compute/concepts/vm-platforms.md#standard-platforms) `standard-v3` (Intel Ice Lake) и `standard-v3-t4i` (Intel Ice Lake with T4i). Другие типы платформ, кластеры GPU и выделенные хосты недоступны.

{% endnote %}


[Кластер](../../glossary/cluster.md) Yandex MPP Analytics for PostgreSQL состоит из хостов-мастеров, которые принимают запросы от клиента, и хостов-сегментов, обеспечивающих обработку и хранение данных.

Подробнее читайте в разделе [Взаимосвязь ресурсов в Yandex MPP Analytics for PostgreSQL](../concepts/index.md).


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

Для создания кластера Yandex MPP Analytics for PostgreSQL и работы с ним вашему аккаунту в Yandex Cloud нужны роли:

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

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


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

{% list tabs group=instructions %}

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

    Чтобы создать кластер Yandex MPP Analytics for PostgreSQL:

    1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, в котором нужно создать кластер баз данных.
    1. Перейдите в сервис **Yandex MPP Analytics for&nbsp;PostgreSQL**.
    1. Нажмите кнопку **Создать кластер**.
    1. Введите имя кластера. Оно должно быть уникальным в рамках каталога.
    1. (Опционально) Введите описание кластера.
    1. Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
        * `PRODUCTION` — для стабильных версий ваших приложений.
        * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
    1. Выберите версию СУБД.

    
    1. (Опционально) Чтобы разместить хосты-мастеры или хосты-сегменты на выделенных хостах, выберите группы [выделенных хостов](../../compute/concepts/dedicated-host.md). Можно назначить группы на один из видов хостов Yandex MPP Analytics for PostgreSQL либо сразу на оба.

        Группа выделенных хостов должна быть предварительно [создана](../../compute/operations/dedicated-host/create-host-group.md) в сервисе Yandex Compute Cloud.

        Эту настройку нельзя изменить после создания кластера. 
        
        При использовании выделенных хостов стоимость использования кластера складывается из цены за [вычислительные ресурсы Yandex Compute Cloud](../../compute/pricing.md#prices-dedicated-host) и [наценки Yandex MPP Analytics for PostgreSQL](../pricing/index.md#dedicated-hosts).


    1. В блоке **Сетевые настройки** выберите:

        * [Облачную сеть](../../vpc/concepts/network.md#network) для размещения кластера.

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

        * [Зону доступности](../../overview/concepts/geo-scope.md) и [подсеть](../../vpc/concepts/network.md#subnet) для размещения кластера. Чтобы создать новую подсеть, нажмите **Создать подсеть** в списке подсетей.

           {% note warning %}
           
           Выбранную для размещения кластера зону доступности нельзя будет изменить.
           
           {% endnote %}

           Для кластеров, хосты которых располагаются в [зоне доступности](../../overview/concepts/geo-scope.md) `kz1-d`, недоступно хранилище на локальных SSD-дисках при использовании платформы Intel Cascade Lake.

        
        * Опцию **Публичный доступ**, чтобы подключаться к кластеру из интернета.


    1. (Опционально) Включите опцию **Гибридное хранилище**.

        Она включает [гибридное хранилище](../concepts/hybrid-storage.md). Гибридное хранилище нельзя отключить после сохранения настроек кластера.

        Когда гибридное хранилище включено, с помощью [расширения Yezzey](extensions/yezzey.md) можно переместить часть [таблиц AO и AOCO](../concepts/tables.md) из хранилища кластера в холодное хранилище и наоборот.
        
        Холодное хранилище удобно, если данные таблиц нужно хранить долго, а работать с ними планируется редко. Так хранение [будет дешевле](../pricing/index.md#rules-storage).

        
        {% note info %}
        
        Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md) и не тарифицируется.
        
        {% endnote %}


    1. Укажите реквизиты пользователя-администратора. Это специальный пользователь, который необходим для управления кластером и не может быть удален. Подробнее читайте в разделе [Пользователи и роли](../concepts/cluster-users.md).

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

            {% note info %}
            
            Имена `admin`, `gpadmin`, [mdb_admin](../concepts/cluster-users.md#mdb_admin), `mdb_replication`, `monitor`, `none`, `postgres`, `public`, `repl` зарезервированы для собственных нужд Yandex MPP Analytics for PostgreSQL. Создавать пользователей с этими именами нельзя.
            
            {% endnote %}

        * **Пароль** — длина от 8 до 128 символов.

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

        * **Начало резервного копирования (UTC)** — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию — `22:00 - 23:00` UTC.
        * **Обслуживание** — настройки времени [технического обслуживания](../concepts/maintenance.md):

            * Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт **В любое время** (по умолчанию).
            * Чтобы указать предпочтительное время начала обслуживания, выберите пункт **По расписанию** и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
            
            Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.

        
        * **Сервисный аккаунт** — выберите существующий сервисный аккаунт для доступа к сервисам Yandex Cloud или создайте новый.
        * **Запись логов** — опция включает логирование операций в кластере. За хранение логов взимается плата в соответствии с тарифами Yandex Cloud Logging. Для записи логов [назначьте](../../iam/operations/sa/assign-role-for-sa.md) выбранному сервисному аккаунту роль `logging.writer`.

          Если вы включили опцию, настройте параметры логирования:

          * Укажите место записи логов:

             * **Каталог** — логи будут записываться в лог-группу по умолчанию выбранного каталога.
             * **Группа** — логи будут записываться в новую или выбранную из списка [лог-группу](../../logging/concepts/log-group.md).

          * Выберите, какие логи записывать:

             * **Логи командного центра** — опция включает запись логов [командного центра](../concepts/command-center.md).
             * **Логи Greenplum** — опция включает запись логов СУБД. Уровень логирования можно задать с помощью параметра [Log min messages](../concepts/settings-list.md#setting-log-min-messages) в блоке **Настройки СУБД**.




        * **Защита от удаления** — управляет защитой кластера от непреднамеренного удаления.

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

    1. (Опционально) Задайте режим работы и параметры [менеджера подключений](../concepts/pooling.md) в блоке **Менеджер подключений**:

        * **Режим** — `SESSION` (сессионный) или `TRANSACTION` (транзакционный, по умолчанию).
        * **Размер** — количество клиентских соединений. По умолчанию — `0` (не ограничено).
        * **Тайм-аут ожидания клиента** — время неактивности клиентского соединения в секундах, после которого соединение разрывается. По умолчанию — `28800`.
        * **Тайм-аут простоя в транзакции** — время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается. По умолчанию — `0` (не ограничено).

    1. (Опционально) В блоке **Управление фоновыми процессами** измените параметры [регламентных операций технического обслуживания](../concepts/maintenance.md#regular-ops):

        * **Время старта (UTC)** — время, в которое начнется выполнение операции `VACUUM`. По умолчанию — `19:00 UTC`. После завершения операции `VACUUM` запустится операция `ANALYZE`.
        * **Таймаут VACUUM** — максимальная длительность выполнения операции `VACUUM`, в секундах. Возможные значения: от `7200` до `86399`, по умолчанию — `36000`. Когда указанное время истечет, операция `VACUUM` будет принудительно завершена.
        * **Таймаут ANALYZE** — максимальная длительность выполнения операции `ANALYZE`, в секундах. Возможные значения: от `7200` до `86399`, по умолчанию — `36000`. Когда указанное время истечет, операция `ANALYZE` будет принудительно завершена.
        
        Суммарная длительность операций `VACUUM` и `ANALYZE` не может превышать 24 часа.

    1. Укажите параметры хостов-мастеров на вкладке **Master**. Рекомендуемую конфигурацию вы найдете в разделе [Расчет конфигурации кластера](../concepts/calculate-specs.md#master).

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

        * В блоке **Хранилище** выберите [тип диска](../concepts/storage.md) и укажите его размер. Доступные типы диска [зависят](../concepts/storage.md) от выбранного класса хостов.

          {% note warning %}
          
          * Тип диска нельзя изменить после создания кластера.
          * Размер хранилища не может быть уменьшен после автоматического увеличения.
          * Во время изменения размера хранилища хосты кластера будут недоступны.
          
          {% endnote %}

    1. Укажите параметры хостов-сегментов на вкладке **Segment**. Рекомендуемую конфигурацию вы найдете в разделе [Расчет конфигурации кластера](../concepts/calculate-specs.md#segment).

        * Количество хостов-сегментов.
        * [Количество сегментов на хост](../concepts/index.md). Максимальное значение этого параметра зависит от класса хостов.

            Класс хостов-сегментов и количество сегментов на хост [влияют](../concepts/instance-types.md#select-class-segment-hosts) на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть [ошибка](../qa/cluster-hosts.md#memory-limit).

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

           {% note warning %}
           
           * Тип диска нельзя изменить после создания кластера.
           * Размер хранилища не может быть уменьшен после автоматического увеличения.
           * Во время изменения размера хранилища хосты кластера будут недоступны.
           
           {% endnote %}

           * Выберите размер хранилища.

    1. При необходимости задайте [настройки СУБД уровня кластера](../concepts/settings-list.md#dbms-cluster-settings).

    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`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы создать кластер Yandex MPP Analytics for PostgreSQL:

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

        ```bash
        yc vpc subnet list
        ```

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


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

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

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

        
        ```bash
        yc managed-greenplum cluster create <имя_кластера> \
           --greenplum-version=<версия_СУБД> \
           --environment=<окружение> \
           --network-name=<имя_сети> \
           --user-name=<имя_пользователя> \
           --user-password=<пароль_пользователя> \
           --master-config resource-id=<класс_хоста>,`
                          `disk-size=<объем_хранилища_ГБ>,`
                          `disk-type=<network-ssd|network-ssd-nonreplicated|local-ssd> \
           --segment-config resource-id=<класс_хоста>,`
                          `disk-size=<объем_хранилища_ГБ>,`
                          `disk-type=<network-ssd-nonreplicated|local-ssd> \
           --zone-id=<зона_доступности> \
           --subnet-id=<идентификатор_подсети> \
           --assign-public-ip=<разрешить_публичный_доступ_к_хостам_кластера> \
           --security-group-ids=<список_идентификаторов_групп_безопасности> \
           --deletion-protection
        ```

        {% note info %}

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

        {% endnote %}

        Где:

        * `--greenplum-version` — версия СУБД: 6.28 или 6.29, Cloudberry 2.
        * `--environment` — окружение:
            * `PRODUCTION` — для стабильных версий ваших приложений.
            * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
        * `--network-name` — [имя сети](../../vpc/concepts/network.md#network).
        * `--user-name` — имя пользователя. Может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания. Длина от 1 до 32 символов.
        * `--user-password` — пароль. Длина от 8 до 128 символов.
        * `--master-config` и `--segment-config` — конфигурация хостов-мастеров и хостов-сегментов:
            * `resource-id` — [класс хоста](../concepts/instance-types.md).

                Класс хостов-сегментов и количество сегментов на хост [влияют](../concepts/instance-types.md#select-class-segment-hosts) на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть [ошибка](../qa/cluster-hosts.md#memory-limit).

            * `disk-size` — объем хранилища в гигабайтах.
            * `disk-type` — [тип диска](../concepts/storage.md):
                * `network-ssd` (только для хостов-мастеров);
                * `local-ssd`;
                * `network-ssd-nonreplicated`.

        * `--zone-id` — [зона доступности](../../overview/concepts/geo-scope.md).
        * `--subnet-id` — [идентификатор подсети](../../vpc/concepts/network.md#subnet). Необходимо указывать, если в выбранной зоне доступности создано 2 и больше подсетей.
        * `--assign-public-ip` — флаг, который указывается, если для хостов нужен [публичный доступ](../concepts/network.md#public-access-to-a-host): `true` или `false`.
        * `--security-group-ids` — список идентификаторов [групп безопасности](../../vpc/concepts/security-groups.md).
        * `--deletion-protection` — защита кластера от непреднамеренного удаления: `true` или `false`.


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

    1. Чтобы задать время начала резервного копирования, передайте нужное значение в формате `HH:MM:SS` в параметре `--backup-window-start`:

        ```bash
        yc managed-greenplum cluster create <имя_кластера> \
           ...
           --backup-window-start=<время_начала_резервного_копирования>
        ```

    
    1. (Опционально) Чтобы создать кластер, размещенный на группах [выделенных хостов](../../compute/concepts/dedicated-host.md), укажите через запятую их идентификаторы в параметрах `--master-host-group-ids` и `--segment-host-group-ids`:

        ```bash
        yc managed-greenplum cluster create <имя_кластера> \
           ...
           --master-host-group-ids=<идентификаторы_групп_выделенных_хостов_для_хостов-мастеров> \
           --segment-host-group-ids=<идентификаторы_групп_выделенных_хостов_для_хостов-сегментов>
        ```

        Вы можете назначить группы на один из видов хостов Yandex MPP Analytics for PostgreSQL либо сразу на оба.

        Группа выделенных хостов должна быть предварительно [создана](../../compute/operations/dedicated-host/create-host-group.md) в сервисе Yandex Compute Cloud.

        Эту настройку нельзя изменить после создания кластера. 
        
        При использовании выделенных хостов стоимость использования кластера складывается из цены за [вычислительные ресурсы Yandex Compute Cloud](../../compute/pricing.md#prices-dedicated-host) и [наценки Yandex MPP Analytics for PostgreSQL](../pricing/index.md#dedicated-hosts).


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

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

        Где `type` — тип технического обслуживания:

        * `anytime` (по умолчанию) — в любое время.
        * `weekly` — по расписанию. Для этого значения дополнительно укажите:
            * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
            * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
        
              > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.



    
    1. Чтобы включить [передачу логов в сервис Yandex Cloud Logging](mgp-to-cloud-logging.md), укажите параметры при создании кластера:

        ```bash
        yc managed-greenplum cluster create <имя_кластера> \
           ...
           --service-account <идентификатор_сервисного_аккаунта> \
           --log-enabled \
           --log-command-center-enabled \
           --log-greenplum-enabled \
           --log-pooler-enabled \
           --log-folder-id <идентификатор_каталога>
        ```

        Где:

        * `--service-account` — идентификатор сервисного аккаунта.
        * `--log-enabled` — включает механизм передачи логов. Обязателен для работы других флагов, отвечающих за передачу конкретных логов, например, `--log-greenplum-enabled`.
        * `--log-command-center-enabled` — передача логов [командного центра](../concepts/command-center.md).
        * `--log-greenplum-enabled` — передача логов СУБД.
        * `--log-pooler-enabled` — передача логов [менеджера подключений](../concepts/pooling.md).
        * `--log-folder-id` — идентификатор каталога, лог-группу которого нужно использовать.
        * `--log-group-id` — идентификатор лог-группы, в которую будут записываться логи.

            Укажите только одну из настроек: `--log-folder-id` либо `--log-group-id`.


- 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).


  Чтобы создать кластер Yandex MPP Analytics for PostgreSQL:

  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).

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

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

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

      ```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. Создайте конфигурационный файл с описанием кластера и его хостов.

      Пример структуры конфигурационного файла:



      
      ```hcl
      resource "yandex_mdb_greenplum_cluster" "<имя_кластера_в_Terraform>" {
        name                = "<имя_кластера>"
        environment         = "<окружение>"
        network_id          = yandex_vpc_network.<имя_сети_в_Terraform>.id
        zone                = "<зона_доступности>"
        subnet_id           = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
        assign_public_ip    = <разрешить_публичный_доступ_к_хостам_кластера>
        deletion_protection = <защитить_кластер_от_удаления>
        version             = "<версия_СУБД>"
        master_host_count   = <количество_хостов_мастеров>
        segment_host_count  = <количество_хостов_сегментов>
        segment_in_host     = <количество_сегментов_на_хост>
        master_subcluster {
          resources {
            resource_preset_id = "<класс_хоста>"
            disk_size          = <объем_хранилища_ГБ>
            disk_type_id       = "<тип_диска>"
          }
        }
        segment_subcluster {
          resources {
            resource_preset_id = "<класс_хоста>"
            disk_size          = <объем_хранилища_ГБ>
            disk_type_id       = "<тип_диска>"
          }
        }

        user_name     = "<имя_пользователя>"
        user_password = "<пароль>"

        security_group_ids = ["<список_идентификаторов_групп_безопасности>"]
      }
      ```


      Где:

      
      * `assign_public_ip` — публичный доступ к хостам кластера: `true` или `false`.


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

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

      * `version` — версия СУБД.
      * `master_host_count` — количество хостов-мастеров: 2.
      * `segment_host_count` — количество хостов-сегментов: от 2 до 32.
      * `segment_in_host` — [количество сегментов на хост](../concepts/index.md). Максимальное значение этого параметра зависит от класса хостов.

          Класс хостов-сегментов и количество сегментов на хост [влияют](../concepts/instance-types.md#select-class-segment-hosts) на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть [ошибка](../qa/cluster-hosts.md#memory-limit).



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

  
  1. (Опционально) Чтобы разместить хосты-мастеры или хосты-сегменты на выделенных хостах, укажите группы [выделенных хостов](../../compute/concepts/dedicated-host.md):

      ```hcl
      resource "yandex_mdb_greenplum_cluster" "<имя_кластера_в_Terraform>" {
        ...
        master_host_group_ids = [<идентификаторы_групп_выделенных_хостов_для_хостов-мастеров>]
        segment_host_group_ids = [<идентификаторы_групп_выделенных_хостов_для_хостов-сегментов>]
        ...
      }
      ```

      Вы можете назначить группы на один из двух видов хостов Yandex MPP Analytics for PostgreSQL либо сразу на оба.

      Группа выделенных хостов должна быть предварительно [создана](../../compute/operations/dedicated-host/create-host-group.md) в сервисе Yandex Compute Cloud.

      Эту настройку нельзя изменить после создания кластера. 
      
      При использовании выделенных хостов стоимость использования кластера складывается из цены за [вычислительные ресурсы Yandex Compute Cloud](../../compute/pricing.md#prices-dedicated-host) и [наценки Yandex MPP Analytics for PostgreSQL](../pricing/index.md#dedicated-hosts).

  1. Чтобы включить [передачу логов в сервис Yandex Cloud Logging](mgp-to-cloud-logging.md), укажите параметры:

      ```hcl
      resource "yandex_mdb_greenplum_cluster" "<имя_кластера_в_Terraform>" {
        ...
        service_account_id="<идентификатор_сервисного_аккаунта>"
        logging {
          enabled                = <включить_передачу_логов>
          command_center_enabled = <передавать_логи_Yandex_Command_Center>
          greenplum_enabled      = <передавать_логи_СУБД>
          pooler_enabled         = <передавать_логи_менеджера_подключений>
          folder_id              = "<идентификатор_каталога>"
        }
      }
      ```

      Где:

      * `service_account_id` — идентификатор сервисного аккаунта.
      * `logging` — настройки передачи логов:

          * `enabled` — управляет механизмом передачи логов: `true` или `false`. Для работы параметров, отвечающих за передачу конкретных логов, передайте значение `true`.
          * `command_center_enabled` — передача логов [командного центра](../concepts/command-center.md): `true` или `false`.
          * `greenplum_enabled` — передача логов СУБД: `true` или `false`.
          * `pooler_enabled` — передача логов [менеджера подключений](../concepts/pooling.md): `true` или `false`.
          * `folder_id` — идентификатор каталога, лог-группу которого нужно использовать.
          * `log_group_id` — идентификатор лог-группы, в которую будут записываться логи.

              Укажите только одну из настроек: `folder_id` либо `log_group_id`.

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

      ```hcl
      resource "yandex_mdb_greenplum_cluster" "<имя_кластера_в_Terraform>" {
        ...
        maintenance_window {
          type = "<тип_технического_обслуживания>"
          day  = "<день_недели>"
          hour = <порядковый_номер_часового_интервала>
        }
        ...
      }
      ```

      Где `type` — тип технического обслуживания:

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

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


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

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

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

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

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

- REST API {#api}

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

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

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



        
        ```json
        {
          "folderId": "<идентификатор_каталога>",
          "name": "<имя_кластера>",
          "environment": "<окружение>",
          "config": {
            "version": "<версия_СУБД>",
            "zoneId": "<зона_доступности>",
            "subnetId": "<идентификатор_подсети>",
            "assignPublicIp": <разрешить_публичный_доступ_к_хостам_кластера>
          },
          "masterConfig": {
            "resources": {
              "resourcePresetId": "<класс_хостов>",
              "diskSize": "<размер_хранилища_в_байтах>",
              "diskTypeId": "<тип_диска>"
            }
          },
          "segmentConfig": {
            "resources": {
              "resourcePresetId": "<класс_хостов>",
              "diskSize": "<размер_хранилища_в_байтах>",
              "diskTypeId": "<тип_диска>"
            }
          },
          "masterHostCount": "<количество_хостов-мастеров>",
          "segmentHostCount": "<количество_хостов-сегментов>",
          "segmentInHost": "<количество_сегментов_на_хост>",
          "userName": "<имя_пользователя>",
          "userPassword": "<пароль_пользователя>",
          "networkId": "<идентификатор_сети>",
          "securityGroupIds": [
              "<идентификатор_группы_безопасности_1>",
              "<идентификатор_группы_безопасности_2>",
              ...
              "<идентификатор_группы_безопасности_N>"
          ],
          "deletionProtection": <защитить_кластер_от_удаления>,
          "configSpec": {
            "pool": {
              "mode": "<режим_работы>",
              "size": "<количество_клиентских_соединений>",
              "clientIdleTimeout": "<время_ожидания_клиента>",
              "idleInTransactionTimeout": "<время_ожидания_клиента_в_транзакции>"
            }
          },
          "cloudStorage": {
            "enable": <использовать_гибридное_хранилище>
          },
          "serviceAccountId": "<идентификатор_сервисного_аккаунта>",
          "logging": {
            "enabled": "<включить_передачу_логов>",
            "commandCenterEnabled": "<передавать_логи_Yandex_Command_Center>",
            "greenplumEnabled": "<передавать_логи_СУБД>",
            "poolerEnabled": "<передавать_логи_менеджера_подключений>",
            "folderId": "<идентификатор_каталога>"
          },
          "maintenanceWindow": {
            "weeklyMaintenanceWindow": {
            "day": "<день_недели>",
            "hour": "<порядковый_номер_часового_интервала>"
            }
          }
        }
        ```


        Где:

        * `folderId` — идентификатор каталога. Его можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).
        * `name` — имя кластера.
        * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
        * `config` — настройки кластера:

            * `version` — версия СУБД.



            * `zoneId` — [зона доступности](../../overview/concepts/geo-scope.md).
            * `subnetId` — идентификатор [подсети](../../vpc/concepts/network.md#subnet).
            * `assignPublicIp` — публичный доступ к хостам кластера: `true` или `false`.

        * `masterConfig.resources`, `segmentConfig.resources` — конфигурация хостов-мастеров и хостов-сегментов кластера:

            * `resourcePresetId` — [класс хостов](../concepts/instance-types.md);
            * `diskSize` — размер диска в байтах;
            * `diskTypeId` — [тип диска](../concepts/storage.md).

        * `masterHostCount` — количество хостов-мастеров: `1` или `2`.
        * `segmentHostCount` — количество хостов-сегментов: от `2` до `32`.
        * `segmentInHost` — [количество сегментов на хост](../concepts/index.md). Максимальное значение этого параметра зависит от класса хостов.

            Класс хостов-сегментов и количество сегментов на хост [влияют](../concepts/instance-types.md#select-class-segment-hosts) на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть [ошибка](../qa/cluster-hosts.md#memory-limit).

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

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


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

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

        * `configSpec.pool` — настройки [менеджера подключений](../concepts/pooling.md):

            * `mode` — режим работы: `SESSION` или `TRANSACTION`.
            * `size` — количество клиентских соединений.
            * `clientIdleTimeout` — время неактивности клиентского соединения в секундах, после которого соединение разрывается.
            * `idleInTransactionTimeout` — время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.

        * `cloudStorage.enable` — использование гибридного хранилища. Установите значение `true`, чтобы включить в кластере [расширение Yezzey](https://github.com/yezzey-gp/yezzey/) от Yandex Cloud. Оно применяется, чтобы [выгрузить таблицы AO и AOCO](../tutorials/yezzey.md) с дисков кластера Yandex MPP Analytics for PostgreSQL в холодное хранилище Yandex Object Storage. Так данные хранятся в служебном бакете в сжатом и зашифрованном виде. Это [более экономичный способ хранения](../../storage/pricing.md).

            Гибридное хранилище нельзя отключить после сохранения настроек кластера.

            
            {% note info %}
            
            Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md) и не тарифицируется.
            
            {% endnote %}


        
        * `masterHostGroupIds` и `segmentHostGroupIds` — (опционально) идентификаторы групп [выделенных хостов](../../compute/concepts/dedicated-host.md) для хостов-мастеров и хостов-сегментов.

            Группа выделенных хостов должна быть предварительно [создана](../../compute/operations/dedicated-host/create-host-group.md) в сервисе Yandex Compute Cloud.

            Эту настройку нельзя изменить после создания кластера. 
            
            При использовании выделенных хостов стоимость использования кластера складывается из цены за [вычислительные ресурсы Yandex Compute Cloud](../../compute/pricing.md#prices-dedicated-host) и [наценки Yandex MPP Analytics for PostgreSQL](../pricing/index.md#dedicated-hosts).

        * `serviceAccountId` — идентификатор сервисного аккаунта.
        * `logging` — настройки [передачи логов в сервис Yandex Cloud Logging](mgp-to-cloud-logging.md):

            * `enabled` — управляет механизмом передачи логов: `true` или `false`. Для работы параметров, отвечающих за передачу конкретных логов, передайте значение `true`.
            * `commandCenterEnabled` — передача логов [командного центра](../concepts/command-center.md): `true` или `false`.
            * `greenplumEnabled` — передача логов СУБД: `true` или `false`.
            * `poolerEnabled` — передача логов [менеджера подключений](../concepts/pooling.md): `true` или `false`.
            * `folderId` — идентификатор каталога, лог-группу которого нужно использовать.
            * `logGroupId` — идентификатор лог-группы, в которую будут записываться логи.

                Укажите только одну из настроек: `folderId` либо `logGroupId`.


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

            * `anytime` (по умолчанию) — разрешает проводить техническое обслуживание в любое время.
            * `weeklyMaintenanceWindow` — техническое обслуживание проводится раз в неделю в указанное время:

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

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

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

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

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

- gRPC API {#grpc-api}

    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. Создайте файл `body.json` и добавьте в него следующее содержимое:



        
        ```json
        {
          "folder_id": "<идентификатор_каталога>",
          "name": "<имя_кластера>",
          "environment": "<окружение>",
          "config": {
            "version": "<версия_СУБД>",
            "zone_id": "<зона_доступности>",
            "subnet_id": "<идентификатор_подсети>",
            "assign_public_ip": <разрешить_публичный_доступ_к_хостам_кластера>
          },
          "master_config": {
            "resources": {
              "resource_preset_id": "<класс_хостов>",
              "disk_size": "<размер_хранилища_в_байтах>",
              "disk_type_id": "<тип_диска>"
            }
          },
          "segment_config": {
            "resources": {
              "resource_preset_id": "<класс_хостов>",
              "disk_size": "<размер_хранилища_в_байтах>",
              "disk_type_id": "<тип_диска>"
            }
          },
          "master_host_count": "<количество_хостов-мастеров>",
          "segment_host_count": "<количество_хостов-сегментов>",
          "segment_in_host": "<количество_сегментов_на_хост>",
          "user_name": "<имя_пользователя>",
          "user_password": "<пароль_пользователя>",
          "network_id": "<идентификатор_сети>",
          "security_group_ids": [
              "<идентификатор_группы_безопасности_1>",
              "<идентификатор_группы_безопасности_2>",
              ...
              "<идентификатор_группы_безопасности_N>"
          ],
          "deletion_protection": <защитить_кластер_от_удаления>
          "config_spec": {
            "pool": {
              "mode": "<режим_работы>",
              "size": "<количество_клиентских_соединений>",
              "client_idle_timeout": "<время_ожидания_клиента>",
              "idle_in_transaction_timeout": "<время_ожидания_клиента_в_транзакции>"
            }
          },
          "cloud_storage": {
            "enable": <использовать_гибридное_хранилище>
          },
          "service_account_id": "<идентификатор_сервисного_аккаунта>",
          "logging": {
            "enabled": "<включить_передачу_логов>",
            "command_center_enabled": "<передавать_логи_Yandex_Command_Center>",
            "greenplum_enabled": "<передавать_логи_СУБД>",
            "pooler_enabled": "<передавать_логи_менеджера_подключений>",
            "folder_id": "<идентификатор_каталога>"
          },
          "maintenance_window": {
            "weekly_maintenance_window": {
              "day": "<день_недели>",
              "hour": "<порядковый_номер_часового_интервала>"
            }
          }
        }
        ```


        Где:

        * `folder_id` — идентификатор каталога. Его можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).
        * `name` — имя кластера.
        * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
        * `config` — настройки кластера:

            * `version` — версия СУБД.



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

            
            * `subnet_id` — идентификатор [подсети](../../vpc/concepts/network.md#subnet).
            * `assign_public_ip` — публичный доступ к хостам кластера: `true` или `false`.


        * `master_config.resources`, `segment_config.resources` — конфигурация хостов-мастеров и хостов-сегментов кластера:

            * `resource_preset_id` — [класс хостов](../concepts/instance-types.md);
            * `disk_size` — размер диска в байтах;
            * `disk_type_id` — [тип диска](../concepts/storage.md).

        * `master_host_count` — количество хостов-мастеров: `1` или `2`.
        * `segment_host_count` — количество хостов-сегментов: от `2` до `32`.
        * `segment_in_host` — [количество сегментов на хост](../concepts/index.md). Максимальное значение этого параметра зависит от класса хостов.

            Класс хостов-сегментов и количество сегментов на хост [влияют](../concepts/instance-types.md#select-class-segment-hosts) на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть [ошибка](../qa/cluster-hosts.md#memory-limit).

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

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


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

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

        * `config_spec.pool` — настройки [менеджера подключений](../concepts/pooling.md):

            * `mode` — режим работы: `SESSION` или `TRANSACTION`.
            * `size` — количество клиентских соединений.
            * `client_idle_timeout` — время неактивности клиентского соединения в секундах, после которого соединение разрывается.
            * `idle_in_transaction_timeout` — время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.

        * `cloud_storage.enable` — использование гибридного хранилища. Установите значение `true`, чтобы включить в кластере [расширение Yezzey](https://github.com/yezzey-gp/yezzey/) от Yandex Cloud. Оно применяется, чтобы [выгрузить таблицы AO и AOCO](../tutorials/yezzey.md) с дисков кластера Yandex MPP Analytics for PostgreSQL в холодное хранилище Yandex Object Storage. Так данные хранятся в служебном бакете в сжатом и зашифрованном виде. Это [более экономичный способ хранения](../../storage/pricing.md).

            Гибридное хранилище нельзя отключить после сохранения настроек кластера.

            
            {% note info %}
            
            Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md) и не тарифицируется.
            
            {% endnote %}


        
        * `master_host_group_ids` и `segment_host_group_ids` — (опционально) идентификаторы групп [выделенных хостов](../../compute/concepts/dedicated-host.md) для хостов-мастеров и хостов-сегментов.

            Группа выделенных хостов должна быть предварительно [создана](../../compute/operations/dedicated-host/create-host-group.md) в сервисе Yandex Compute Cloud.

            Эту настройку нельзя изменить после создания кластера. 
            
            При использовании выделенных хостов стоимость использования кластера складывается из цены за [вычислительные ресурсы Yandex Compute Cloud](../../compute/pricing.md#prices-dedicated-host) и [наценки Yandex MPP Analytics for PostgreSQL](../pricing/index.md#dedicated-hosts).

        * `service_account_id` — идентификатор сервисного аккаунта.
        * `logging` — настройки [передачи логов в сервис Yandex Cloud Logging](mgp-to-cloud-logging.md):

            * `enabled` — управляет механизмом передачи логов: `true` или `false`. Для работы параметров, отвечающих за передачу конкретных логов, передайте значение `true`.
            * `command_center_enabled` — передача логов [командного центра](../concepts/command-center.md): `true` или `false`.
            * `greenplum_enabled` — передача логов СУБД: `true` или `false`.
            * `pooler_enabled` — передача логов [менеджера подключений](../concepts/pooling.md): `true` или `false`.
            * `folder_id` — идентификатор каталога, лог-группу которого нужно использовать.
            * `log_group_id` — идентификатор лог-группы, в которую будут записываться логи.

                Укажите только одну из настроек: `folder_id` либо `log_group_id`.


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

            * `anytime` (по умолчанию) — разрешает проводить техническое обслуживание в любое время.
            * `weekly_maintenance_window` — техническое обслуживание проводится раз в неделю в указанное время:

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

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

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

        ```bash
        grpcurl \
            -format json \
            -import-path ~/cloudapi/ \
            -import-path ~/cloudapi/third_party/googleapis/ \
            -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/cluster_service.proto \
            -rpc-header "Authorization: Bearer $IAM_TOKEN" \
            -d @ \
            mdb.api.yandexcloud.kz:443 \
            yandex.cloud.mdb.greenplum.v1.ClusterService.Create \
            < body.json
        ```

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

{% endlist %}

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

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

Чтобы создать копию кластера Yandex MPP Analytics for PostgreSQL:

{% 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_greenplum_cluster" "old" { }
        ```

    1. Запишите идентификатор первоначального кластера Yandex MPP Analytics for PostgreSQL в переменную окружения:

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

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

    1. Импортируйте настройки первоначального кластера Yandex MPP Analytics for PostgreSQL в конфигурацию Terraform:

        ```bash
        terraform import yandex_mdb_greenplum_cluster.old ${GREENPLUM_CLUSTER_ID}
        ```

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

        ```bash
        terraform show
        ```

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

        * Укажите новое имя кластера в строке `resource` и параметре `name`.
        * Удалите параметры `created_at`, `health`, `id`, `status`, `master_hosts` и `segment_hosts`.
        * Добавьте параметр `user_password`.
        * Если в блоке `maintenance_window` указано значение параметра `type = "ANYTIME"`, удалите параметр `hour`.
        * (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.

    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://kz.console.yandex.cloud).

{% endlist %}

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

### Создание кластера {#create-example}

{% list tabs group=instructions %}

- CLI {#cli}

    Создайте кластер Yandex MPP Analytics for PostgreSQL с тестовыми характеристиками:

    
    * С именем `gp-cluster`.
    * Версии `6.29`.
    * В окружении `PRODUCTION`.
    * В сети `default`.
    * С пользователем `user1`.
    * С паролем `user1user1`.
    * С хостами-мастерами и хостами-сегментами:

        * Класса `s2.medium`.
        * С хранилищем на локальных SSD-дисках (`local-ssd`) объемом 100 ГБ.

    * В зоне доступности `kz1-a`, в подсети `b0rcctk2rvtr********`.
    * С публичным доступом к хостам.
    * В группе безопасности `enp6saqnq4ie********`.
    * С защитой от непреднамеренного удаления.


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

    
    ```bash
    yc managed-greenplum cluster create \
       --name=gp-cluster \
       --greenplum-version=6.29 \
       --environment=PRODUCTION \
       --network-name=default \
       --user-name=user1 \
       --user-password=user1user1 \
       --master-config resource-id=s2.medium,`
                      `disk-size=100,`
                      `disk-type=local-ssd \
       --segment-config resource-id=s2.medium,`
                       `disk-size=100,`
                       `disk-type=local-ssd \
       --zone-id=kz1-a \
       --subnet-id=b0rcctk2rvtr******** \
       --assign-public-ip=true \
       --security-group-ids=enp6saqnq4ie******** \
       --deletion-protection
    ```


{% endlist %}

_Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах._