Захват изменений YDB и поставка в Yandex Data Streams
Важно
Этот документ не применим для пользователей Yandex Cloud в регионе Казахстан. См. полный перечень поддерживаемых эндпоинтов в Data Transfer.
В поток Data Streams можно в реальном времени поставлять данные из базы данных Managed Service for YDB с помощью технологии Change Data Capture (CDC).
Примечание
В YDB CDC-режим поддерживается, начиная с версии 22.5 и выше.
Чтобы настроить CDC с использованием сервиса Data Transfer:
- Подготовьте базу данных источника Managed Service for YDB.
- Создайте поток данных приемника Data Streams.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте базу данных источника Managed Service for YDB любой подходящей конфигурации.
-
Если для источника вы выбрали режим БД Dedicated, создайте и настройте группу безопасности в сети, где находится БД.
-
Создайте базу данных Managed Service for YDB любой подходящей конфигурации для потока данных приемника Data Streams.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-ydb-yds.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правило, необходимое для подключения к базе данных Managed Service for YDB;
- база данных источника Managed Service for YDB;
- база данных Managed Service for YDB для потока данных приемника;
- трансфер.
-
Укажите в файле
data-transfer-ydb-yds.tf
переменные:source_db_name
— имя базы данных Managed Service for YDB источника;target_db_name
— имя базы данных Managed Service for YDB для потока данных приемника;transfer_enabled
— значение0
, чтобы не создавать трансфер до создания эндпоинтов.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте базу данных источника Managed Service for YDB
-
Подготовьтесь к выполнению SQL-запросов в базе данных источника Managed Service for YDB:
Консоль управленияYDB CLI- В консоли управления
выберите каталог, в котором находится нужная база данных. - В списке сервисов выберите Managed Service for YDB.
- Выберите базу из списка и перейдите на вкладку Навигация.
- Нажмите кнопку Новый SQL-запрос.
-
Настройте подключение к базе данных Managed Service for YDB.
-
Убедитесь, что можете выполнять запросы с помощью YDB CLI с выбранным режимом аутентификации. Например, для OAuth-токена:
ydb \ --endpoint <эндпоинт> \ --database <имя_БД> \ --yc-token-file <путь_к_OAuth-токену> \ yql -s "SELECT 1;"
Результат:
┌─────────┐ | column0 | ├─────────┤ | 1 | └─────────┘
- В консоли управления
-
Создайте таблицу для тестовых данных:
CREATE TABLE test ( id Uint64, text Utf8, PRIMARY KEY (id) );
Создайте поток данных приемника Data Streams
Создайте поток данных приемника Data Streams.
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для источника
YDB
:-
Настройки подключения:
- База данных — выберите базу данных источника Managed Service for YDB из списка.
- Идентификатор сервисного аккаунта — выберите или создайте сервисный аккаунт с ролью
ydb.editor
.
-
Список включенных путей:
- Путь 1 —
test
.
- Путь 1 —
-
-
Создайте эндпоинт для приемника
Yandex Data Streams
:-
Настройки подключения:
- База данных — выберите базу данных Managed Service for YDB для потока данных приемника из списка.
- Поток — укажите имя потока Data Streams.
- Сервисный аккаунт — выберите или создайте сервисный аккаунт с ролью
yds.editor
.
-
Настройки сериализации —
Auto
.
-
-
Создайте трансфер:
ВручнуюTerraform- Создайте трансфер типа Репликация, использующий созданные эндпоинты.
- Активируйте его.
-
Укажите в файле
data-transfer-ydb-yds.tf
переменные:source_endpoint_id
— значение идентификатора эндпоинта для источника;target_endpoint_id
— значение идентификатора эндпоинта для приемника;transfer_enabled
– значение1
для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Реплицируется.
-
Вставьте тестовые данные в таблицу
test
в базе данных источника Managed Service for YDB:INSERT INTO test ( id, text ) VALUES ( 1, 'text 1' ), ( 2, 'text 2' ), ( 3, 'text 3' );
Проверьте, что в поток данных Data Streams перенеслись данные из источника:
- В консоли управления
выберите сервис Data Streams. - Выберите поток-приемник из списка и перейдите в раздел
Просмотр данных. - Убедитесь, что в сегменте
shard-000000
появились сообщения, содержащие строки таблицы из источника. Чтобы рассмотреть сообщения подробнее, нажмите на значок .
-
Настройте окружение для Data Streams.
-
Прочитайте данные из потока с помощью:
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите трансфер.
- Удалите эндпоинты для источника и приемника.
- Если при создании эндпоинтов вы создавали сервисные аккаунты, удалите их.
Остальные ресурсы удалите в зависимости от способа их создания:
- Удалите базу данных источника Managed Service for YDB.
- Удалите базу данных Managed Service for YDB для потока данных приемника.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-