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

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

  • Изменить класс хостов
  • Изменить настройки PostgreSQL
  • Изменить дополнительные настройки кластера
  • Connection Manager
  • Вручную переключить хост-мастер
  • Переместить кластер
  • Изменить группы безопасности
  1. Пошаговые инструкции
  2. Кластеры
  3. Изменение настроек кластера

Изменение настроек кластера PostgreSQL

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 24 апреля 2025 г.
  • Изменить класс хостов
  • Изменить настройки PostgreSQL
  • Изменить дополнительные настройки кластера
    • Connection Manager
  • Вручную переключить хост-мастер
  • Переместить кластер
  • Изменить группы безопасности

После создания кластера вы можете:

  • Изменить класс хостов.

  • Настроить серверы согласно документации PostgreSQL.

  • Изменить дополнительные настройки кластера.

  • Вручную переключить хост-мастер.

  • Переместить кластер в другой каталог.

  • Изменить группы безопасности кластера.

Примечание

Любые изменения возможны только на запущенном кластере.

Подробнее о других изменениях кластера:

  • Обновление версии PostgreSQL.

  • Управление дисковым пространством.

  • Миграция хостов кластера в другую зону доступности.

Изменить класс хостовИзменить класс хостов

Примечание

Некоторые настройки PostgreSQL зависят от выбранного класса хостов.

При смене класса хостов:

  • Кластер из одного хоста будет недоступен несколько минут, соединения с БД будут прерваны.
  • В кластере из нескольких хостов сменится мастер. Каждый хост по очереди будет остановлен и обновлен, остановленный хост будет недоступен несколько минут.
  • Подключение по особому FQDN не гарантирует стабильность соединения с БД: пользовательские сессии могут быть прерваны.

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

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

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

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

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

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

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

    yc managed-postgresql resource-preset list
    
    +-----------+--------------------------------+-------+----------+
    |    ID     |            ZONE IDS            | CORES |  MEMORY  |
    +-----------+--------------------------------+-------+----------+
    | s1.micro  | ru-central1-a, ru-central1-b,  |     2 | 8.0 GB   |
    |           | ru-central1-d                  |       |          |
    | ...                                                           |
    +-----------+--------------------------------+-------+----------+
    
  3. Укажите нужный класс в команде изменения кластера:

    yc managed-postgresql cluster update <имя_или_идентификатор_кластера> \
        --resource-preset <идентификатор_класса_хостов>
    

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

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

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

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

  2. Измените в описании кластера Managed Service for PostgreSQL значение атрибута resource_preset_id в блоке config.resources:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      config {
        resources {
          resource_preset_id = "<класс_хоста>"
          ...
        }
      }
    }
    
  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.Update и выполните запрос, например, с помощью cURL:

    Важно

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

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

    Где:

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

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

    • configSpec.resources.resourcePresetId — новый класс хостов.

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

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

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

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

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

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

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

    Важно

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

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

    Где:

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

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

    • config_spec.resources.resource_preset_id — новый класс хостов.

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

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

Изменить настройки PostgreSQLИзменить настройки PostgreSQL

Вы можете изменить настройки СУБД для хостов вашего кластера.

Важно

  • Вы не можете менять настройки PostgreSQL с помощью команд SQL.
  • Некоторые настройки PostgreSQL зависят от выбранного класса хостов или размера хранилища.
