Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Data Transfer
  • Доступные трансферы
  • Начало работы
    • Все руководства
      • Кластер PostgreSQL
      • Миграция кластера Managed Service for PostgreSQL на другую версию
      • Данные в MySQL®
      • Сторонний кластер MySQL®
      • Кластер MongoDB
      • Миграция кластера Yandex StoreDoc (Managed Service for MongoDB) с версии 4.4 на 6.0
      • Кластер ClickHouse®
      • Кластер Greenplum®
      • Миграция из AWS RDS for PostgreSQL
      • Кластер OpenSearch
  • Решение проблем
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Обучающие курсы

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

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

Миграция кластера Yandex Managed Service for PostgreSQL на другую версию c помощью Data Transfer

Статья создана
Yandex Cloud
Обновлена 16 февраля 2026 г.
  • Необходимые платные ресурсы
  • Подготовьте кластер-источник
  • Подготовьте кластер-приемник
  • Подготовьте и активируйте трансферы
  • Переключитесь на работу с новым кластером
  • Проверьте перенос данных
  • Удалите созданные ресурсы

Важно

Этот документ не применим для пользователей Yandex Cloud в регионе Казахстан. См. полный перечень поддерживаемых эндпоинтов в Data Transfer.

Вы можете перенести продуктивную нагруженную базу данных, развернутую в кластере Managed Service for PostgreSQL, в кластер со старшей версией. В этом руководстве рассматривается пример переноса с версии 13 сразу на версию 17, без последовательного переноса между несколькими версиями (13 → 14 → 15 → 16 → 17).

Чтобы перенести данные:

  1. Подготовьте кластер-источник.
  2. Подготовьте кластер-приемник.
  3. Подготовьте и активируйте трансферы.
  4. Переключитесь на работу с новым кластером.
  5. Проверьте перенос данных.

Если созданные ресурсы вам больше не нужны, удалите их.

Необходимые платные ресурсыНеобходимые платные ресурсы

  • Кластер PostgreSQL: выделенные хостам вычислительные ресурсы, объем хранилища и резервных копий (см. тарифы PostgreSQL).
  • Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
  • Каждый трансфер: использование вычислительных ресурсов и количество переданных строк данных (см. тарифы Data Transfer).

Подготовьте кластер-источникПодготовьте кластер-источник

  1. Подготовьте базу-источник к миграции в соответствии с рекомендациями.

  2. Оцените нагрузку на базу данных. Если она превышает 10 000 операций на запись в секунду, запланируйте несколько трансферов:

    1. Определите список особо нагруженных таблиц.
    2. Распределите таблицы между несколькими трансферами.

