Поставка данных из Yandex Managed Service for PostgreSQL в Managed Service for YDB с помощью Yandex Data Transfer
В кластер Managed Service for YDB можно в реальном времени поставлять данные из базы данных PostgreSQL. Эти данные будут автоматически добавлены в таблицы YDB с именами исходных схем и таблиц.
Чтобы запустить поставку данных:
- Подготовьте кластер-источник.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру поставки данных:
- Создайте кластер-источник Managed Service for PostgreSQL любой подходящей конфигурации с хостами в публичном доступе.
- Создайте базу данных Managed Service for YDB любой подходящей конфигурации.
- Создайте в кластере-источнике пользователя и назначьте ему роль
mdb_replication
.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-mpg-ydb.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правило, необходимое для подключения к кластеру Managed Service for PostgreSQL;
- кластер-источник Managed Service for PostgreSQL;
- база данных PostgreSQL;
- пользователь Managed Service for PostgreSQL;
- база данных Managed Service for YDB;
- эндпоинт-источник;
- трансфер.
-
Укажите в файле
data-transfer-mpg-ydb.tf
значения параметров:source_pg_version
– версия PostgreSQL в кластере-источнике;source_db_name
– имя БД в кластере-источнике;source_user_name
– имя пользователя для подключения к кластеру-источнику;source_user_password
– пароль пользователя;target_db_name
— имя базы данных Managed Service for YDB;transfer_enabled
– значение0
, чтобы не создавать эндпоинт-источник и трансфер до создания эндпоинта-приемника вручную.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте кластер-источник
-
Подключитесь к базе данных кластера-источника от имени созданного пользователя.
-
Наполните базу тестовыми данными. В качестве примера используется простая таблица, содержащая информацию с некоторых датчиков автомобиля.
Создайте таблицу:
CREATE TABLE public.sensors ( "device_id" text PRIMARY KEY NOT NULL, "datetime" timestamp NOT NULL, "latitude" real NOT NULL, "longitude" real NOT NULL, "altitude" real NOT NULL, "speed" real NOT NULL, "battery_voltage" real, "cabin_temperature" real NOT NULL, "fuel_level" real );
Наполните таблицу данными:
INSERT INTO public.sensors VALUES ('iv9a94th6rzt********', '2020-06-05 17:27:00', 55.70329032, 37.65472196, 427.5, 0, 23.5, 17, NULL), ('rhibbh3y08qm********', '2020-06-06 09:49:54', 55.71294467, 37.66542005, 429.13, 55.5, NULL, 18, 32), ('iv9a94th678t********', '2020-06-07 15:00:10', 55.70985913, 37.62141918, 417.0, 15.7, 10.3, 17, NULL);
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для приемника:
-
Тип базы данных —
YDB
. -
Параметры эндпоинта:
- Настройки подключения:
- База данных — выберите базу данных Managed Service for YDB из списка.
- Идентификатор сервисного аккаунта — выберите или создайте сервисный аккаунт с ролью
ydb.editor
.
- Настройки подключения:
-
-
Создайте эндпоинт для источника и трансфер:
ВручнуюTerraform-
Создайте эндпоинт для созданного ранее источника PostgreSQL с настройками:
- Тип базы данных —
PostgreSQL
. - Параметры эндпоинта:
- Тип инсталляции —
Кластер Managed Service for PostgreSQL
. - Кластер Managed Service for PostgreSQL — созданный кластер Managed Service for PostgreSQL.
- База данных — имя созданной БД в кластере Managed Service for PostgreSQL.
- Пользователь — имя созданного пользователя в кластере Managed Service for PostgreSQL.
- Пароль — пароль пользователя.
- Список включённых таблиц —
<имя_БД>.sensors
.
- Тип инсталляции —
- Тип базы данных —
-
Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.
-
Активируйте трансфер.
-
Укажите в файле
data-transfer-mpg-ydb.tf
значения параметров:target_endpoint_id
— значение идентификатора эндпоинта для приемника;transfer_enabled
– значение1
для создания эндпоинта-источника и трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Реплицируется.
-
Убедитесь, что в базу данных Managed Service for YDB перенеслись данные из кластера-источника Managed Service for PostgreSQL:
Консоль управления- В консоли управления
выберите каталог, в котором находится нужная база данных. - В списке сервисов выберите Managed Service for YDB.
- Выберите базу из списка.
- Перейдите на вкладку Навигация.
- Проверьте, что база данных Managed Service for YDB содержит таблицу
public_sensors
с тестовыми данными.
- В консоли управления
-
Подключитесь к кластеру-источнику Managed Service for PostgreSQL и добавьте данные в таблицу
sensors
:INSERT INTO public.sensors VALUES ('iv7b74th678t********', '2020-06-08 17:45:00', 53.70987913, 36.62549834, 378.0, 20.5, 5.3, 20, NULL);
-
Убедитесь, что в базе данных Managed Service for YDB отобразились сведения о добавленной строке:
Консоль управленияYDB CLI- В консоли управления
выберите каталог, в котором находится нужная база данных. - В списке сервисов выберите Managed Service for YDB.
- Выберите базу из списка.
- Перейдите на вкладку Навигация.
- Проверьте, что в таблицу
public_sensors
добавились новые данные.
-
Проверьте, что в таблицу
public_sensors
добавились новые данные:ydb table query execute \ --query "SELECT * \ FROM public_sensors"
- В консоли управления
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Деактивируйте и удалите трансфер.
- Удалите эндпоинты для приемника и источника.
- Если при создании эндпоинта для приемника вы создавали сервисный аккаунт, удалите его.
- Удалите базу данных Managed Service for YDB.
- Удалите кластер Managed Service for PostgreSQL.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-