Консоль управления
CLI
Terraform
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
  2. Выберите кластер и нажмите кнопку Редактировать на панели сверху.
  3. Измените настройки PostgreSQL, нажав кнопку Настроить в блоке Настройки СУБД.
  4. Нажмите кнопку Сохранить.
  5. Нажмите кнопку Сохранить изменения.

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

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

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

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

    yc managed-postgresql cluster get <имя_или_идентификатор_кластера> --full
    
  2. Посмотрите описание команды CLI для изменения конфигурации кластера:

    yc managed-postgresql cluster update-config --help
    
  3. Установите нужные значения параметров:

    Все поддерживаемые параметры перечислены в формате запроса для метода update, в поле postgresqlConfig_<версия_PostgreSQL>. Чтобы указать имя параметра в вызове CLI, преобразуйте его имя из вида lowerCamelCase в snake_case, например, параметр maxPreparedTransactions из запроса к API преобразуется в max_prepared_transactions для команды CLI:

    yc managed-postgresql cluster update-config <имя_или_идентификатор_кластера> \
       --set <имя_параметра_1>=<значение_1>,<имя_параметра_2>=<значение_2>,...
    

    Managed Service for PostgreSQL запустит операцию по изменению настроек кластера.

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

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

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

  2. Измените в описании кластера Managed Service for PostgreSQL значения параметров в блоке config.postgresql_config. Если такого блока нет — создайте его.

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      config {
        ...
        postgresql_config = {
          max_connections                   = <максимальное_количество_соединений>
          enable_parallel_hash              = <true_или_false>
          vacuum_cleanup_index_scale_factor = <число_от_0_до_1>
          ...
        }
      }
    }
    
  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.Update и выполните запрос, например, с помощью cURL:

    Важно

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

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>' \
      --data '{
                "updateMask": "configSpec.postgresqlConfig_<версия_PostgreSQL>.<настройка_1>,...,configSpec.postgresqlConfig_<версия_PostgreSQL>.<настройка_N>",
                "configSpec": {
                  "postgresqlConfig_<версия_PostgreSQL>": {
                    "<настройка_1>": "<значение_1>",
                    "<настройка_2>": "<значение_2>",
                    ...
                    "<настройка_N>": "<значение_N>"
                  }
                }
              }'
    

    Где:

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

      В данном случае перечислите все изменяемые настройки PostgreSQL.

    • configSpec.postgresqlConfig_<версия_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.Update и выполните запрос, например, с помощью gRPCurl:

    Важно

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

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

    Где:

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

      В данном случае перечислите все изменяемые настройки PostgreSQL.

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

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

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

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

Изменить дополнительные настройки кластераИзменить дополнительные настройки кластера

Важно

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

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

  2. Выберите кластер и нажмите кнопку Редактировать на панели сверху.

  3. Измените дополнительные настройки кластера:

    • Начало резервного копирования (UTC) — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию — 22:00 - 23:00 UTC.

    • Срок хранения автоматических резервных копий, дней — время, в течение которого нужно хранить созданные автоматически резервные копии. Если для такой копии истекает срок хранения, то она удаляется. Значение по умолчанию — 7 дней. Подробнее см. в разделе Резервные копии.

      Изменение срока хранения затрагивает как новые автоматические резервные копии, так и уже существующие. Например, изначальный срок хранения был 7 дней. Оставшееся время жизни отдельной автоматической резервной копии при таком сроке — 1 день. При увеличении срока хранения до 9 дней оставшееся время жизни этой резервной копии будет уже 3 дня.

      Автоматические резервные копии кластера хранятся заданное количество дней, а созданные вручную — бессрочно. После удаления кластера все копии хранятся 7 дней.

    • Окно обслуживания — настройки времени технического обслуживания:

      • Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
      • Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.

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

    • Доступ из DataLens — опция разрешает анализировать данные из кластера в сервисе Yandex DataLens.

    • Доступ из WebSQL — опция разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL.

    • Доступ из Yandex Query — опция разрешает выполнять YQL-запросы к базам данных кластера из сервиса Yandex Query.

    • Доступ из Serverless — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса Yandex Cloud Functions. Подробнее о настройке доступа см. в документации Cloud Functions.

    • Сбор статистики — опция разрешает использовать в кластере инструмент Диагностика производительности. Если опция включена, настройте также Интервал сбора сессий и Интервал сбора запросов при помощи ползунков. Единицы измерения обеих настроек — секунды.

    • Автоматическое переключение мастера — если эта опция включена, при смене мастера источник репликации для всех хостов-реплик автоматически переключится на новый хост-мастер. Подробнее см. в разделе Репликация.

      При удалении хоста-мастера новый мастер будет выбран автоматически независимо от значения этой опции.

      Внимание

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

    • Режим работы менеджера подключений — выберите один из режимов работы менеджера подключений.

    • Защита от удаления — защита от удаления кластера, его баз данных и пользователей.

      По умолчанию при создании пользователей и БД значение параметра наследуется от кластера. Значение также можно задать вручную, подробнее см. в разделах Управление пользователями и Управление БД.

      Если параметр изменен на работающем кластере, новое значение унаследуют только пользователи и БД с защитой Как у кластера.

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

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

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

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

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

    yc managed-postgresql cluster update --help
    
  2. Выполните команду, передав список настроек, которые хотите изменить:

    yc managed-postgresql cluster update <имя_или_идентификатор_кластера> \
        --backup-window-start <время_начала_резервного_копирования> \
        --backup-retain-period-days=<срок_хранения_автоматических_резервных_копий_в_днях> \
        --datalens-access=<true_или_false> \
        --maintenance-window type=<тип_технического_обслуживания>,`
                            `day=<день_недели>,`
                            `hour=<час_дня> \
        --websql-access=<true_или_false> \
        --deletion-protection \
        --connection-pooling-mode=<режим_работы_менеджера_подключений> \
        --serverless-access=<true_или_false> \
        --yandexquery-access=<доступ_через_Query> \
        --performance-diagnostics enabled=<true_или_false>,`
                                 `sessions-sampling-interval=<интервал_сбора_сессий>,`
                                 `statements-sampling-interval=<интервал_сбора_запросов>
    

