Загрузка данных из Yandex Managed Service for YDB в Yandex Managed Service for PostgreSQL
С помощью сервиса Data Transfer вы можете загружать данные из базы данных Managed Service for YDB в кластер Managed Service for PostgreSQL.
Чтобы загрузить данные:
- Подготовьте инфраструктуру.
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
-
База данных Managed Service for YDB (см. тарифы Managed Service for YDB). Стоимость зависит от режима использования:
- Для бессерверного режима — оплачиваются операции с данными, объем хранимых данных и резервных копий.
- Для режима с выделенными инстансами — оплачивается использование выделенных БД вычислительных ресурсов, объем хранилища и резервные копии.
-
Кластер Managed Service for PostgreSQL: выделенные хостам вычислительные ресурсы, объем хранилища и резервных копий (см. тарифы Managed Service for PostgreSQL).
-
Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
Подготовьте инфраструктуру
-
Создайте базу данных Managed Service for YDB
ydb1любой подходящей конфигурации. -
Создайте кластер Managed Service for PostgreSQL любой подходящей конфигурации с хостами в публичном доступе и следующими настройками:
- Имя БД —
db1. - Имя пользователя —
user1.
- Имя БД —
-
Если вы используете группы безопасности в кластере, убедитесь, что они настроены правильно и допускают подключение к кластеру Managed Service for PostgreSQL.
-
Создайте сервисный аккаунт с именем
ydb-accountи рольюydb.editor. Трансфер будет использовать его для доступа к базе данных.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации ydb-to-postgresql.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правила, необходимые для подключения к кластеру Managed Service for PostgreSQL из интернета;
- база данных Managed Service for YDB;
- кластер-приемник Managed Service for PostgreSQL;
- эндпоинт для источника;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
ydb-to-postgresql.tfпараметры:mpg_version— версия PostgreSQL.mpg_password— пароль пользователя-владельца базы данных PostgreSQL.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте тестовые данные
-
Создайте строковую таблицу
table1со следующими колонками:Имя Тип Первичный ключ IdInt64Да NameUtf8Вы также можете создать таблицу с помощью SQL-запроса:
CREATE TABLE table1 ( Id Int64, Name Utf8, PRIMARY KEY (Id) ) -
Заполните таблицу данными с помощью SQL-запроса:
INSERT INTO table1 (Id, Name) VALUES (1, "Anna"), (2, "Robert"), (3, "Umar"), (4, "Algul"), (5, "Viktor");
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для источника типа
YDBи укажите в нем параметры подключения к базе данных:-
Настройки подключения:
- База данных — выберите базу данных Managed Service for YDB
ydb1из списка. - Идентификатор сервисного аккаунта — выберите сервисный аккаунт
ydb-account.
- База данных — выберите базу данных Managed Service for YDB
-
Список включенных путей — укажите таблицу
table1.
-
-
Создайте эндпоинт для приемника типа
PostgreSQLи укажите в нем параметры подключения к кластеру:- Тип инсталляции —
Кластер Managed Service for PostgreSQL. - Кластер Managed Service for PostgreSQL — выберите созданный ранее кластер PostgreSQL из списка.
- База данных —
db1. - Пользователь —
user1. - Пароль —
<пароль_пользователя>.
- Тип инсталляции —
-
Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.
-
Активируйте трансфер и дождитесь его перехода в статус Реплицируется.
-
Укажите в файле
ydb-to-postgresql.tfзначение1для параметраtransfer_enabled. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
Проверьте работоспособность трансфера
Чтобы убедиться в работоспособности трансфера, проверьте работу копирования и репликации.
Проверьте работу копирования
-
Подключитесь к базе данных
db1в кластере-приемнике Managed Service for PostgreSQL. -
Выполните запрос:
SELECT * FROM table1;Пример ответа
# | Id | Name | --+----+--------+ 1 | 1 | Anna | 2 | 2 | Robert | 3 | 3 | Umar | 4 | 4 | Algul | 5 | 5 | Viktor |
Проверьте работу репликации
-
Добавьте данные в таблицу
table1:INSERT INTO table1 (Id, Name) VALUES (6, "Maria"), (7, "Alex"); -
Убедитесь, что новые данные появились в базе данных приемника:
-
Подключитесь к базе данных
db1в кластере-приемнике Managed Service for PostgreSQL. -
Выполните запрос:
SELECT * FROM table1;Пример ответа
# | Id | Name | --+-----+---------+ 1 | 1 | Anna | 2 | 2 | Robert | 3 | 3 | Umar | 4 | 4 | Algul | 5 | 5 | Viktor | 6 | 6 | Maria | 7 | 7 | Alex |
-
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-