Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Cloud Registry
    • Yandex AI Studio
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Video
    • Stackland
    • Yandex Cloud Router
    • Yandex Managed Service for Trino
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Yandex StoreDoc
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Managed Service for Sharded PostgreSQL
    • Managed Service for YTsaurus
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • SpeechKit
    • DataSphere
    • Vision OCR
    • Translate
    • Yandex Neurosupport
    • VibeCraft
    • Yandex Cloud Detection and Response
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • SmartCaptcha
    • Cloud Desktop
    • GOST Gateway
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Container Registry
    • Managed Service for GitLab
    • SourceCraft
    • Managed Service for Prometheus®
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Message Queue
    • Serverless Integrations
    • IoT Core
    • Data Streams
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Yandex Cloud Quota Manager
    • Cloud Apps
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Yandex Cloud Trust
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
      • Создание кластера PostgreSQL для «1С:Предприятия»
      • Поиск проблем с производительностью кластера Managed Service for PostgreSQL
      • Анализ производительности и оптимизация Managed Service for PostgreSQL
      • Логическая репликация PostgreSQL
      • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
      • Миграция БД из Managed Service for PostgreSQL
      • Миграция кластера Managed Service for PostgreSQL на другую версию
      • Миграция БД из Managed Service for PostgreSQL в Object Storage
      • Миграция данных из Managed Service for PostgreSQL в Managed Service for MySQL® с помощью Data Transfer
      • Миграция данных из Managed Service for PostgreSQL в Managed Service for OpenSearch с помощью Data Transfer
      • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
      • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
      • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
      • Загрузка данных из Managed Service for YDB в Managed Service for PostgreSQL с помощью Data Transfer
      • Перенос данных из Object Storage в Managed Service for PostgreSQL с использованием Data Transfer
      • Захват изменений PostgreSQL и поставка в YDS
      • Решение проблем с сортировкой строк в PostgreSQL после обновления glibc
      • Использование секрета Yandex Lockbox в PySpark-задании для подключения к Yandex Managed Service for PostgreSQL
      • Настройка прав доступа к секрету, созданному Connection Manager, для пользователя Managed Service for PostgreSQL
      • Выполнение аналитических запросов в Managed Service for PostgreSQL с обработкой в Managed Service for ClickHouse®

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

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

Миграция базы данных из Managed Service for PostgreSQL

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

Кластер Managed Service for PostgreSQL поддерживает логическую репликацию. Это позволяет мигрировать базы данных встроенными средствами PostgreSQL между разными кластерами PostgreSQL версий 10 и выше. В том числе поддерживается миграция между разными версиями: например, можно перенести базы из PostgreSQL версии 15 в версию 17.

Примечание

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

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

Чтобы мигрировать базу данных из кластера-источника Managed Service for PostgreSQL в кластер-приемник PostgreSQL:

  1. Перенесите схему базы данных.
  2. Настройте пользователя для управления репликацией на кластере-источнике.
  3. Создайте публикацию на кластере-источнике.
  4. Создайте подписку на кластере-приемнике.
  5. Отслеживайте процесс миграции до его завершения.
  6. Закончите миграцию.

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

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

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

Перед началом работыПеред началом работы

  1. Убедитесь, что все хосты кластера-источника доступны по публичному IP-адресу, чтобы кластер-приемник мог подключаться к источнику. Подробнее в разделе Создание кластера.

  2. Установите на хосты кластера-приемника клиентские SSL-сертификаты Managed Service for PostgreSQL. Они требуются для успешного подключения к публично доступному кластеру-источнику.

  3. При необходимости настройте межсетевой экран (firewall) и группы безопасности, чтобы можно было подключаться из кластера-приемника к кластеру-источнику, а также к каждому кластеру в отдельности (например, с помощью утилиты psql).

  4. Убедитесь, что с хостов кластера-приемника можно подключиться к хостам кластера-источника.

  5. Убедитесь, что можно подключиться к кластеру-источнику с помощью SSL и к кластеру-приемнику.

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

  7. Убедитесь, что в кластере-приемнике существует пользователь с полными правами на доступ к этой базе.

Перенесите схему базы данныхПеренесите схему базы данных

Для успешной работы логической репликации необходимо, чтобы и на источнике, и на приемнике была одинаковая схема базы данных. Чтобы перенести схему базы данных:

  1. Сделайте дамп схемы базы данных кластера-источника с помощью утилиты pg_dump:

    pg_dump "host=<FQDN_хоста_кластера-источника> port=6432 sslmode=verify-full dbname=<имя_БД> user=<имя_пользователя-владельца_БД>" --schema-only --no-privileges --no-subscriptions --no-publications -Fd -f <директория_для_дампа>
    

    FQDN хоста можно получить со списком хостов в кластере.

  2. При необходимости создайте пользователей с нужными правами на доступ к объектам базы данных на кластере-приемнике.

  3. Восстановите схему базы данных из дампа на кластере-приемнике с помощью утилиты pg_restore:

    pg_restore -Fd -v --single-transaction -s --no-privileges -h <FQDN_хоста-мастера_кластера-приемника> -U <имя_пользователя-владельца_БД> -p 5432 -d <имя_БД> <директория_с_дампом>
    

