Миграция базы данных в Managed Service for PostgreSQL - Бизнес-мудрость

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

Чтобы перенести вашу базу данных в сервис Managed Service for PostgreSQL, нужно непосредственно перенести данные, закрыть старую базу данных на запись и перенести нагрузку на кластер БД в Yandex Cloud.

Перенести данные из стороннего кластера-источника в кластер-приемник Managed Service for PostgreSQL можно тремя способами:

  • Перенос данных с использованием сервиса Yandex Data Transfer.Этот способ позволяет:
    • обойтись без создания промежуточной виртуальной машины или разрешения доступа к вашему кластеру-приемнику Managed Service for PostgreSQL из интернета;
    • перенести базу целиком без остановки обслуживания пользователей;
    • мигрировать со старых версий PostgreSQL на более новые.Чтобы использовать этот способ, разрешите подключение к кластеру-источнику из интернета.Подробнее см. в разделе Какие задачи решает сервис Yandex Data Transfer.
  • Перенос данных с помощью логической репликации.Логическая репликация использует механизм подписки (subscriptions). Это позволяет перенести данные в кластер-приемник с минимальным временем простоя.Используйте этот способ только в том случае, если перенос данных с помощью Yandex Data Transfer по каким-либо причинам невозможен.
  • Перенос данных через создание и восстановление логического дампа.Логический дамп — файл с набором команд, последовательное выполнение которых позволяет восстановить состояние базы данных. Он создается с помощью утилиты pg_dump. Чтобы обеспечить полноту логического дампа, перед его созданием кластер-источник следует перевести в режим только чтение.Используйте этот способ только в том случае, если перенос данных с помощью любого из предыдущих способов по каким-либо причинам невозможен.

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

Создайте кластер Managed Service for PostgreSQL любой подходящей конфигурации. При этом:

  • Версия PostgreSQL должна быть не ниже чем в кластере-источнике. Для способа с использованием логического дампа версии должны совпадать.Миграция на postgresql с понижением версии PostgreSQL невозможна.
  • При создании кластера укажите то же имя базы данных, что и в кластере-источнике.
  • Включите те же расширения PostgreSQL, что и в кластере-источнике.

Перенос данных с использованием сервиса Yandex Data Transfer

  1. Подготовьте кластер-источник.
  2. Подготовьте кластер-приемник.
  3. Создайте эндпоинт для источника со следующими параметрами:
    • Тип базы данных — PostgreSQL.
    • Параметры эндпоинта → Настройки подключения — Пользовательская инсталляция.Укажите параметры подключения к кластеру-источнику.
  4. Создайте эндпоинт для приемника со следующими параметрами:
    • Тип базы данных — PostgreSQL.
    • Параметры эндпоинта → Настройки подключения — Кластер MDB.Укажите идентификатор кластера-приемника.
  5. Создайте трансфер типа Копировать и реплицировать, использующий созданные эндпоинты.
  6. Активируйте трансфер.ВажноИзбегайте любых изменений в схеме данных в кластере-источнике и кластере-приемнике во время работы трансфера. Подробнее см. в разделе Работа с базами данных во время трансфера.
  7. Дождитесь перехода трансфера в статус Реплицируется.
  8. Переведите кластер-источник в режим только чтение и переключите нагрузку на кластер-приемник.
  9. На странице мониторинга трансфера дождитесь снижения до нуля характеристики Maximum lag on delivery. Это значит, что на кластер-приемник перенесены все изменения, произошедшие в кластере-источнике после завершения копирования данных.
  10. Деактивируйте трансфер и дождитесь его перехода в статус Остановлен.Подробнее о статусах трансфера см. в разделе Жизненный цикл трансфера.
  11. Удалите остановленный трансфер.
  12. Удалите эндпоинты для источника и приемника.

Перенос данных с помощью логической репликации

Логическая репликация поддерживается PostgreSQL с версии 10. Кроме миграции данных между одинаковыми версиями PostgreSQL, логическая репликация позволяет мигрировать на более новые версии PostgreSQL.

В кластерах Managed Service for PostgreSQL подписки может использовать владелец базы данных (пользователь, созданный одновременно с кластером) и пользователи с ролью mdb_admin для этого кластера.