[Документация Yandex Cloud](../../index.md) > [Практические руководства](../index.md) > [Построение Data Platform](index.md) > Синхронизация данных из стороннего кластера MySQL® в Managed Service for MySQL® с помощью Data Transfer

# Синхронизация данных из стороннего кластера MySQL® в Yandex Managed Service for MySQL® с помощью Yandex Data Transfer


{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступна только [зона доступности](../../overview/concepts/geo-scope.md) `kz1-a`.

{% endnote %}


# Синхронизация данных из MySQL с помощью Yandex Data Transfer

Из описания сценария вы узнаете, как обеспечить периодическую доставку изменений из внешней базы данных в облако при помощи Data Transfer. Для синхронизации данных в вашем облаке нужно создать промежуточное стейджинговое хранилище данных — Managed Service for MySQL®, в которое будут реплицироваться таблицы. Данные синхронизируются практически в режиме реального времени. 

Чтобы настроить передачу изменений:

1. [Подготовьте облако к работе](#before-begin).
1. [Создайте ВМ с интернет-магазином](#create-vm-mysql).
1. [Создайте стейджинговое хранилище](#create-staging-dwh).
1. [Настройте параметры трансфера](#create-transfer).
1. [Проследите за переносом изменений в БД в облаке](#start-sync).

Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out).

## Подготовьте облако к работе {#before-begin}

Зарегистрируйтесь в Yandex Cloud и создайте [платежный аккаунт](../../billing/concepts/billing-account.md):
1. Перейдите в [консоль управления](https://kz.console.yandex.cloud), затем войдите в Yandex Cloud или зарегистрируйтесь.
1. На странице **[Yandex Cloud Billing](https://kz.console.yandex.cloud/billing)** убедитесь, что у вас подключен платежный аккаунт, и он находится в [статусе](../../billing/concepts/billing-account-statuses.md) `ACTIVE` или `TRIAL_ACTIVE`. Если платежного аккаунта нет, [создайте его](../../billing/quickstart/index.md) и [привяжите](../../billing/operations/pin-cloud.md) к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет работать ваша инфраструктура, на [странице облака](https://kz.console.yandex.cloud/cloud).

[Подробнее об облаках и каталогах](../../resource-manager/concepts/resources-hierarchy.md).


### Необходимые платные ресурсы {#paid-resources}

* Виртуальная машина: использование вычислительных ресурсов, хранилища, публичного IP-адреса и операционной системы ([тарифы Yandex Compute Cloud](../../compute/pricing.md)).
* Кластер Managed Service for MySQL®: выделенные хостам вычислительные ресурсы, объем хранилища и резервных копий ([тарифы Managed Service for MySQL®](../../managed-mysql/pricing.md)).
* Публичные IP-адреса, если для хостов кластера включен публичный доступ ([тарифы Yandex Virtual Private Cloud](../../vpc/pricing.md)).
* Каждый трансфер: использование вычислительных ресурсов и количество переданных строк данных ([тарифы Data Transfer](../../data-transfer/pricing.md)).


## Создайте ВМ с интернет-магазином {#create-vm-mysql}

1. Создайте ВМ с интернет-магазином `web-store-vm` на базе MySQL:

   {% list tabs group=instructions %}

   - CLI {#cli}

      Создайте диск с предварительно настроенным публичным образом виртуальной машины с интернет-магазином:

      ```bash
      yc compute disk create \
         --name web-store-lab-dataplatform \
         --source-image-id fd8lcf21vlpfdhb84m2s \
         --folder-id <your-yc-folder-id>
      ```
      
      Создайте виртуальную машину:

      ```bash
      yc compute instance create \
         --name magento \
         --zone kz1-d \
         --network-interface subnet-name=default-kz1-d,nat-ip-version=ipv4 \
         --hostname ya-sample-store \
         --use-boot-disk disk-name=web-store-lab-dataplatform \
         --ssh-key ~/.ssh/id_ed25519.pub
      ```

   {% endlist %}

1. В параметрах группы безопасности добавьте разрешение на входящий и исходящий трафик с `80` и `443` порта, а также с порта MySQL `3306`.

1. Подключитесь к ВМ по ssh:
   ```
   ssh yc-user@<публичный_IP-адрес_виртуальной_машины>
   ```   

1. От имени администратора откройте файл `hosts` (C:\Windows\System32\drivers\etc\hosts), добавьте строку:
   ```
   <ip-address-vm> ya-sample-store.local
   ```

1. Подключитесь к интернет-магазину по адресу `http://ya-sample-store.local/`.

1. Схему интернет-магазина можно посмотреть при помощи [DBeaver](https://dbeaver.com/).

## Создайте стейджинговое хранилище {#create-staging-dwh}

Для реплицирования таблиц с информацией о заказах интернет-магазина создайте кластер Managed Service for MySQL®:

1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, в котором нужно создать кластер БД. 
1. Перейдите в сервис **Managed Service for&nbsp;MySQL** и нажмите **Создать кластер**.
1. Задайте имя кластера — `ya-sample-cloud-mysql`.
1. Выберите класс хоста — `s2.small`.
1. В блоке **Размер хранилища**:

   * Выберите тип хранилища — `network-ssd`.
   * Выберите объем — `32ГБ`.

1. В блоке **База данных**:

   * Укажите имя базы данных — `magento-cloud`.
   * Укажите имя пользователя — `yc-user` и пароль — `12345678`.

1. В блоке **Сетевые настройки** выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера.
1. В блоке **Хосты** выберите параметры хостов БД, создаваемых вместе с кластером:

   * Зона доступности — `kz1-d`.
   * Подсеть — `default-kz1-d`.

1. Нажмите кнопку **Создать кластер**.
Подробнее о создании кластера смотрите в разделе [Как начать работать с Managed Service for MySQL®](../../managed-mysql/quickstart.md#cluster-create.md).

## Настройте параметры трансфера {#create-transfer}

Чтобы синхронизировать информацию о заказах из БД MySQL интернет-сайта с промежуточным хранилищем данных, которое находится в облаке, настройте Data Transfer:

1. В консоли управления выберите каталог, в котором нужно создать конфигурацию для подключения. 
1. Перейдите в сервис **Data Transfer** и нажмите **Создать эндпоинт**.
1. Определите параметры источника данных — виртуальной машины интернет-магазина с запущенным на нем экземпляром MySQL:

   * **Имя** — `magento-source`.
   * Выберите из списка тип БД — `MySQL`.
   * **IP хоста** — <публичный_IP-адрес_виртуальной_машины>.
   * **Имя базы данных** — `ya_sample_store`. 
   * **Имя пользователя** — `magento-svc` и пароль — `m@gent0`.
   * В белом списке укажите префиксы таблиц, которые подлежат репликации, например, `sales_*`.
   * Нажмите кнопку **Создать**.

1. Определите параметры приемника данных — управляемой базы данных Managed Service for MySQL®, которая находится в облаке:

   * **Имя** — `magento-report-dest`.
   * **База данных** — `Managed Service for MySQL`.
   * Выберите из списка идентификатор кластера — `ya-sample-cloud-mysql`.
   * **Имя базы данных** — `magento-cloud`.
   * **Имя пользователя репликации** — `yc-user` и пароль — `12345678`.
   * В строке **Отключение проверки констрейнтов** поставьте галочку. 
     В данном случае, если произойдет нарушение порядка передачи данных, не будут выдаваться сообщения об ошибках.
   * Нажмите кнопку **Создать**.

1. Выберите в меню раздел **Трансферы** и нажмите кнопку **Создать трансфер**.
1. Определите параметры трансфера:

   * **Имя** — `sales-order-sync`.
   * В блоке **Источник** выберите эндпоинт `magento-source`.
   * В блоке **Приемник** выберите эндпоинт `magento-report-dest`.
   * В блоке **Тип трансфера** выберите — `Копировать и реплицировать`. 
   * Нажмите кнопку **Создать**.
   * Нажмите на ![horizontal-ellipsis](../../_assets/console-icons/ellipsis.svg) в строке с описанием трансфера и выберите **Активировать**. 
      
   Будет выполнена первоначальная синхронизация схем данных и другой информации, а в дальнейшем, данные будут автоматически синхронизироваться при появлении изменений в базе данных источника. Статус синхронизации и сообщения об ошибках можно найти в разделе **Логи**.

1. Проверьте, что схемы базы данных появились в стейджинговом хранилище:

   * Перейдите в раздел **SQL** стейджингового хранилища `ya-sample-cloud-mysql`.
   * Введите имя пользователя — `yc-user` и пароль — `12345678`.
   * Выберите БД — `magento-cloud`.
   * Нажмите **Подключиться**. 
      
   В окне появится схема БД интернет-магазина.

## Проследите за переносом изменений в Yandex Cloud {#start-sync}

1. Создайте заказ в интернет-магазине по адресу `http://ya-sample-store.local/`.
1. Выполните запрос к БД в облаке:

   ``` sql
   SELECT so.*, soi.* FROM sales_order_grid so
   INNER JOIN sales_order_item soi ON so.entity_id = soi.order_id
   ORDER BY entity_id DESC 
   LIMIT 10
   ```

1. Убедитесь, что данные вашего заказа появились в БД.

## Удалите созданные ресурсы {#clear-out}

Чтобы снизить потребление ресурсов, которые вам не нужны, удалите их:

1. [Удалите ВМ](../../compute/operations/vm-control/vm-delete.md) `magento`.
1. [Удалите кластер](../../managed-mysql/operations/cluster-delete.md) `ya-sample-cloud-mysql`.
1. Если вы зарезервировали публичный статический IP-адрес, [удалите его](../../vpc/operations/address-delete.md).