Подготовьте кластер-приемникПодготовьте кластер-приемник

  1. Создайте кластер-приемник Managed Service for PostgreSQL:

    Вручную
    С помощью Terraform

    Создайте кластер-приемник Managed Service for PostgreSQL с конфигурацией, идентичной кластеру-источнику, и со следующими настройками:

    • Версия кластера — 17.
    • Имя базы данных — db1.
    • Имя пользователя — user1.

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

    1. Если у вас еще нет Terraform, установите его.

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

    3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

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

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

      resource "yandex_mdb_postgresql_cluster" "old" { }
      
    6. Запишите идентификатор кластера PostgreSQL версии 13 в переменную окружения:

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

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

    7. Импортируйте настройки кластера PostgreSQL версии 13 в конфигурацию Terraform:

      terraform import yandex_mdb_postgresql_cluster.old ${POSTGRESQL_CLUSTER_ID}
      
    8. Получите импортированную конфигурацию:

      terraform show
      
    9. Скопируйте ее из терминала и вставьте в файл с расширением .tf.

    10. Расположите файл в новой директории imported-cluster.

    11. Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:

      • Укажите новое имя кластера в строке resource и параметре name.
      • В блоке config укажите в параметре version версию 17.
      • Удалите параметры created_at, health, id и status.
      • В блоках host удалите параметры fqdn, role и priority.
      • Если в блоке disk_size_autoscaling указано значение параметра disk_size_limit = 0, удалите этот блок.
      • Если в блоке maintenance_window указано значение параметра type = "ANYTIME", удалите параметр hour.
      • (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия кластера.
    12. Добавьте в файл ресурс для создания пользователя user1:

      resource "yandex_mdb_postgresql_user" "user1" {
        cluster_id = yandex_mdb_postgresql_cluster.<имя_кластера>.id
        name       = "user1"
        password   = "<пароль_пользователя>"
      }
      

      Где <имя_кластера> — новое имя кластера, указанное в ресурсе yandex_mdb_postgresql_cluster.

    13. Добавьте в файл ресурс для создания базы данных:

      resource "yandex_mdb_postgresql_database" "db1" {
        cluster_id = yandex_mdb_postgresql_cluster.<имя_кластера>.id
        name       = "db1"
        owner      = yandex_mdb_postgresql_user.user1.name
        depends_on = [yandex_mdb_postgresql_user.user1]
      }
      

      Где <имя_кластера> — новое имя кластера, указанное в ресурсе yandex_mdb_postgresql_cluster.

    14. В директории imported-cluster получите данные для аутентификации.

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

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

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

      terraform validate
      

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

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

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

  3. Подготовьте базу-приемник к миграции в соответствии с рекомендациями.

Подготовьте и активируйте трансферыПодготовьте и активируйте трансферы

Вручную
С помощью Terraform
  1. Создайте эндпоинт-источник для каждого запланированного трансфера и укажите параметры эндпоинта:

    • Тип базы данных — PostgreSQL.
    • Тип подключения — Ручная настройка.
    • Тип инсталляции — Кластер Managed Service for PostgreSQL.
    • Кластер управляемой БД — <имя_кластера-источника> из выпадающего списка.
    • База данных — <имя_базы_данных_кластера-источника>.
    • Пользователь — <имя_пользователя>.
    • Пароль — <пароль>.
    • Список включенных таблиц — для каждого эндпоинта укажите список включенных таблиц в соответствии с планом распределения по трансферам.

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

  2. Создайте эндпоинт-приемник для каждого запланированного трансфера и укажите параметры эндпоинта:

    • Тип базы данных — PostgreSQL.
    • Тип подключения — Ручная настройка.
    • Тип инсталляции — Кластер Managed Service for PostgreSQL.
    • Кластер управляемой БД — db1 из выпадающего списка.
    • Пользователь — user1.
    • Пароль — <пароль>.
  3. Создайте трансферы типа Копирование и репликация, использующие созданные эндпоинты.

    Чтобы ускорить копирование больших таблиц (более 100 ГБ), настройте параллельное копирование для трансфера, указав нужное количество воркеров и потоков.

    Таблица разделится на указанное количество частей, которые будут копироваться параллельно.

  4. Активируйте трансферы.

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

  2. Добавьте в файл ресурс для создания эндпоинта-источника.

    resource "yandex_datatransfer_endpoint" "<имя_эндпоинта>" {
      name = "<имя_эндпоинта>"
        settings {
          postgres_source {
            connection {
              mdb_cluster_id = "<идентификатор_кластера-источника>"
            }
            database = "<имя_базы_данных>"
            user     = "<имя_пользователя>"
            password {
              raw = "<пароль>"
            }
            include_tables = ["<схема>.<таблица_1>", ... , "<схема>.<таблица_N>"]
            object_transfer_settings {
              fk_constraint = "AFTER_DATA"
              index         = "AFTER_DATA"
            }
          }
        }
    }
    

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

    В блоке object_transfer_settings определены параметры переноса схемы. Значение AFTER_DATA означает, что внешние ключи и индексы будут переноситься после переноса данных (на этапе деактивации трансферов).

  3. Добавьте в файл ресурс для создания эндпоинта-приемника.

    resource "yandex_datatransfer_endpoint" "<имя_эндпоинта>" {
      name = "<имя_эндпоинта>"
        settings {
          postgres_target {
            connection {
              mdb_cluster_id = yandex_mdb_postgresql_cluster.<имя_кластера>.id
            }
            database = "db1"
            user     = "user1"
            password {
              raw = "<пароль>"
            }
          }
        }
    }
    

    Где <имя_кластера> — имя кластера, указанное в ресурсе yandex_mdb_postgresql_cluster.

    Если вы запланировали несколько трансферов, добавьте отдельный эндпоинт для каждого из них.

  4. Добавьте в файл ресурс для создания трансфера, использующего созданные эндпоинты.

    resource "yandex_datatransfer_transfer" "<имя_трансфера>" {
      name      = "<имя_трансфера>"
      source_id = yandex_datatransfer_endpoint.<имя_эндпоинта-источника>.id
      target_id = yandex_datatransfer_endpoint.<имя_эндпоинта-приемника>.id
      type      = "SNAPSHOT_AND_INCREMENT"
      runtime {
        yc_runtime {
          upload_shard_params {
            job_count     = <количество_воркеров>
            process_count = <количество_потоков>
          }
        }
      }
    }
    

    Где:

    • source_id — ссылка на эндпоинт-источник.

    • target_id — ссылка на эндпоинт-приемник.

    • type — тип трансфера. Значение SNAPSHOT_AND_INCREMENT — Копирование и репликация.

    • runtime.yc_runtime.upload_shard_params — настройки параллельного копирования. Используются, чтобы ускорить копирование больших таблиц (более 100 ГБ).

      • job_count — количество воркеров.
      • process_count — количество потоков.

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

    Трансферы будут запущены автоматически после создания.

Переключитесь на работу с новым кластеромПереключитесь на работу с новым кластером

  1. Дождитесь перехода трансферов в статус Реплицируется.

  2. Снимите пишущую нагрузку с кластера-источника.

  3. На странице мониторинга трансфера дождитесь снижения до нуля характеристики Maximum data transfer delay для каждого трансфера. Это значит, что в кластер-приемник перенесены все изменения, произошедшие в кластере-источнике после завершения копирования данных.

  4. Переключите нагрузку на кластер-приемник.

  5. Деактивируйте трансферы и дождитесь их перехода в статус Остановлен.

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

Проверьте перенос данныхПроверьте перенос данных

  1. Подключитесь к базе данных db1 в кластере-приемнике Managed Service for PostgreSQL.

  2. Убедитесь, что в базе данных db1 появились таблицы, выполнив запрос:

    SELECT schemaname AS schema, tablename AS table_name
    FROM pg_tables
    WHERE schemaname NOT IN ('pg_catalog', 'information_schema') 
      AND tablename NOT LIKE 'pg\_%'
    ORDER BY schemaname, tablename;
    

    Запрос выведет список всех несистемных таблиц.

Удалите созданные ресурсыУдалите созданные ресурсы

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

Вручную
С помощью Terraform
  1. Удалите трансфер.
  2. Удалите эндпоинты.
  3. Удалите кластер Managed Service for PostgreSQL версии 17.
  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

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

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

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

Предыдущая
Кластер PostgreSQL
Следующая
Данные в MySQL®
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»