Настройте пользователя для управления репликацией на кластере-источникеНастройте пользователя для управления репликацией на кластере-источнике

PostgreSQL использует модель «публикация-подписка» при выполнении логической репликации: кластер-приемник подписывается на публикацию кластера-источника, чтобы перенести данные. Чтобы успешно подписаться на публикацию, к кластеру-источнику Managed Service for PostgreSQL нужно обращаться от имени пользователя, которому назначена роль для управления логической репликацией. Чтобы настроить такого пользователя:

  1. Создайте пользователя.
  2. Назначьте роль mdb_replication этому пользователю.
  3. Подключитесь к базе данных, которую нужно мигрировать, от имени владельца базы.
  4. Выдайте созданному пользователю привилегию на выполнение операции SELECT над всеми таблицами базы данных.

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

Создайте публикацию на кластере-источникеСоздайте публикацию на кластере-источнике

  1. Подключитесь к хосту-мастеру и к базе данных, которую нужно мигрировать, от имени владельца базы.

  2. Создайте публикацию, на которую будет подписываться кластер-приемник:

    CREATE PUBLICATION <имя_публикации>;
    
  3. Включите в созданную публикацию все таблицы базы данных:

    ALTER PUBLICATION <имя_публикации> ADD TABLE <имя_таблицы_1>;
    ...
    ALTER PUBLICATION <имя_публикации> ADD TABLE <имя_таблицы_N>;
    

    Примечание

    В кластере Managed Service for PostgreSQL запрещено создание публикации сразу для всех таблиц CREATE PUBLICATION ... FOR ALL TABLES;, т.к. это требует привилегий суперпользователя.

Создайте подписку на кластере-приемникеСоздайте подписку на кластере-приемнике

  1. Подключитесь к хосту-мастеру и базе данных, в которую нужно выполнить миграцию, от имени суперпользователя (например, postgres).

  2. Создайте подписку на публикацию кластера-источника:

    CREATE SUBSCRIPTION <имя_подписки> CONNECTION 'host=<FQDN_хоста_кластера-источника> port=6432 sslmode=verify-full dbname=<имя_БД_которую_нужно_мигрировать> user=<имя_пользователя_для_управления_репликацией> password=<пароль_пользователя>' PUBLICATION <имя_публикации>;
    

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

Отслеживание процесса миграцииОтслеживание процесса миграции

Следите за миграцией с помощью каталога pg_subscription_rel, который показывает статус репликации:

SELECT * FROM pg_subscription_rel;

 srsubid | srrelid | srsubstate | srsublsn
---------+---------+------------+----------
...

Рекомендуется следить за статусом репликации по полю srsubstate этого каталога на кластере-приемнике.

Общий статус репликации на кластере-приемнике можно получить с помощью представления (view) pg_stat_subscription, на источнике — с помощью представления pg_stat_replication.

Закончите миграциюЗакончите миграцию

После завершения процесса репликации:

  1. Запретите запись в смигрированную базу данных на кластере-источнике.

  2. Перенесите последовательности (sequences), если они есть, из кластера-источника на кластер-приемник с помощью утилит pg_dump и psql:

    pg_dump "host=<FQDN_хоста-мастера_кластера-источника> port=6432 sslmode=verify-full dbname=<имя_БД> user=<имя_пользователя-владельца_БД>" --data-only -t '*.*_seq' > <имя_файла_с_sequences>
    
    psql -h <FQDN_хоста-мастера_кластера-приемника> -U <имя_пользователя-владельца_БД> -p 5432 -d <имя_БД> < <имя_файла_с_sequences>
    
  3. Удалите подписку на кластере-приемнике:

    DROP SUBSCRIPTION <имя_подписки>;
    
  4. Удалите публикацию на кластере-источнике:

    DROP PUBLICATION <имя_публикации>;
    
  5. Удалите пользователя для управления репликацией на кластере-источнике.

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

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

  • Удалите виртуальную машину.
  • Если вы зарезервировали для виртуальной машины публичный статический IP-адрес, удалите его.
  • Удалите кластер Yandex Managed Service for PostgreSQL.

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

Предыдущая
Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
Следующая
Миграция кластера Managed Service for PostgreSQL на другую версию
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»