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

# Передача данных из эндпоинта-источника Greenplum®

{% note warning %}

Для пользователей Yandex Cloud в [регионе Казахстан](../../../../overview/concepts/region.md) эндпоинты Data Transfer для баз данных MongoDB и Elasticsearch доступны только в пользовательской инсталляции. Сервисы управляемых баз данных для этих эндпоинтов не поддерживаются.

{% endnote %}

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

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

## Сценарии передачи данных из Greenplum® {#scenarios}

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

    * [Миграция кластера Greenplum®](../../../tutorials/managed-greenplum.md).

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

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

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

## Подготовка базы данных Greenplum® {#prepare}

{% note info %}

Данные, хранящиеся в `MATERIALIZED VIEW`, не переносятся. Для переноса данных из `MATERIALIZED VIEW` создайте обыкновенный `VIEW`, ссылающийся на переносимый `MATERIALIZED VIEW`.

{% endnote %}

{% list tabs %}

- Yandex MPP Analytics for PostgreSQL

    
    1. Создайте пользователя, от имени которого трансфер подключится к источнику. Для этого выполните команду:
    
        ```pgsql
        CREATE ROLE <имя_пользователя> LOGIN ENCRYPTED PASSWORD '<пароль>';
        ```

    1. Настройте кластер-источник так, чтобы созданный пользователь мог подключаться ко всем [хостам-мастерам](../../../../managed-greenplum/concepts/index.md) кластера.
    
    1. Если предполагается использовать [параллельное копирование](../../../concepts/sharded.md), настройте кластер-источник так, чтобы созданный пользователь мог подключаться ко всем [хостам-сегментам](../../../../managed-greenplum/concepts/index.md) кластера в режиме прямого доступа (utility mode). Для этого убедитесь, что для кластера включена настройка "Доступ из Data Transfer".
    
    1. Выдайте созданному пользователю привилегию на выполнение операции `SELECT` над таблицами, которые переносит трансфер, и привилегию `USAGE` на схемы, в которых находятся эти таблицы.
    
       Привилегии должны быть выданы на таблицы целиком, доступ только к части столбцов таблицы не поддерживается.
    
       Таблицы, для которых не выданы необходимые привилегии, недоступны для Data Transfer. Эти таблицы обрабатываются так же, как если бы они отсутствовали.
    
       В этом примере привилегии выдаются на все таблицы в выбранной схеме:
    
        ```pgsql
        GRANT SELECT ON ALL TABLES IN SCHEMA <название_схемы> TO <имя_пользователя>;
        GRANT USAGE ON SCHEMA <название_схемы> TO <имя_пользователя>;
        ```

