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

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

  • Перед обновлением версии
  • Обновить кластер
  • Обновить кластер до версии PostgreSQL 17
  • Обновить кластер до версии PostgreSQL 16 или ниже
  • Примеры
  1. Пошаговые инструкции
  2. Кластеры
  3. Обновление версии PostgreSQL

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

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 15 июля 2025 г.
  • Перед обновлением версии
  • Обновить кластер
    • Обновить кластер до версии PostgreSQL 17
    • Обновить кластер до версии PostgreSQL 16 или ниже
  • Примеры

Вы можете обновить кластер Managed Service for PostgreSQL до версии 16 или ниже.

Примечание

Обновление обычной версии кластера до версий для «1С:Предприятие» (например, с версии 14 на версию 14-1с) недоступно.

Обновление доступно только на следующую версию относительно текущей, например, с версии 14 на 15. Обновление до более поздних версий производится поэтапно. Например, обновление версии PostgreSQL с 13 до 15 выполняется в такой последовательности: 13 → 14 → 15.

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

В многохостовых кластерах обновление проводится в следующем порядке:

  1. Мастер выводится на обновление. В это время реплики работают в режиме чтения, переключения ролей не происходит. После обновления мастер не возвращается в работу, пока не обновятся все хосты-реплики, и временно недоступен даже для чтения.

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

    Кластер из двух хостов на время обновления реплики будет недоступным. В кластере из трех и более хостов всегда будет доступна для чтения хотя бы одна реплика.

  3. Мастер возвращается в работу.

Об обновлениях в рамках одной версии и обслуживании хостов см. в разделе Техническое обслуживание.

Перед обновлением версииПеред обновлением версии

Убедитесь, что это не нарушит работу ваших приложений:

  1. Посмотрите в истории изменений PostgreSQL, как обновления могут повлиять на работу ваших приложений или установленных расширений.
  2. Попробуйте обновить версию на тестовом кластере. Его можно развернуть из резервной копии основного кластера.
  3. Создайте резервную копию основного кластера непосредственно перед обновлением версии.

Обновить кластерОбновить кластер

Внимание

  • После обновления СУБД вернуть кластер к предыдущей версии невозможно.
  • Успешность обновления версии PostgreSQL зависит от многих факторов, в том числе от настроек кластера и данных, хранящихся в базах. Рекомендуется сначала обновить тестовый кластер, который использует те же данные и настройки.

Обновить кластер до версии PostgreSQL 17Обновить кластер до версии PostgreSQL 17

  1. Создайте кластер с версией PostgreSQL 17.
  2. При помощи Data Transfer перенесите в него данные из кластера, который хотите обновить.

Обновить кластер до версии PostgreSQL 16 или нижеОбновить кластер до версии PostgreSQL 16 или ниже

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

Чтобы обновить кластер до версии PostgreSQL 15 или ниже:

  1. Получите список ваших кластеров PostgreSQL командой:

    yc managed-postgresql cluster list
    
  2. Получите информацию о нужном кластере и проверьте версию PostgreSQL, указанную в свойстве config.version:

    yc managed-postgresql cluster get <имя_или_идентификатор_кластера>
    
  3. Запустите обновление PostgreSQL:

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

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

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

  2. Добавьте в блок cluster_config нужного кластера Managed Service for PostgreSQL поле version или измените его значение, если оно уже существует:

    resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" {
      ...
      cluster_config {
        version = "<версия_PostgreSQL>"
      }
    }
    
  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.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>' \
      --data '{
                "updateMask": "configSpec.version",
                "configSpec": {
                  "version": "<версия_PostgreSQL>"
                }
              }'
    

    Где:

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

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

    • configSpec.version — новая версия 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.version"
              ]
            },
            "config_spec": {
              "version": "<версия_PostgreSQL>"
            }
          }' \
      mdb.api.yandexcloud.kz:443 \
      yandex.cloud.mdb.postgresql.v1.ClusterService.Update
    

    Где:

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

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

    • config_spec.version — новая версия PostgreSQL.

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

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

После запуска обновления кластер переходит в статус UPDATING. Дождитесь окончания операции и проверьте версию кластера.

Время обновления кластера зависит от размера базы данных.

Совет

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

ПримерыПримеры

Допустим, нужно обновить кластер с версии 14 до версии 15.

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

    yc managed-postgresql cluster list
    
    +----------------------+---------------+---------------------+--------+---------+
    |          ID          |     NAME      |     CREATED AT      | HEALTH | STATUS  |
    +----------------------+---------------+---------------------+--------+---------+
    | c9q8p8j2gaih******** |   postgre406  | 2021-10-23 12:44:17 | ALIVE  | RUNNING |
    +----------------------+---------------+---------------------+--------+---------+
    
  2. Чтобы получить информацию о кластере с именем postgre406, выполните команду:

    yc managed-postgresql cluster get postgre406
    
      id: c9q8p8j2gaih********
      ...
      config:
        version: "14"
        ...
    
  3. Для обновления кластера postgre406 до версии 15, выполните команду:

    yc managed-postgresql cluster update postgre406 --postgresql-version 15
    

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

Предыдущая
Техническое обслуживание
Следующая
Удаление кластера
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»