Вы можете изменить следующие настройки:

  • --backup-window-start — время начала резервного копирования кластера, задается по UTC в формате HH:MM:SS. Если время не задано, резервное копирование начнется в 22:00 UTC.
  • --backup-retain-period-days – срок хранения автоматических резервных копий (в днях).

  • --datalens-access — разрешает доступ из DataLens. Значение по умолчанию — false. Подробнее о настройке подключения см. в разделе Подключение к кластеру из DataLens.

  • --maintenance-window — настройки времени технического обслуживания (в т. ч. для выключенных кластеров), где type — тип технического обслуживания:

    • anytime (по умолчанию) — в любое время.
    • weekly — по расписанию. При задании этого значения укажите день недели и час дня:
      • day — день недели в формате DDD: MON, TUE, WED, THU, FRI, SAT или SUN.
      • hour — час дня по UTC в формате HH: от 1 до 24.
  • --websql-access — разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL. Значение по умолчанию — false.

  • --serverless-access — разрешает доступ к кластеру из сервиса Yandex Cloud Functions. Значение по умолчанию — false. Подробнее о настройке доступа см. в документации Cloud Functions.

  • --yandexquery-access — разрешает доступ к кластеру из сервиса Yandex Query. Функциональность находится на стадии Preview и предоставляется по запросу.

  • --autofailover – управляет настройкой автоматической смены мастера. Подробнее см. в разделе Репликация. Значение по умолчанию — true.

  • --connection-pooling-mode — указывает режим работы менеджера подключений: SESSION, TRANSACTION или STATEMENT.

  • deletion-protection — защита от удаления кластера, его баз данных и пользователей.

    По умолчанию при создании пользователей и БД значение параметра наследуется от кластера. Значение также можно задать вручную, подробнее см. в разделах Управление пользователями и Управление БД.

    Если параметр изменен на работающем кластере, новое значение унаследуют только пользователи и БД с защитой Как у кластера.

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

  • --performance-diagnostics — настройки сбора статистики:

    • enabled — значение true активирует сбор статистики. Значение по умолчанию — false.
    • sessions-sampling-interval — интервал сбора сессий, в секундах. Допустимые значения — от 1 до 86400.
    • statements-sampling-interval — интервал сбора запросов, в секундах. Допустимые значения — от 60 до 86400.

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

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

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

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

  2. Чтобы изменить время начала резервного копирования, добавьте к описанию кластера Managed Service for PostgreSQL блок config.backup_window_start.

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      config {
        backup_window_start {
          hours   = <час_начала_резервного_копирования>
          minutes = <минута_начала_резервного_копирования>
        }
        ...
      }
    }
    
  3. Чтобы разрешить доступ из Yandex DataLens и выполнение SQL-запросов из консоли управления с помощью Yandex WebSQL, измените значения соответствующих полей в блоке config.access:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      config {
        access {
          data_lens = <доступ_из_DataLens>
          web_sql   = <выполнение_SQL-запросов_из_консоли_управления>
          ...
      }
      ...
    }
    

    Где:

    • data_lens — доступ из DataLens: true или false.
    • web_sql — выполнение SQL-запросов из консоли управления с помощью Yandex WebSQL: true или false.
  4. Чтобы изменить режим работы менеджера подключений, добавьте к описанию кластера Managed Service for PostgreSQL блок config.pooler_config:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      config {
        pooler_config {
          pool_discard = <параметр_Odyssey>
          pooling_mode = "<режим_работы>"
        }
        ...
      }
    }
    

    Где:

    • pool_discard — параметр Odyssey pool_discard: true или false.
    • pooling_mode — режим работы: SESSION, TRANSACTION или STATEMENT.
  5. Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок maintenance_window:

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

    Где:

    • type — тип технического обслуживания. Принимает значения:
      • ANYTIME — в любое время.
      • WEEKLY — по расписанию.
    • day — день недели для типа WEEKLY в формате DDD. Например, MON.
    • hour — час дня по UTC для типа WEEKLY в формате HH. Например, 21.
  6. Чтобы настроить сбор статистики, добавьте в блок config блок performance_diagnostics:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      config {
        ...
        performance_diagnostics {
          enabled                      = <активация_сбора_статистики>
          sessions_sampling_interval   = <интервал_сбора_сессий>
          statements_sampling_interval = <интервала_сбора_запросов>
        }
        ...
      }
      ...
    }
    

    Где:

    • enabled — активация сбора статистики: true или false.
    • sessions_sampling_interval — интервал сбора сессий от 1 до 86400 секунд.
    • statements_sampling_interval — интервала сбора запросов от 60 до 86400 секунд.
  7. Чтобы включить защиту кластера, его баз данных и пользователей от непреднамеренного удаления, добавьте к описанию кластера поле deletion_protection со значением true:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      deletion_protection = <защита_от_удаления>
    }
    

    Где deletion_protection — защита от удаления кластера, его баз данных и пользователей: true или false.

    По умолчанию при создании пользователей и БД значение параметра наследуется от кластера. Значение также можно задать вручную, подробнее см. в разделах Управление пользователями и Управление БД.

    Если параметр изменен на работающем кластере, новое значение унаследуют только пользователи и БД с защитой Как у кластера.

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

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

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

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

      terraform validate
      

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

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

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

    Важно

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

    {
      "updateMask": "configSpec.poolerConfig,configSpec.backupWindowStart,configSpec.backupRetainPeriodDays,configSpec.access,configSpec.performanceDiagnostics.sessionsSamplingInterval,configSpec.performanceDiagnostics.statementsSamplingInterval,maintenanceWindow,deletionProtection",
      "configSpec": {
        "poolerConfig": {
          "poolingMode": "<режим_управления_соединениями>",
          "poolDiscard": <сброс_состояния_клиентов_после_каждой_транзакции:_true_или_false>
        },
        "backupWindowStart": {
          "hours": "<часы>",
          "minutes": "<минуты>",
          "seconds": "<секунды>",
          "nanos": "<наносекунды>"
        },
        "backupRetainPeriodDays": "<количество_дней>",
        "access": {
          "dataLens": <доступ_к_DataLens:_true_или_false>,
          "webSql": <доступ_к_WebSQL:_true_или_false>,
          "serverless": <доступ_к_Cloud_Functions:_true_или_false>,
          "dataTransfer": <доступ_к_Data_Transfer:_true_или_false>,
          "yandexQuery": <доступ_к_Query:_true_или_false>
        },
        "performanceDiagnostics": {
          "enabled": <активация_сбора_статистики:_true_или_false>,
          "sessionsSamplingInterval": "<интервал_сбора_сессий>",
          "statementsSamplingInterval": "<интервал_сбора_запросов>"
        }
      },
      "maintenanceWindow": {
        "weeklyMaintenanceWindow": {
          "day": "<день_недели>",
          "hour": "<час>"
        }
      },
      "deletionProtection": <защита_от_удаления:_true_или_false>
    }
    

    Где:

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

    • configSpec — настройки кластера:

      • poolerConfig — настройки менеджера подключений:

        • poolingMode — режим работы менеджера подключений. Возможные значения: SESSION, TRANSACTION и STATEMENT. Подробнее о каждом режиме читайте в разделе Управление соединениями PostgreSQL.
        • poolDiscard — должны ли клиенты терять свое состояние после каждой транзакции. Соответствует параметру server_reset_query_always для менеджера подключений PgBouncer.
      • backupWindowStart — настройки окна резервного копирования.

        В параметре укажите время, когда начинать резервное копирование. Возможные значения параметров:

        • hours — от 0 до 23 часов;
        • minutes — от 0 до 59 минут;
        • seconds — от 0 до 59 секунд;
        • nanos — от 0 до 999999999 наносекунд.
      • backupRetainPeriodDays — сколько дней хранить резервную копию кластера. Возможные значения: от 7 до 60 дней.

      • access — настройки доступа кластера к следующим сервисам Yandex Cloud:

        • dataLens — Yandex DataLens;
        • webSql — Yandex WebSQL;
        • serverless — Yandex Cloud Functions;
        • dataTransfer — Yandex Data Transfer;
        • yandexQuery — Yandex Query.
      • performanceDiagnostics — настройки для сбора статистики:

        • enabled — активация сбора статистики.
        • sessionsSamplingInterval — интервал сбора сессий. Возможные значения: от 1 до 86400 секунд.
        • statementsSamplingInterval — интервал сбора запросов. Возможные значения: от 60 до 86400 секунд.
    • maintenanceWindow — настройки времени технического обслуживания (в т. ч. для выключенных кластеров). В maintenanceWindow передайте один из двух параметров:

      • anytime — техническое обслуживание происходит в любое время.

      • weeklyMaintenanceWindow — техническое обслуживание происходит раз в неделю, в указанное время:

        • day — день недели в формате DDD;
        • hour — час в формате HH. Возможные значения: от 1 до 24 часов.
    • deletionProtection — защита от удаления кластера, его баз данных и пользователей.

      По умолчанию при создании пользователей и БД значение параметра наследуется от кластера. Значение также можно задать вручную, подробнее см. в разделах Управление пользователями и Управление БД.

      Если параметр изменен на работающем кластере, новое значение унаследуют только пользователи и БД с защитой Как у кластера.

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

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

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

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>' \
      --data "@body.json"
    
  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

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

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

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

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

    Важно

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

    Формат перечисления настроек
    "update_mask": {
        "paths": [
            "<настройка_1>",
            "<настройка_2>",
            ...
            "<настройка_N>"
        ]
    }
    
    {
      "cluster_id": "<идентификатор_кластера>",
      "update_mask": {
        "paths": [
          "config_spec.pooler_config",
          "config_spec.backup_window_start",
          "config_spec.backup_retain_period_days",
          "config_spec.access",
          "config_spec.performance_diagnostics.sessions_sampling_interval",
          "config_spec.performance_diagnostics.statements_sampling_interval",
          "maintenance_window",
          "deletion_protection"
        ]
      },
      "config_spec": {
        "pooler_config": {
          "pooling_mode": "<режим_управления_соединениями>",
          "pool_discard": <сброс_состояния_клиентов_после_каждой_транзакции:_true_или_false>
        },
        "backup_window_start": {
          "hours": "<часы>",
          "minutes": "<минуты>",
          "seconds": "<секунды>",
          "nanos": "<наносекунды>"
        },
        "backup_retain_period_days": "<количество_дней>",
        "access": {
          "data_lens": <доступ_к_DataLens:_true_или_false>,
          "web_sql": <доступ_к_WebSQL:_true_или_false>,
          "serverless": <доступ_к_Cloud_Functions:_true_или_false>,
          "data_transfer": <доступ_к_Data_Transfer:_true_или_false>,
          "yandex_query": <доступ_к_Query:_true_или_false>
        },
        "performance_diagnostics": {
          "enabled": <активация_сбора_статистики:_true_или_false>,
          "sessions_sampling_interval": "<интервал_сбора_сессий>",
          "statements_sampling_interval": "<интервал_сбора_запросов>"
        }
      },
      "maintenance_window": {
        "weekly_maintenance_window": {
          "day": "<день_недели>",
          "hour": "<час>"
        }
      },
      "deletion_protection": <защита_от_удаления:_true_или_false>
    }
    

    Где:

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

    • config_spec — настройки кластера:

      • pooler_config — настройки менеджера подключений:

        • pooling_mode — режим работы менеджера подключений. Возможные значения: SESSION, TRANSACTION и STATEMENT. Подробнее о каждом режиме читайте в разделе Управление соединениями PostgreSQL.
        • pool_discard — должны ли клиенты терять свое состояние после каждой транзакции. Соответствует параметру server_reset_query_always для менеджера подключений PgBouncer.
      • backup_window_start — настройки окна резервного копирования.

        В параметре укажите время, когда начинать резервное копирование. Возможные значения параметров:

        • hours — от 0 до 23 часов;
        • minutes — от 0 до 59 минут;
        • seconds — от 0 до 59 секунд;
        • nanos — от 0 до 999999999 наносекунд.
      • backup_retain_period_days — сколько дней хранить резервную копию кластера. Возможные значения: от 7 до 60 дней.

      • access — настройки доступа кластера к следующим сервисам Yandex Cloud:

        • data_lens — Yandex DataLens;
        • web_sql — Yandex WebSQL;
        • serverless — Yandex Cloud Functions;
        • data_transfer — Yandex Data Transfer;
        • yandex_query — Yandex Query.
      • performance_diagnostics — настройки для сбора статистики:

        • enabled — активация сбора статистики.
        • sessions_sampling_interval — интервал сбора сессий. Возможные значения: от 1 до 86400 секунд.
        • statements_sampling_interval — интервал сбора запросов. Возможные значения: от 60 до 86400 секунд.
    • maintenance_window — настройки времени технического обслуживания (в т. ч. для выключенных кластеров). В maintenance_window передайте один из двух параметров:

      • anytime — техническое обслуживание происходит в любое время.

      • weekly_maintenance_window — техническое обслуживание происходит раз в неделю, в указанное время:

        • day — день недели в формате DDD;
        • hour — час в формате HH. Возможные значения: от 1 до 24 часов.
    • deletion_protection — защита от удаления кластера, его баз данных и пользователей.

      По умолчанию при создании пользователей и БД значение параметра наследуется от кластера. Значение также можно задать вручную, подробнее см. в разделах Управление пользователями и Управление БД.

      Если параметр изменен на работающем кластере, новое значение унаследуют только пользователи и БД с защитой Как у кластера.

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

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

  4. Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью 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 @ \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.Update \
      < body.json
    
  5. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Connection ManagerConnection Manager

