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

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

1. Миграция — перенос данных из одного хранилища в другое. Часто это перенос базы из устаревших локальных баз в управляемые облачные.

    * [Миграция со сменой хранилища: MySQL® в YDB](../../../tutorials/managed-mysql-to-ydb.md);
    * [Миграция со сменой хранилища: PostgreSQL в YDB](../../../tutorials/mpg-to-ydb.md);
    * [Миграция со сменой хранилища: OpenSearch в YDB](../../../tutorials/opensearch-to-ydb.md).

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

    * [Поставка данных из Apache Kafka® в YDB](../../../tutorials/mkf-to-ydb.md);
    * [Поставка данных из YDS в YDB](../../../tutorials/yds-to-ydb.md).
1. Загрузка данных в витрины — процесс трансфера подготовленных данных в хранилища с целью последующей визуализации.

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

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

## Настройка источника данных {#supported-sources}

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

* [MySQL®](../source/mysql.md)
* [Apache Kafka®](../source/kafka.md)
* [Airbyte®](../../../transfer-matrix.md#airbyte)
* [YDS](../source/data-streams.md)
* [Yandex Object Storage](../source/object-storage.md)
* [YTsaurus](../source/yt.md)
* [PostgreSQL](../source/postgresql.md)
* [OpenSearch](../source/opensearch.md)

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

## Подготовка базы данных приемника {#prepare}

1. [Создайте сервисный аккаунт](../../../../iam/operations/sa/create.md) с ролью `ydb.editor`.
1. Для базы данных в 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. Эти параметры обязательные.
* [Дополнительные параметры](#additional-settings).

### Кластер Yandex Managed Service for YDB {#managed-service}


{% note warning %}

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

{% endnote %}


Подключение к БД с указанием кластера в Yandex Cloud.

{% 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).
    
    
    * **Политика очистки** — выберите способ очистки данных в базе-приемнике перед переносом:
    
        * `Drop` — полное удаление таблиц, участвующих в трансфере (вариант по умолчанию).
    
            Используйте эту опцию, чтобы при любой активации трансфера в базу-приемник всегда передавалась самая последняя версия схемы таблиц из источника.
    
        * `Не очищать` — не очищать.
    
            Выберите эту опцию, если будет производиться только репликация без копирования данных.

- Terraform {#tf}

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

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

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

    
    ```hcl
    resource "yandex_datatransfer_endpoint" "ydb-target" {
    name        = "<имя_эндпоинта_приемника>"
    settings {
        ydb_target {
          database           = "<путь_целевой_БД>"
          cleanup_policy     = "<политика_очистки_данных>"
          service_account_id = "<идентификатор_сервисного_аккаунта>"
        }
      }
    }
    ```


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

{% endlist %}

### Дополнительные настройки {#additional-settings}

{% list tabs group=instructions %}

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

    * **Количество шардов** — укажите нужное количество шардов `N`.

        Если настройка задана, в таблицы добавляется колонка `_shard_col`. Значения в ней вычисляются как остаток от деления `H/N`, где `H` — результат хеш-функции от текущего времени, а `N` — указанное настройкой количество шардов.

    * **Сжатие для группы колонок по умолчанию** — задайте настройку `COMPRESSION` для группы колонок по умолчанию (FAMILY default).
    * **Поддиректория для размещения таблиц** — укажите [поддиректорию](https://ydb.tech/docs/ru//concepts/datamodel/dir) для размещения таблиц.

    * **Ротация таблиц**:

        * **Единица измерения** — час, день или месяц.

        * **Размер таблицы** — в выбранных единицах измерения.

            По истечении временного интервала, равного выбранной единице измерения, будет удалена самая старая таблица базы и создана новая.

        * **Количество таблиц** — необходимое количество таблиц в базе-приемнике.

        * **Разбивать по столбцу** — по значениям какой колонки разбивать (_партицировать_) таблицу. Колонка должна иметь тип <q>время</q>.

            
            Подробнее о партицировании таблиц — в документации [Yandex Managed Service for YDB](https://ydb.tech/docs/ru//concepts/datamodel/table#partitioning).


        Если используется эта настройка, в базе-приемнике создается указанное количество таблиц для данных за различные интервалы времени. Имя каждой таблицы выбирается автоматически по дате и времени начала интервала. В зависимости от значений в указанной колонке таблицы-источника, исходные строки распределяются по соответствующим таблицам базы-приемника.

    * **Переименование таблиц** — заполните, если необходимо переименовать таблицы базы-источника при переносе в базу-приемник.

    * **Использовать OLAP-таблицы** — выберите эту опцию, чтобы создавать колоночные таблицы (OLAP). По умолчанию используются строковые таблицы (OLTP). 

    * **Не применять изменения схемы** — выберите, чтобы не изменять схему данных на приемнике при изменении ее на источнике. По умолчанию при изменении схемы на источнике трансфер будет автоматически применять изменения схемы в приемнике: создавать новые таблицы, добавлять новые колонки, добавлять новые перечисляемые значения и перечисляемые типы. По умолчанию не применяются такие изменения, как удаление таблиц или колонок.

- Terraform {#tf}

    * `path` — поддиректория для размещения таблиц.

    * `default_compression` — сжатие для группы колонок по умолчанию.

    * `is_table_column_oriented` — укажите значение `true` чтобы создавать колоночные таблицы (OLAP). По умолчанию используются строковые таблицы (OLTP).

    * `is_schema_migration_disabled` — установите значение `true`, чтобы не изменять схему данных на приемнике при изменении ее на источнике. По умолчанию при изменении схемы на источнике трансфер будет автоматически применять изменения схемы в приемнике: создавать новые таблицы, добавлять новые колонки, добавлять новые перечисляемые значения и перечисляемые типы. По умолчанию не применяются такие изменения, как удаление таблиц или колонок.

{% endlist %}

После настройки источника и приемника данных [создайте и запустите трансфер](../../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).