Миграция базы данных из Yandex Managed Service for PostgreSQL в Yandex Object Storage
Вы можете перенести базу данных из Yandex Managed Service for PostgreSQL в Yandex Object Storage с помощью сервиса Yandex Data Transfer. Для этого:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте кластер-источник Managed Service for PostgreSQL любой подходящей конфигурации с хостами в публичном доступе и следующими настройками:
- Имя БД —
db1
. - Имя пользователя —
pg-user
. - Пароль —
<пароль_источника>
.
- Имя БД —
-
Если вы используете группы безопасности в кластере, убедитесь, что они настроены правильно и допускают подключение к нему.
-
Создайте сервисный аккаунт с именем
storage-sa
и рольюstorage.uploader
. Трансфер будет использовать его для доступа к бакету.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации postgresql-to-objstorage.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности, необходимая для подключения к кластеру;
- кластер-источник Managed Service for PostgreSQL;
- сервисный аккаунт, который будет использоваться для создания бакета и дальнейшего доступа к нему;
- бакет-приемник Object Storage;
- эндпоинт для источника;
- трансфер.
-
Укажите в файле
postgresql-to-objstorage.tf
:- пароль пользователя PostgreSQL;
- имя бакета в соответствии с правилами именования.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте трансфер
-
Подключитесь к кластеру Managed Service for PostgreSQL, создайте в базе данных
db1
таблицуx_tab
и заполните ее данными:CREATE TABLE x_tab ( id NUMERIC PRIMARY KEY, name CHAR(5) ); INSERT INTO x_tab (id, name) VALUES (40, 'User1'), (41, 'User2'), (42, 'User3'), (43, 'User4'), (44, 'User5');
-
Создайте эндпоинт-приемник типа
Object Storage
со следующими настройками:- Бакет —
<имя_созданного_ранее_бакета>
- Сервисный аккаунт —
storage-sa
. - Выходной формат —
CSV
. - Формат сжатия —
UNCOMPRESSED
. - Имя папки —
from_PostgreSQL
.
- Бакет —
-
Создайте эндпоинт-источник и трансфер:
-
Создайте эндпоинт-источник типа
PostgreSQL
и укажите в нем параметры подключения к кластеру:- Тип инсталляции —
Кластер Managed Service for PostgreSQL
. - Кластер Managed Service for PostgreSQL —
<имя_кластера-источника_PostgreSQL>
из выпадающего списка. - База данных —
db1
. - Пользователь —
pg-user
. - Пароль —
<пароль_пользователя>
.
- Тип инсталляции —
-
Создайте трансфер типа Копирование, использующий созданные эндпоинты.
-
Укажите в файле
postgresql-to-objstorage.tf
переменные:objstorage_endpoint_id
— значение идентификатора эндпоинта для приемника;transfer_enabled
– значение1
для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Активируйте трансфер
-
Активируйте трансфер и дождитесь его перехода в статус Завершен.
-
Убедитесь, что в бакете Object Storage появилась таблица
public_x_tab.csv
с данными из таблицыx_tab
.
Проверьте работу копирования при повторной активации
-
Подключитесь к кластеру Managed Service for PostgreSQL, удалите строку с идентификатором
41
и измените строку с идентификатором42
в таблицеx_tab
:DELETE FROM x_tab WHERE id = 41; UPDATE x_tab SET name = 'Key3' WHERE id = 42;
-
Повторно активируйте трансфер и дождитесь его перехода в статус Завершен.
-
Убедитесь, что изменения отобразились в таблице
public_x_tab.csv
на приемнике.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
-
Убедитесь, что трансфер находится в статусе Завершен.
-
Удалите трансфер, эндпоинт-источник, кластер и бакет:
ВручнуюTerraform-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-