Передача данных в эндпоинт-приемник Yandex Data Streams
С помощью сервиса Yandex Data Transfer вы можете переносить данные в очередь Yandex Data Streams и реализовывать различные сценарии обработки и трансформации данных. Для реализации трансфера:
- Ознакомьтесь с возможными сценариями передачи данных.
- Настройте один из поддерживаемых источников данных.
- Настройте эндпоинт-приемник в Yandex Data Transfer.
- Cоздайте и запустите трансфер.
- Выполняйте необходимые действия по работе с базой и контролируйте трансфер.
- При возникновении проблем, воспользуйтесь готовыми решениями по их устранению.
Сценарии передачи данных в Yandex Data Streams
-
Захват изменений данных — это процесс отслеживания изменений в базе данных и поставка этих изменений потребителям. Применяется для приложений, которые чувствительны к изменению данных в реальном времени.
-
Поставка данных — процесс доставки произвольных данных в целевые хранилища. Процесс поставки включает извлечение данных из очереди и их десериализацию с последующей трансформацией данных в формат целевого хранилища.
-
Миграция — перенос данных из одного хранилища в другое. Часто это перенос базы из устаревших локальных баз в управляемые облачные.
Подробное описание возможных сценариев передачи данных в Yandex Data Transfer см. в разделе Практические руководства.
Настройка источника данных
Настройте один из поддерживаемых источников данных:
- PostgreSQL;
- MySQL®;
- Apache Kafka®;
- Managed Service for YDB;
- Airbyte®;
- YDS;
- Yandex Object Storage.
- Elasticsearch;
- OpenSearch.
Полный список поддерживаемых источников и приемников в Yandex Data Transfer см. в разделе Доступные трансферы.
Настройка эндпоинта-приемника Yandex Data Streams
При создании или изменении эндпоинта вы можете задать:
- Настройки подключения к потоку данных в Yandex Data Streams и настройки сериализации. Это обязательные параметры.
- Расширенные настройки.
Основные настройки
-
База данных — выберите базу данных Yandex Managed Service for YDB, зарегистрированную в Yandex Data Streams в качестве приемника.
-
Поток — укажите имя потока, ассоциированного с базой данных.
-
Сервисный аккаунт — выберите или создайте сервисный аккаунт с ролью
yds.editor
, от имени которого сервис Data Transfer будет подключаться к приемнику данных. -
Группы безопасности — выберите облачную сеть для размещения эндпоинта и группы безопасности для сетевого трафика.
Это позволит применить к ВМ и кластерам в выбранной сети указанные правила групп безопасности без изменения настроек этих ВМ и кластеров. Подробнее см. в разделе Сеть в Yandex Data Transfer.
Расширенные настройки
-
Сохранять порядок транзакций — не разбивать поток событий на независимые очереди по таблицам.
-
Кодеки сжатия — укажите требуемый формат сжатия данных:
GZIP
,ZSTD
илиБез сжатия
.
Настройки сериализации
-
В блоке Настройки сериализации выберите тип сериализации:
-
Auto — автоматическая сериализация.
-
Debezium — сериализация по стандартам Debezium:
- Выберите схему ключа сообщения (соответствует Debezium-параметру
key.converter
). - Выберите схему значения сообщения (соответствует Debezium-параметру
value.converter
). - При необходимости задайте Настройки сериализации Debezium в формате
Параметр
-Значение
.
- Выберите схему ключа сообщения (соответствует Debezium-параметру
-
Если вы хотите использовать JSON-схемы в Yandex Schema Registry, сохраняя совместимость схем при добавлении и удалении опциональных полей, укажите следующие настройки:
-
Настройки сериализации — Debezium.
-
Чтобы использовать Schema Registry для ключей, выберите Схема ключа сообщения — JSON (посредством Schema Registry). Чтобы использовать Schema Registry для значений, выберите Схема значения сообщения — JSON (посредством Schema Registry).
-
URL — эндпоинт пространства имен Schema Registry. Вы можете скопировать эндпоинт из подсказки по подключению к пространству имен Schema Registry на вкладке Debezium, в параметре
value.converter.schema.registry.url
.Важно
В пространстве имен должна быть выставлена Политика проверок совместимости для JSON —
optional friendly
. -
Имя пользователя —
api-key
. -
Пароль — значение API-ключа с ограниченной областью действия для подключения к Schema Registry. Чтобы получить значение:
-
Создайте API-ключ с ограниченной областью действия и поместите его в локальную переменную
SECRET
:yc iam api-key create --folder-id <идентификатор_каталога> \ --service-account-name <имя_сервисного_аккаунта_для_работы_со_Schema_Registry> \ --scopes yc.schema-registry.schemas.manage \ --expires-at '2030-01-01T00:00:00Z' >./api-key.yaml && \ SECRET=`cat ./api-key.yaml | grep 'secret:' | awk '{print $2}'`
-
Выведите в терминал значение переменной
SECRET
:echo $SECRET
-
Скопируйте полученное значение и вставьте его в поле Пароль в окне создания эндпоинта.
-
-
-
В блоке Настройки сериализации Debezium:
- Чтобы генерировать закрытую схему для ключей, добавьте параметр
key.converter.dt.json.generate.closed.content.schema
со значениемtrue
. - Чтобы генерировать закрытую схему для значений, добавьте параметр
value.converter.dt.json.generate.closed.content.schema
со значениемtrue
.
- Чтобы генерировать закрытую схему для ключей, добавьте параметр
После настройки источника и приемника данных создайте и запустите трансфер.
Решение проблем, возникающих при переносе данных
См. полный список рекомендаций в разделе Решение проблем.
Прерывание трансфера с ошибкой
Трансфер типа Репликация или Копирование и репликация прерывается с ошибкой.
Текст ошибки:
/Ydb.PersQueue.V1.PersQueueService/AddReadRule failed: OVERLOADED
Трансфер прерывается из-за ограничения облачной квоты
Решение:
- Увеличьте в квотах Managed Service for YDB на облако с нужной базой данных значение характеристики Количество схемных операций в минуту и активируйте трансфер повторно.
Редиректы Cloud Functions
В трансферах из Data Streams или Apache Kafka® в редких случаях может возникнуть ошибка:
redirect to SOME_URL is requested but no redirects are allowed.
Возможная причина:
На источнике настроено использование функции Cloud Functions, которая возвращает не данные, а редирект на другой URL.
Решение:
По соображениям безопасности такие редиректы запрещены. Воздержитесь от использования редиректов в Cloud Functions в трансферах.