Если в кластере не включена интеграция с сервисом Connection Manager, включите опцию Использовать Connection Manager. Она доступна только в консоли управления.

Для каждого пользователя БД будут созданы:

  • Подключение Connection Manager с информацией о соединении с БД.

  • Секрет Yandex Lockbox, в котором хранится пароль пользователя. Хранение паролей в сервисе Yandex Lockbox обеспечивает их безопасность.

Подключение и секрет создаются для каждого нового пользователя БД. Чтобы увидеть все подключения, на странице кластера выберите вкладку Подключения.

Для просмотра информации о подключении требуется роль connection-manager.viewer. Вы можете настраивать доступ к подключениям в Connection Manager.

Примечание

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

Вручную переключить хост-мастерВручную переключить хост-мастер

В отказоустойчивом кластере Managed Service for PostgreSQL из нескольких хостов вы можете переключить роль мастера с текущего хоста-мастера на одну из реплик. После этой операции текущий хост-мастер станет хостом-репликой для нового мастера.

Особенности переключения мастера в Managed Service for PostgreSQL:

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

Подробнее см. в разделе Репликация.

Чтобы переключить мастер:

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

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

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

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

yc managed-postgresql cluster start-failover <имя_или_идентификатор_кластера> \
    --host <имя_хоста-реплики>

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

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

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

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

  2. Укажите имя хоста-реплики, на которую нужно переключиться, в параметре host_master_name.

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      host_master_name = "<имя_хоста-реплики>"
    }
    

    Где host_master_name — имя хоста-реплики: атрибут name соответствующего блока host.

  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.StartFailover и выполните запрос, например, с помощью 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/<идентификатор_кластера>:startFailover' \
      --data '{
                "hostName": "<FQDN_хоста>"
              }'
    

    Где hostName — 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.StartFailover и выполните запрос, например, с помощью 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_name": "<FQDN_хоста>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.StartFailover
    

    Где host_name — FQDN реплики, которая становится мастером.

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

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

