Чтобы перенести вашу базу данных в сервис 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
- Подготовьте кластер-источник.
- Подготовьте кластер-приемник.
- Создайте эндпоинт для источника со следующими параметрами:
- Тип базы данных —
PostgreSQL
. - Параметры эндпоинта → Настройки подключения —
Пользовательская инсталляция
.Укажите параметры подключения к кластеру-источнику.
- Тип базы данных —
- Создайте эндпоинт для приемника со следующими параметрами:
- Тип базы данных —
PostgreSQL
. - Параметры эндпоинта → Настройки подключения —
Кластер MDB
.Укажите идентификатор кластера-приемника.
- Тип базы данных —
- Создайте трансфер типа Копировать и реплицировать, использующий созданные эндпоинты.
- Активируйте трансфер.ВажноИзбегайте любых изменений в схеме данных в кластере-источнике и кластере-приемнике во время работы трансфера. Подробнее см. в разделе Работа с базами данных во время трансфера.
- Дождитесь перехода трансфера в статус Реплицируется.
- Переведите кластер-источник в режим только чтение и переключите нагрузку на кластер-приемник.
- На странице мониторинга трансфера дождитесь снижения до нуля характеристики Maximum lag on delivery. Это значит, что на кластер-приемник перенесены все изменения, произошедшие в кластере-источнике после завершения копирования данных.
- Деактивируйте трансфер и дождитесь его перехода в статус Остановлен.Подробнее о статусах трансфера см. в разделе Жизненный цикл трансфера.
- Удалите остановленный трансфер.
- Удалите эндпоинты для источника и приемника.
Перенос данных с помощью логической репликации
Логическая репликация поддерживается PostgreSQL с версии 10. Кроме миграции данных между одинаковыми версиями PostgreSQL, логическая репликация позволяет мигрировать на более новые версии PostgreSQL.
В кластерах Managed Service for PostgreSQL подписки может использовать владелец базы данных (пользователь, созданный одновременно с кластером) и пользователи с ролью mdb_admin
для этого кластера.