[Документация Yandex Cloud](../../../../index.md) > [Yandex Data Transfer](../../../index.md) > [Пошаговые инструкции](../../index.md) > [Настройка эндпоинтов](../index.md) > YDB > Источник

# Передача данных из эндпоинта-источника Managed Service for YDB

{% note warning %}

Этот документ не применим для пользователей Yandex Cloud в [регионе Казахстан](../../../../overview/concepts/region.md). Смотрите полный перечень [поддерживаемых эндпоинтов](../../../transfer-matrix.md) в Data Transfer.

{% endnote %}

С помощью сервиса Yandex Data Transfer вы можете переносить данные из базы Managed Service for YDB и реализовывать различные сценарии переноса, обработки и трансформации данных. Для реализации трансфера:

1. [Ознакомьтесь с возможными сценариями передачи данных](#scenarios).
1. [Подготовьте базу данных Managed Service for YDB](#prepare) к трансферу.
1. [Настройте эндпоинт-источник](#endpoint-settings) в Yandex Data Transfer.
1. [Настройте один из поддерживаемых приемников данных](#supported-targets).
1. [Создайте](../../transfer.md#create) и [запустите](../../transfer.md#activate) трансфер.
1. Выполняйте необходимые действия по работе с базой и [контролируйте трансфер](../../monitoring.md).
1. При возникновении проблем, [воспользуйтесь готовыми решениями](#troubleshooting) по их устранению.

## Сценарии передачи данных из Managed Service for YDB {#scenarios}

1. Захват изменений данных — это процесс отслеживания изменений в базе данных и поставка этих изменений потребителям. Применяется для приложений, которые чувствительны к изменению данных в реальном времени.

    * [Захват изменений из PostgreSQL и поставка в YDS](../../../tutorials/ydb-to-yds.md);
    * [Захват изменений из PostgreSQL и поставка в Apache Kafka®](../../../tutorials/cdc-ydb.md).

1. Загрузка данных в витрины — процесс трансфера подготовленных данных в хранилища с целью последующей визуализации.

    * [Загрузка данных из YDB в витрину ClickHouse®](../../../tutorials/ydb-to-clickhouse.md).

1. Загрузка данных в масштабируемое хранилище Object Storage позволяет удешевить хранение и облегчает обмен данных с контрагентами.

    * [Загрузка данных из YDB в Object Storage](../../../tutorials/ydb-to-object-storage.md).

Подробное описание возможных сценариев передачи данных в Yandex Data Transfer читайте в разделе [Практические руководства](../../../tutorials/index.md).

## Подготовка базы данных источника {#prepare}

Если вы выбрали режим базы данных Dedicated, [создайте](../../../../vpc/operations/security-group-create.md) и [настройте](../../../../ydb/operations/connection.md#configuring-security-groups) группу безопасности в сети, где находится БД.

## Настройка эндпоинта-источника Managed Service for YDB {#endpoint-settings}

При [создании](../index.md#create) или [изменении](../index.md#update) эндпоинта вы можете задать:
* Настройки подключения к базе данных Yandex Managed Service for YDB. Эти параметры обязательные.
* Список путей для переноса (таблицы, директории).


{% note warning %}

Для создания или редактирования эндпоинта управляемой базы данных вам потребуется [роль `ydb.viewer`](../../../../ydb/security/index.md#ydb-viewer) или примитивная [роль `viewer`](../../../../iam/roles-reference.md#viewer), выданная на каталог кластера этой управляемой базы данных.

{% endnote %}


{% list tabs group=instructions %}

- Консоль управления {#console}

  * **База данных** — выберите из списка базу данных [Managed Service for YDB](../../../../ydb/index.md).

  
  * **Идентификатор сервисного аккаунта** — выберите или [создайте](../../../../iam/operations/sa/create.md) [сервисный аккаунт](../../../../iam/concepts/users/service-accounts.md) с ролью `ydb.editor`, от имени которого сервис Data Transfer будет подключаться к базе.

  * **Группы безопасности** — выберите облачную сеть для размещения эндпоинта и группы безопасности для сетевого трафика.
    
    Это позволит применить к ВМ и кластерам в выбранной сети указанные правила групп безопасности без изменения настроек этих ВМ и кластеров. Подробнее читайте в разделе [Сеть в Yandex Data Transfer](../../../concepts/network.md).


  * **Список включенных путей** — добавьте пути к таблицам или директориям Managed Service for YDB, которые необходимо перенести.

      Имена таблиц и директорий должны соответствовать правилам именования идентификаторов в YDB. Экранирование двойных кавычек не требуется. В пути в качестве разделителя используется символ `/`. Подробнее в [документации YDB](https://ydb.tech/docs/ru//concepts/connect#database).

      Добавление новых путей при редактировании эндпоинта, использующегося в трансферах типа **Копирование и репликация** в статусе **Реплицируется**, не приведет к загрузке истории данных таблиц. Чтобы добавить таблицу с ее историческими данными, используйте поле **Список объектов для переноса** в [параметрах трансфера](../../transfer.md#update).

      Для трансферов типа **Копирование** можно не указывать пути, в таком случае будут перенесены все таблицы.

      Для трансферов типа **Репликация** или **Копирование и репликация** обязательно указывать пути, в том числе и при репликации всех таблиц.

  * **Название предсозданного changefeed** — укажите название потока изменений, если он уже создан. В противном случае оставьте это поле пустым.

  * **Название предсозданного consumer** — укажите потребителя данных (consumer), которого вы создали для потока изменений. По умолчанию используется потребитель с именем `__data_transfer_consumer`.


      
      {% note info %}

      Если указан потребитель данных, то для подключения трансфера к YDB сервисному аккаунту, указанному в настройках эндпоинта, достаточно роли `ydb.viewer`. Если потребитель данных не указан, сервисному аккаунту требуется роль `ydb.editor`, чтобы создать потребителя по умолчанию.

      {% endnote %}
      

  * **Настройки параллельного копирования**:

    {% note warning %}

    Для обеспечения консистентного переноса данных при параллельном копировании трансфер выполняет следующие действия: сначала копирует исходные таблицы в источнике во временную папку и считывает данные из этих копий, а затем удаляет временно созданные копии.
    Копирование осуществляется на уровне метаданных и не занимает много времени. Однако скопированные таблицы полностью учитываются при подсчете дисковой квоты Managed Service for YDB.
    **Таким образом, запуск трансфера с опцией шардированного снапшота может привести к исчерпанию дисковой квоты в базе‑источнике. Перед запуском трансфера убедитесь, что в вашей базе имеется достаточный запас дисковой квоты.**

    {% endnote %}

    * **Использовать шардированный снапшот** — включите, чтобы ускорить трансфер с помощью шардированного снапшота.

      Во время стадии копирования таблицы делятся на партиции. Копирование будет выполняться быстрее, если количество воркеров, умноженное на количество потоков внутри воркера, будет пропорционально количеству партиций.

    * **Имя папки для копий** — укажите имя папки, где во время стадии копирования будут храниться копии переносимых таблиц. Папка создается в корневой директории базы-источника и по умолчанию называется `data-transfer`. Когда стадия копирования завершится, папка будет удалена.
    
    
    Для управления параллельным копированием у сервисного аккаунта, указанного в настройках эндпоинта, должна быть [роль `ydb.editor`](../../../../ydb/security/index.md#ydb-editor).


    Чтобы добиться максимальной скорости при параллельном копировании:

      * В параметрах эндпоинта-источника включите опцию **Использовать шардированный снапшот**.

      
      * В параметрах трансфера, в блоке **Настройки параллельного копирования**, задайте число воркеров и потоков в каждом воркере так, чтобы общее число потоков было равно числу партиций. Например, чтобы быстрее скопировать таблицу, разбитую на 6 партиций, можно задать 3 воркера и 2 потока внутри каждого воркера.
      

    [Подробнее о параллельном копировании](../../../concepts/sharded.md).

- Terraform {#tf}

  * Тип эндпоинта — `ydb_source`.

  * `name` — имя эндпоинта Managed Service for YDB.
  
  * `database` — путь к базе данных Managed Service for YDB.
    
      Вы можете посмотреть путь к БД в [консоли управления](https://kz.console.yandex.cloud) на странице с информацией о БД YDB.
    
      >Пример пути к БД: `/ru-central1/b1gia87mbaom********/etnudu2n9ri3********`.
  
  
  * `service_account_id` — [сервисный аккаунт](../../../../iam/concepts/users/service-accounts.md) с ролью `ydb.editor`, от имени которого сервис Data Transfer будет подключаться к базе данных.
  
  
  * `paths` - список путей к таблицам или директориям Managed Service for YDB, которые необходимо перенести.
    
      Имена таблиц и директорий должны соответствовать правилам именования идентификаторов в YDB. Экранирование двойных кавычек не требуется. В пути в качестве разделителя используется символ `/`. Подробнее читайте в [документации YDB](https://ydb.tech/docs/ru//concepts/connect#database).
    
      Для трансферов типа **Репликация** или **Копирование и репликация** обязательно указывать пути, в том числе и при репликации всех таблиц. Для трансферов типа **Копирование** можно не указывать пути, в таком случае будут перенесены все таблицы.
    
      Добавление новых путей при редактировании эндпоинта, использующегося в трансферах типа **Копирование и репликация** в статусе **Реплицируется**, не приведет к загрузке истории данных таблиц. Чтобы добавить таблицу с ее историческими данными, используйте поле **Список объектов для переноса** в [параметрах трансфера](../../transfer.md#update).
  
  * `security_groups` — [группы безопасности](../../../../vpc/concepts/security-groups.md) для сетевого трафика.
    
      Правила групп безопасности применяются к трансферу. Они позволяют открыть сетевой доступ с ВМ трансфера к кластеру. Подробнее читайте в разделе [Сеть в Yandex Data Transfer](../../../concepts/network.md).
    
      Группы безопасности должны принадлежать той же сети, в которой размещен кластер.
    
      {% note info %}
    
      В Terraform сеть для групп безопасности задавать не нужно.
    
      {% endnote %}
  
  * `changefeed_custom_name` — укажите здесь название потока изменений, если он уже создан. В противном случае не указывайте этот параметр.

  Пример структуры конфигурационного файла (приведены не все параметры):

  
  ```hcl
  resource "yandex_datatransfer_endpoint" "ydb-source" { 
    name = "<имя_эндпоинта>"
    settings {
      ydb_source {
        database               = "<имя_БД_YDB>"
        service_account_id     = "<идентификатор_сервисного_аккаунта>"
        paths                  = ["<список_путей_к_переносимым_объектам_YDB>"]
        changefeed_custom_name = "<имя_потока_изменений>"
      }
    }
  }
  ```


  Подробнее в [документации провайдера Terraform](../../../../terraform/resources/datatransfer_endpoint.md).

{% endlist %}


## Настройка приемника данных {#supported-targets}

Настройте один из поддерживаемых приемников данных:

* [ClickHouse®](../target/clickhouse.md)
* [Yandex Object Storage](../target/object-storage.md)
* [Apache Kafka®](../target/kafka.md)
* [YDS](../target/data-streams.md)
* [YTsaurus](yt.md)
* [PostgreSQL](../target/postgresql.md)
* [Yandex Managed Service for YDB](../target/yandex-database.md)

Полный список поддерживаемых источников и приемников в Yandex Data Transfer читайте в разделе [Доступные трансферы](../../../transfer-matrix.md).

После настройки источника и приемника данных [создайте и запустите трансфер](../../transfer.md#create).

## Решение проблем, возникающих при переносе данных {#troubleshooting}

Известные проблемы, связанные с использованием эндпоинта Managed Service for YDB:

### Прерывание трансфера с ошибкой {#overloaded}

Трансфер типа _**Репликация**_ или _**Копирование и репликация**_ прерывается с ошибкой.

Текст ошибки:

```text
/Ydb.PersQueue.V1.PersQueueService/AddReadRule failed: OVERLOADED
```

Трансфер прерывается из-за ограничения облачной [квоты](https://kz.console.yandex.cloud/cloud?section=quotas) на количество операций с Managed Service for YDB.

**Решение:**

1. Увеличьте в [квотах Managed Service for YDB](../../../../ydb/concepts/limits.md) на облако с нужной базой данных значение характеристики **Количество схемных операций в минуту** и [активируйте](../../transfer.md#activate) трансфер повторно.

Смотрите полный список рекомендаций в разделе [Решение проблем](../../../troubleshooting/index.md).