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

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

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

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

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

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

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

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

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

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

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

yc managed-postgresql host list \
  --cluster-name <имя_кластера>

Результат:

+----------------------------+----------------------+---------+--------+--------------------+
|            NAME            |      CLUSTER ID      |  ROLE   | HEALTH |      ZONE ID       |
+----------------------------+----------------------+---------+--------+--------------------+
| rc1b***mdb.yandexcloud.net | c9qp71dk1dfg******** | MASTER  | ALIVE  | ru-central1-b      |
| rc1a***mdb.yandexcloud.net | c9qp71dk1dfg******** | REPLICA | ALIVE  | ru-central1-a      |
+----------------------------+----------------------+---------+--------+--------------------+

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

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

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

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

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

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

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

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.ListHosts
    

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

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

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

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

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

Чтобы создать хост:

  1. Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.

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

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

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

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

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

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

Чтобы создать хост:

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

    yc vpc subnet list
    

    Результат:

    +----------------------+-----------+----------------------+---------------+-------------------+
    |          ID          |   NAME    |      NETWORK ID      |      ZONE     |      RANGE        |
    +----------------------+-----------+----------------------+---------------+-------------------+
    | b0cl69q1w2e3******** | default-d | enp6rq71w2e3******** | ru-central1-d | [172.16.**.**/20] |
    | e2lkj9q1w2e3******** | default-b | enp6rq71w2e3******** | ru-central1-b | [10.10.**.**/16]  |
    | e9b0phq1w2e3******** | a-2       | enp6rq71w2e3******** | ru-central1-a | [172.16.**.**/20] |
    | e9b9v2q1w2e3******** | default-a | enp6rq71w2e3******** | ru-central1-a | [172.16.**.**/20] |
    +----------------------+-----------+----------------------+---------------+-------------------+
    

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

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

    yc managed-postgresql host add --help
    
  3. Выполните команду добавления хоста:

    yc managed-postgresql host add \
      --cluster-name <имя_кластера> \
      --host zone-id=<зона_доступности>,subnet-id=<идентификатор_подсети>
    

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

    Также вы можете указать несколько дополнительных опций в параметре --host для управления публичным доступом к хосту и репликацией в кластере:

    • Источник репликации для хоста в опции replication-source для того, чтобы вручную управлять потоками репликации.
    • Доступность хоста извне Yandex Cloud в опции assign-public-ip:
      • true — публичный доступ включен.
      • false — публичный доступ выключен.

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

Чтобы создать хост:

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

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

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Добавьте к описанию кластера Managed Service for PostgreSQL блок host.

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

    Где:

    • name — имя хоста.
    • zone — зона доступности.
    • subnet_id — идентификатор подсети.
    • replication_source_name — источник репликации: атрибут name соответствующего блока host.
    • assign_public_ip — публичный доступ к хосту: true или false.
  3. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

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

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

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

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

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

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

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>/hosts:batchCreate' \
      --data '{
                "hostSpecs": [
                  {
                    "zoneId": "<зона_доступности>",
                    "subnetId": "<идентификатор_подсети>",
                    "assignPublicIp": <публичный_адрес_хоста:_true_или_false>,
                    "replicationSource": "<FQDN_хоста>",
                    "priority": "<приоритет_хоста>",
                    "configSpec": {
                      "postgresqlConfig_<версия_PostgreSQL>": {
                        <настройки_PostgreSQL>
                      }
                    }
                  },
                  { <аналогичный_набор_настроек_для_создаваемого_хоста_2> },
                  { ... },
                  { <аналогичный_набор_настроек_для_создаваемого_хоста_N> }
                ]
              }'
    

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

    • zoneId — зона доступности.

    • subnetId — идентификатор подсети.

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

    • replicationSource — источник репликации для хоста для ручного управления потоками репликации. В параметре укажите FQDN хоста, который будет источником репликации.

    • priority — приоритет хоста среди всех хостов.

    • configSpec.postgresqlConfig_<версия_PostgreSQL> — набор настроек PostgreSQL. Укажите каждую настройку на отдельной строке через запятую.

      Список версий PostgreSQL, доступных для параметра, см. в описании метода. Описание и возможные значения настроек см. в разделе Настройки PostgreSQL.

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

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

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

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "host_specs": [
              {
                "zone_id": "<зона_доступности>",
                "subnet_id": "<идентификатор_подсети>",
                "assign_public_ip": <публичный_адрес_хоста:_true_или_false>,
                "replication_source": "<FQDN_хоста>",
                "priority": "<приоритет_хоста>",
                "config_spec": {
                  "postgresql_config_<версия_PostgreSQL>": {
                    <настройки_PostgreSQL>
                  }
                }
              },
              { <аналогичный_набор_настроек_для_создаваемого_хоста_2> },
              { ... },
              { <аналогичный_набор_настроек_для_создаваемого_хоста_N> }
            ]
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.AddHosts
    

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

    • zone_id — зона доступности.

    • subnet_id — идентификатор подсети.

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

    • replication_source — источник репликации для хоста для ручного управления потоками репликации. В параметре укажите FQDN хоста, который будет источником репликации.

    • priority — приоритет хоста среди всех хостов.

    • config_spec.postgresql_config_<версия_PostgreSQL> — набор настроек PostgreSQL. Укажите каждую настройку на отдельной строке через запятую.

      Список версий PostgreSQL, доступных для параметра, см. в описании метода. Описание и возможные значения настроек см. в разделе Настройки PostgreSQL.

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

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