- Greenplum®
    
    1. Если вы не планируете использовать для подключения к внешнему кластеру [сервис Cloud Interconnect](../../../../interconnect/concepts/index.md) или [VPN](../../../../glossary/vpn.md), разрешите подключения к такому кластеру из интернета с [IP-адресов, используемых сервисом Data Transfer](../../../../overview/concepts/public-ips.md#virtual-private-cloud).
       
       Подробнее о настройке сети для работы с внешними ресурсами читайте в [концепции](../../../concepts/network.md#source-external).
    
    1. Создайте пользователя, от имени которого трансфер подключится к источнику. Для этого выполните команду:
    
        ```pgsql
        CREATE ROLE <имя_пользователя> LOGIN ENCRYPTED PASSWORD '<пароль>';
        ```

    1. Настройте кластер-источник так, чтобы созданный пользователь мог подключаться ко всем [хостам-мастерам](../../../../managed-greenplum/concepts/index.md) кластера.
    
    1. Если предполагается использовать [параллельное копирование](../../../concepts/sharded.md), настройте кластер-источник так, чтобы созданный пользователь мог подключаться ко всем [хостам-сегментам](../../../../managed-greenplum/concepts/index.md) кластера в режиме прямого доступа (utility mode).
    
    1. Выдайте созданному пользователю привилегию на выполнение операции `SELECT` над таблицами, которые переносит трансфер, и привилегию `USAGE` на схемы, в которых находятся эти таблицы.
    
       Привилегии должны быть выданы на таблицы целиком, доступ только к части столбцов таблицы не поддерживается.
    
       Таблицы, для которых не выданы необходимые привилегии, недоступны для Data Transfer. Эти таблицы обрабатываются так же, как если бы они отсутствовали.
    
       В этом примере привилегии выдаются на все таблицы базы данных:
    
        ```pgsql
        GRANT SELECT ON ALL TABLES IN SCHEMA <название_схемы> TO <имя_пользователя>;
        GRANT USAGE ON SCHEMA <название_схемы> TO <имя_пользователя>;
        ```

{% endlist %}

Data Transfer взаимодействует с Greenplum® по-разному в зависимости от настроек трансфера и содержимого кластера-источника. Подробная информация доступна в разделе [настройка эндпоинта-источника Greenplum®](greenplum.md).

## Настройка эндпоинта-источника Greenplum® {#endpoint-settings}

При [создании](../index.md#create) или [изменении](../index.md#update) эндпоинта вы можете задать:

* Настройки подключения к [кластеру Yandex MPP Analytics for PostgreSQL](#managed-service) или [пользовательской инсталляции](#on-premise), в т. ч. на базе виртуальных машин Yandex Compute Cloud. Эти параметры обязательные.
* [Дополнительные параметры](#additional-settings).


### Кластер Yandex MPP Analytics for PostgreSQL {#managed-service}


{% note warning %}

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

{% endnote %}


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

{% list tabs group=instructions %}

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

    * **Тип подключения** — выберите вариант подключения к базе данных:
    
      * **Ручная настройка** — позволяет задать настройки подключения вручную.
    
        Выберите тип инсталляции **Кластер Managed Service for Greenplum** и задайте настройки:
    
          * **Кластер** — выберите кластер, к которому необходимо подключиться.
          * **База данных** — укажите имя базы данных в выбранном кластере.      
          * **Пользователь** — укажите имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.
          * **Пароль** — укажите пароль пользователя для доступа к базе данных.
    
      * **Connection Manager** — позволяет подключиться к кластеру через [Yandex Connection Manager](../../../../metadata-hub/quickstart/connection-manager.md):
    
        * Выберите каталог, в котором находится кластер Yandex MPP Analytics for PostgreSQL.
        * Выберите тип инсталляции **Кластер управляемой БД** и задайте настройки:
    
          * **Кластер управляемой БД** — выберите кластер, к которому необходимо подключиться.      
          * **Подключение** — выберите подключение в Connection Manager или создайте его.
          * **База данных** — укажите имя базы данных в выбранном кластере.
    
        {% note warning %}
        
        Чтобы использовать подключение из Connection Manager, у пользователя должны быть [права доступа](../../../../metadata-hub/operations/connection-access.md) не ниже `connection-manager.user` к этому подключению.
        
        {% endnote %}
    
    * **Группы безопасности** — выберите облачную сеть для размещения эндпоинта и группы безопасности для сетевого трафика.
    
      Это позволит применить к ВМ и кластерам в выбранной сети указанные правила групп безопасности без изменения настроек этих ВМ и кластеров. Подробнее читайте в разделе [Сеть в Yandex Data Transfer](../../../concepts/network.md).

{% endlist %}


### Пользовательская инсталляция {#on-premise}

Подключение к БД с явным указанием сетевых адресов и портов.

{% list tabs group=instructions %}

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

    * **Тип подключения** — выберите вариант подключения к базе данных:
    
        * **Ручная настройка** — позволяет задать настройки подключения вручную:
    
          * **Хост координатора** — укажите IP-адрес или FQDN первичного хоста-мастера, к которому необходимо подключиться.
          * **Порт координатора** — укажите номер порта, который Data Transfer будет использовать для подключения к первичному хосту-мастеру.
          * **Хост зеркала координатора** — укажите IP-адрес или FQDN резервного хоста-мастера, к которому необходимо подключиться (оставьте поле пустым, если в вашем кластере только один хост-мастер).
          * **Порт зеркала координатора** — укажите номер порта, который сервис Data Transfer будет использовать для подключения к резервному хосту-мастеру (оставьте поле пустым, если в вашем кластере только один хост-мастер).
          * **Сегменты кластера** — укажите данные для подключения к хостам-сегментам. Если их не указать, то адреса хостов-сегментов будут получены автоматически из служебной таблицы хоста-мастера.
          * **Сертификат CA** — загрузите файл [сертификата](../../../../managed-greenplum/operations/connect/index.md#get-ssl-cert) или добавьте его содержимое в текстовом виде, если требуется шифрование передаваемых данных, например, для соответствия требованиям PCI DSS.
            
            
            {% note warning %}
            
            Если не добавить сертификат, трансфер может [завершиться ошибкой](../../../troubleshooting/index.md#failed-to-connect).
            
            {% endnote %}
          
          * **Идентификатор подсети** — выберите или [создайте](../../../../vpc/operations/subnet-create.md) подсеть в нужной [зоне доступности](../../../../overview/concepts/geo-scope.md). Трансфер будет использовать эту подсеть для доступа к базе данных.
    
            Если значение в этом поле задано для обоих эндпоинтов, то обе подсети должны быть размещены в одной зоне доступности.
    
          * **База данных** — укажите имя базы данных.
          * **Пользователь** — укажите имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.
          * **Пароль** — укажите пароль пользователя для доступа к базе данных.
    
      * **Connection Manager** — позволяет подключиться к базе данных через [Yandex Connection Manager](../../../../metadata-hub/quickstart/connection-manager.md):
    
          * Выберите каталог, в котором создано подключение Connection Manager.
          * Выберите тип инсталляции **Пользовательская инсталляция** и задайте настройки:
    
            * **Подключение** — выберите подключение в Connection Manager или создайте его.
            * **База данных** — укажите имя базы данных в пользовательской инсталляции.
            *  **Идентификатор подсети** — выберите или [создайте](../../../../vpc/operations/subnet-create.md) подсеть в нужной [зоне доступности](../../../../overview/concepts/geo-scope.md). Трансфер будет использовать эту подсеть для доступа к базе данных.
    
                Если значение в этом поле задано для обоих эндпоинтов, то обе подсети должны быть размещены в одной зоне доступности.
    
            {% note warning %}
            
            Чтобы использовать подключение из Connection Manager, у пользователя должны быть [права доступа](../../../../metadata-hub/operations/connection-access.md) не ниже `connection-manager.user` к этому подключению.
            
            {% endnote %}        
    
    * **Группы безопасности** — выберите облачную сеть для размещения эндпоинта и группы безопасности для сетевого трафика.
    
      Это позволит применить к ВМ и БД в выбранной сети указанные правила групп безопасности без изменения настроек этих ВМ и БД. Подробнее читайте в разделе [Сеть в Yandex Data Transfer](../../../concepts/network.md).

{% endlist %}

### Фильтр таблиц {#filter-settings}

{% list tabs group=instructions %}

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

    * **Список включённых таблиц** — будут передаваться данные только из таблиц этого списка.

      Если таблица партиционирована, в этом поле можно указать как всю таблицу, так и отдельные ее партиции.

      Также убедитесь, что для включаемых в список таблиц [выданы необходимые привилегии](../../prepare.md#source-gp) пользователю, от имени которого будет осуществляться трансфер.

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

    * **Список исключённых таблиц** — данные таблиц из этого списка передаваться не будут.

      Если таблица партиционирована, то для исключения таблицы из этого списка необходимо перечислить все ее партиции.

      Списки включают имя [схемы](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/admin_guide-ddl-ddl-schema.html) (описание содержания, структуры и ограничений целостности базы данных) и имя таблицы. Для обоих списков поддерживаются выражения вида:

      * `<имя_схемы>.<имя_таблицы>` — полное имя таблицы;
      * `<имя_схемы>.*` — все таблицы в указанной схеме;
      * `<имя_таблицы>` — таблица в схеме по умолчанию.

      Имена включенных и исключенных таблиц должны соответствовать правилам именования идентификаторов в Greenplum®. Двойные кавычки внутри имени таблицы не поддерживаются. Внешние кавычки используются только как разделители и будут удалены при обработке путей.

{% endlist %}

### Расширенные настройки {#additional-settings}

{% list tabs group=instructions %}

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

    * **Консистентность снапшота** — при включении Data Transfer выполнит дополнительные действия с источником для обеспечения [консистентности снапшота](#snapshot-consistency).

    * **Схема служебных объектов** — схема, которая будет использоваться для размещения служебных объектов трансфера.

      Имя схемы должно соответствовать правилам именования идентификаторов в Greenplum®. Двойные кавычки в имени схемы не поддерживаются.

    * **Использовать прямое чтение с сегментов** — отключает использование [утилиты](../../../../managed-greenplum/operations/gpfdist/connect.md) `gpfdist` для трансферов из Greenplum® в Greenplum®.

{% endlist %}

### Особенности работы с источником Greenplum {#advanced}

Data Transfer поддерживает только Greenplum® версий 6.28 и выше. Greenplum® других версий не поддерживается.

Сервис выполняет операции с кластером Greenplum® в транзакциях с [уровнем изоляции](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/ref_guide-sql_commands-SET_TRANSACTION.html) `READ COMMITTED`.

Data Transfer поддерживает работу с включенным [параллельным копированием](../../../concepts/sharded.md) для источника Greenplum®.

Во время работы с включенным параллельным копированием Data Transfer удерживает открытую транзакцию на хосте-мастере Greenplum®. При прерывании этой транзакции трансфер завершится с ошибкой.

При отключенном параллельном копировании трансфер переносит данные объектов Greenplum® `TABLE`, `VIEW`, `FOREIGN TABLE`, и `EXTERNAL TABLE`. Данные из этих объектов трактуются как данные из обыкновенных таблиц и обрабатываются приемником соответственно. При включенном параллельном копировании трансфер переносит только таблицы (объекты `TABLE`), причем таблицы с [политикой распределения](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/ref_guide-sql_commands-CREATE_TABLE.html) `DISTRIBUTED REPLICATED` не переносятся.

Если в трансфере из Greenplum® в Greenplum® не используется прямое чтение с сегментов, количество потоков не может превышать минимальное число сегментов в участвующих кластерах.

Проверить количество сегментов можно через [консоль управления](https://kz.console.yandex.cloud) или выполнив SQL-запрос:

```pgsql
SELECT COUNT(*) FROM gp_segment_configuration WHERE role='p' AND content >= 0;
```

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

### Консистентность снапшота {#snapshot-consistency}

При запуске трансфера с отключенным параллельным копированием (по умолчанию) сервис выполняет копирование, взаимодействуя только с [хостом-мастером](../../../../managed-greenplum/concepts/index.md) кластера Greenplum®. Доступ к копируемым таблицам осуществляется в [режиме блокировки](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/ref_guide-sql_commands-LOCK.html) `ACCESS SHARE`. Консистентность снапшота обеспечивается средствами Greenplum®.

При запуске трансфера с включенным параллельным копированием сервис выполняет копирование, взаимодействуя как с хостом-мастером, так и в режиме прямого доступа (utility mode) с [хостами-сегментами](../../../../managed-greenplum/concepts/index.md) кластера Greenplum®. Доступ к копируемым таблицам осуществляется с блокировкой таблицы в режиме `ACCESS SHARE` или `SHARE`, зависящем от настройки "Обеспечивать строгую консистентность снапшота".

Трансферу с включенным параллельным копированием для обеспечения консистентности снапшота требуется обеспечить неизменность данных в переносимых таблицах. При блокировке в режиме `ACCESS SHARE` (по умолчанию) неизменность данных не обеспечивается сервисом и должна быть обеспечена извне. При блокировке в режиме `SHARE` неизменность данных в исходных таблицах обеспечивается механизмами Greenplum®.

_Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах._


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

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

* [PostgreSQL](../target/postgresql.md)
* [ClickHouse®](../target/clickhouse.md)
* [Greenplum®](../target/greenplum.md)
* [YTsaurus](yt.md)

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

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