Миграция кластера PostgreSQL
Чтобы перенести вашу базу данных в сервис Yandex Managed Service for PostgreSQL, нужно непосредственно перенести данные, закрыть старую базу данных на запись и переключить нагрузку на кластер БД в Yandex Cloud.
Миграция с помощью Data Transfer позволяет:
- обойтись без создания промежуточной виртуальной машины или разрешения доступа к вашему кластеру-приемнику Managed Service for PostgreSQL из интернета;
- минимизировать время недоступности базы данных при миграции;
- мигрировать со старых версий PostgreSQL на более новые.
Подробнее см. в разделе Какие задачи решает сервис Yandex Data Transfer.
Чтобы использовать этот способ миграции, разрешите подключение к кластеру-источнику из интернета.
Перенос данных
Примечание
В регионе Казахстан доступна только зона доступности kz1-a
.
-
Подготовьте инфраструктуру:
ВручнуюTerraform-
Создайте кластер-приемник Managed Service for PostgreSQL любой подходящей конфигурации. При этом:
- Версия PostgreSQL должна быть не ниже, чем в кластере-источнике. Миграция с понижением версии PostgreSQL невозможна.
- При создании кластера укажите то же имя базы данных, что и в кластере-источнике.
- Включите те же расширения PostgreSQL, что и в кластере-источнике.
-
Создайте эндпоинт для источника со следующими параметрами:
- Тип базы данных —
PostgreSQL
. - Параметры эндпоинта → Настройки подключения —
Пользовательская инсталляция
.
Укажите параметры подключения к кластеру-источнику.
- Тип базы данных —
-
Создайте эндпоинт для приемника со следующими параметрами:
- Тип базы данных —
PostgreSQL
. - Параметры эндпоинта → Настройки подключения —
Кластер Managed Service for PostgreSQL
.
Укажите идентификатор кластера-приемника.
- Тип базы данных —
-
Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.
-
Важно
Избегайте любых изменений в схеме данных в кластере-источнике и кластере-приемнике во время работы трансфера. Подробнее см. в разделе Работа с базами данных во время трансфера.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-pgsql-mpg.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правило, необходимое для подключения к кластеру;
- кластер-приемник Managed Service for PostgreSQL;
- эндпоинт для источника;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
data-transfer-pgsql-mpg.tf
:-
pg-extensions
– список расширений PostgreSQL в кластере-источнике; -
параметры кластера-приемника, которые используются и как параметры эндпоинта-приемника:
target_pgsql_version
— версия PostgreSQL, она должна быть не ниже, чем в кластере-источнике;target_user
иtarget_password
— имя и пароль пользователя-владельца базы данных.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
.Трансфер активируется автоматически после создания.
-
-
-
Дождитесь перехода трансфера в статус Реплицируется.
-
Переведите кластер-источник в режим
только чтение
. -
На странице мониторинга трансфера дождитесь снижения до нуля характеристики Maximum data transfer delay. Это значит, что на кластер-приемник перенесены все изменения, произошедшие в кластере-источнике после завершения копирования данных.
-
Деактивируйте трансфер и дождитесь его перехода в статус Остановлен.
Подробнее о статусах трансфера см. в разделе Жизненный цикл трансфера.
-
Переключите нагрузку на кластер-приемник.
-
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
Ресурсы созданы вручнуюРесурсы созданы с помощью Terraform- Удалите кластер Managed Service for PostgreSQL.
- Удалите остановленный трансфер.
- Удалите эндпоинты для источника и приемника.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
Перенос таблиц с типами данных из расширений PostgreSQL
Сервис Data Transfer поддерживает копирование таблиц, содержащих столбцы с типами данных, определенных в расширениях PostgreSQL, а также копирование таблиц с производными типами (массивами таких типов и композитными типами с полями таких типов). Однако на данный момент есть ограничение — тип данных должен реализовывать функции двоичного ввода и вывода. То есть, для типа данных в системной таблице pg_typetypsend
и typreceive
должны быть отличны от нуля.
Например, для расширения PostGISGEOMETRY
GEOMETRY_DUMP
GEOGRAPHY
BOX2D
BOX3D
См. также
Другие способы миграции описаны в документации Yandex Managed Service for PostgreSQL.