Переместить кластерПереместить кластер

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

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

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

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

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

    yc managed-postgresql cluster move --help
    
  2. Укажите каталог назначения в команде перемещения кластера:

    yc managed-postgresql cluster move <идентификатор_кластера> \
       --destination-folder-name=<имя_каталога_назначения>
    

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

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

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

  2. Измените или добавьте в описании кластера Managed Service for PostgreSQL значение параметра folder_id:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      folder_id = "<идентификатор_каталога_назначения>"
    }
    
  3. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

Провайдер 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.Move и выполните запрос, например, с помощью 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/<идентификатор_кластера>:move' \
      --data '{
                "destinationFolderId": "<идентификатор_каталога>"
              }'
    

    Где destinationFolderId — идентификатор каталога, куда перемещается кластер. Идентификатор можно получить со списком каталогов в облаке.

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

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

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

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

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

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

  3. Воспользуйтесь вызовом ClusterService.Move и выполните запрос, например, с помощью 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": "<идентификатор_кластера>",
            "destination_folder_id": "<идентификатор_каталога>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.Move
    

    Где destination_folder_id — идентификатор каталога, куда перемещается кластер. Идентификатор можно получить со списком каталогов в облаке.

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

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

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

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

Изменить группы безопасностиИзменить группы безопасности