Важно

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

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

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

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

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

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

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

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

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

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

Где:

  • cluster-name — имя кластера.
  • replication-source — имя хоста-источника.
  • assign-public-ip — публичный доступ к хосту: true или false.

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

Чтобы вручную управлять потоками репликации в кластере, измените источник репликации для хоста в параметре --replication-source.

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

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

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

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Измените в описании кластера Managed Service for PostgreSQL атрибуты блока host, соответствующего изменяемому хосту.

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

Где:

  • replication_source_name — источник репликации: атрибут name соответствующего блока host.
  • assign_public_ip — публичный доступ к хосту: true или false.
  1. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

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

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

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

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

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

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

    Важно

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

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>/hosts:batchUpdate' \
      --data '{
                "updateHostSpecs": [
                  {
                    "updateMask": "assignPublicIp,replicationSource,priority,configSpec.postgresqlConfig_<версия_PostgreSQL>",
                    "hostName": "<FQDN_хоста>",
                    "assignPublicIp": <публичный_адрес_хоста:_true_или_false>,
                    "replicationSource": "<FQDN_хоста>",
                    "priority": "<приоритет_хоста>",
                    "configSpec": {
                      "postgresqlConfig_<версия_PostgreSQL>": {
                        <настройки_PostgreSQL>
                      }
                    }
                  },
                  { <аналогичный_набор_настроек_для_изменяемого_хоста_2> },
                  { ... },
                  { <аналогичный_набор_настроек_для_изменяемого_хоста_N> }
                ]
              }'
    

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

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

    • hostName — FQDN изменяемого хоста.

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

    • replicationSource — источник репликации для хоста для ручного управления потоками репликации. В параметре укажите FQDN хоста, который будет источником репликации.

    • priority — приоритет хоста среди всех хостов.

    • configSpec.postgresqlConfig_<версия_PostgreSQL> — набор настроек PostgreSQL. Укажите каждую настройку на отдельной строке через запятую.

      Список версий PostgreSQL, доступных для параметра, см. в описании метода. Описание и возможные значения настроек см. в разделе Настройки PostgreSQL.

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

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

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

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

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

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

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

    Важно

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

    Формат перечисления настроек
    "update_mask": {
        "paths": [
            "<настройка_1>",
            "<настройка_2>",
            ...
            "<настройка_N>"
        ]
    }
    
    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "update_host_specs": [
              {
                "update_mask": {
                    "paths": [
                      "assign_public_ip",
                      "replication_source",
                      "priority",
                      "config_spec.postgresql_config_16"
                    ]
                },
                "host_name": "<FQDN_хоста>",
                "assign_public_ip": <публичный_адрес_хоста:_true_или_false>,
                "replication_source": "<FQDN_хоста>",
                "priority": "<приоритет_хоста>",
                "config_spec": {
                  "postgresql_config_<версия_PostgreSQL>": {
                    <настройки_PostgreSQL>
                  }
                }
              }
            ]
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.UpdateHosts
    

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

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

    • host_name — FQDN изменяемого хоста.

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

    • replication_source — источник репликации для хоста для ручного управления потоками репликации. В параметре укажите FQDN хоста, который будет источником репликации.

    • priority — приоритет хоста среди всех хостов.

    • config_spec.postgresql_config_<версия_PostgreSQL> — набор настроек PostgreSQL. Укажите каждую настройку на отдельной строке через запятую.

      Список версий PostgreSQL, доступных для параметра, см. в описании метода. Описание и возможные значения настроек см. в разделе Настройки PostgreSQL.

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

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

Важно

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

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

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

Если хост является мастером в момент удаления, Managed Service for PostgreSQL автоматически назначит мастером следующую по приоритету реплику.

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

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

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

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

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

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

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

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

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

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

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

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Удалите из описания кластера Managed Service for PostgreSQL блок host, соответствующий удаляемому хосту.

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

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

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

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

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

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

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

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>/hosts:batchDelete' \
      --data '{
                "hostNames": [
                  "<FQDN_хоста>"
                ]
              }'
    

    Где hostNames — массив строк, каждая из которых содержит FQDN удаляемого хоста.

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

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

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

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

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

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

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

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "host_names": [
              "<FQDN_хоста>"
            ]
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.DeleteHosts
    

    Где host_names — массив строк, каждая из которых содержит FQDN удаляемого хоста.

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

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

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

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