Консоль управления
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.

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

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

    yc managed-postgresql cluster update --help
    
  2. Укажите нужные группы безопасности в команде изменения кластера:

    yc managed-postgresql cluster update <имя_или_идентификатор_кластера> \
        --security-group-ids <список_идентификаторов_групп_безопасности>
    
  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

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

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

  2. Измените значение параметра security_group_ids в описании кластера:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      security_group_ids = [ <список_идентификаторов_групп_безопасности> ]
    }
    
  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.Update и выполните запрос, например, с помощью cURL:

    Важно

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

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<идентификатор_кластера>' \
      --data '{
                "updateMask": "securityGroupIds",
                "securityGroupIds": [
                  "<идентификатор_группы_безопасности_1>",
                  "<идентификатор_группы_безопасности_2>",
                  ...
                  "<идентификатор_группы_безопасности_N>"
                ]
              }'
    

    Где:

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

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

    • securityGroupIds — новый список групп безопасности, представленный в виде элементов массива.

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

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

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

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

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

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

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

    Важно

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

    Формат перечисления настроек
    "update_mask": {
        "paths": [
            "<настройка_1>",
            "<настройка_2>",
            ...
            "<настройка_N>"
        ]
    }
    
    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "update_mask": {
              "paths": [
                "security_group_ids"
              ]
            },
            "security_group_ids": [
              "<идентификатор_группы_безопасности_1>",
              "<идентификатор_группы_безопасности_2>",
              ...
              "<идентификатор_группы_безопасности_N>"
            ]
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.Update
    

    Где:

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

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

    • security_group_ids — новый список групп безопасности, представленный в виде элементов массива.

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

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

Важно

Может потребоваться дополнительная настройка групп безопасности для подключения к кластеру.

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

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