Практическая работа
Синхронизация данных из MySQL/PostgreSQL с помощью Data Transfer
Из описания сценария вы узнаете, как обеспечить периодическую доставку изменений из внешней базы данных в облако при помощи Data Transfer. Для синхронизации данных в вашем облаке нужно создать промежуточное хранилище данных — Managed Service for MySQL, в которое будут реплицироваться таблицы. Данные синхронизируются практически в режиме реального времени.
Для управления облачными ресурсами через командную строку, нужно установить и настроить интерфейс командной строки (CLI).
Шаг 1.
Создадим виртуальную машину из диска с предварительно настроенным публичным образом виртуальной машины с интернет-магазином. Для этого откройте любую командную строку, например Git Bash, и введите команду:
$ yc compute disk create \
--zone ru-central1-a \
--name web-store-lab-dataplatform \
--source-image-id fd8afehd5a5asg351p3n \
--folder-id <your-yc-folder-id>
Замените <your-yc-folder-id> на идентификатор облачного каталога, в котором вы планируете разворачивать инфраструктуру. Консоль может переадресовать вас на консоль управления Yandex.Cloud и предложить пройти аутентификацию. Дождитесь отработки команды. В случае успешного выполнения вы получите похожее сообщение:
Шаг 2.
Теперь создадим виртуальную машину. Введите в консоли команду:
$ yc compute instance create \
--name magento \
--zone ru-central1-a \
--network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4 \
--hostname ya-sample-store \
--use-boot-disk disk-name=web-store-lab-dataplatform \
--folder-id <your-yc-folder-id> \
--ssh-key ~/.ssh/id_rsa.pub
важно!

Обратите внимание, что имена подсетей в Вашем облаке могут отличаться от имени подсети «по умолчанию» - default-ru-central1-a. Посмотреть список существующих в Вашем облаке подсетей можно в одноименном разделе сервиса Virtual Private Cloud (VPC).


Скорректируйте имя подсети для развертывания экземпляра виртуальной машины, при необходимости.

После отработки команды вы увидите похожее сообщение:
Перейдите в консоль управления Yandex.Cloud. В разделе Compute Cloud вы увидите созданную ВМ magento.
Для передачи данных по сети нам нужно настроить параметры группы безопасности. Для этого перейдите в параметры ВМ, раздел Сеть и кликните на ссылку с именем группы безопасности. Добавьте разрешение на входящий трафик с 80 и 443 порта, а также с порта MySQL 3306. Для исходящего трафика можно разрешить весь диапазон портов.
Подключитесь к ВМ по ssh:
$ ssh yc-user@<ip-address-vm>
<ip-address-vm> замените на публичный IP-адрес ВМ.
В случае успешного подключения, вы увидите приветственное сообщение Linux:

Шаг 3.
Проверим подключение к сайту с интернет-магазином.
Для того, чтобы можно было подключаться по прямой ссылке http://ya-sample-store.local, от имени администратора откройте файл hosts (C:\Windows\System32\drivers\etc\hosts — для Windows и /etc/hosts — для Linux) и добавьте строку:
<ip-address-vm> ya-sample-store.local

Первый раз сайт может загружаться довольно долго.
Схему интернет-магазина можно посмотреть при помощи DBeaver.
Шаг 4.
Для реплицирования таблиц с информацией о заказах интернет-магазина создадим кластер Managed Service for MySQL:

В консоли управления выберите каталог, в котором нужно создать кластер БД.
Выберите сервис Managed Service for MySQL и нажмите Создать кластер.
Задайте имя кластера — ya-sample-cloud-mysql.
Выберите класс хоста — s2.small (4 cores vCPU, 16ГБ).

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

В блоке База данных:
Укажите имя базы данныхmagento-cloud.
Укажите имя пользователя yc-user и пароль — 12345678.
В блоке Сетевые настройки выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера.

В блоке Хосты выберите параметры хостов БД, создаваемых вместе с кластером:
Зона доступности — ru-central1-a.
Подсеть — default-ru-central1-a.
Нажмите кнопку Создать кластер.

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

В консоли управления выберите каталог, в котором нужно создать конфигурацию для подключения.
Выберите сервис Data Transfer и нажмите Создать эндпоинт.

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

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

Определим параметры трансфера:
Имяsales-order-sync.
В блоке Источник выберите эндпоинт — magento-source.
В блоке Приемник выберите эндпоинт — magento-report-dest.
В блоке Тип трансфера выберите — Копировать и реплицировать.
Нажмите кнопку Создать.
Нажмите на три точки в строке с описанием трансфера и выберите Активировать.
Будет выполнена первоначальная синхронизация схем данных и другой информации, а в дальнейшем, данные будут автоматически синхронизироваться при появлении изменений в базе данных источника. Статус синхронизации и сообщения об ошибках можно найти в разделе Логи.
Шаг 6.
Проверим, что схемы базы данных появились в стейджинговом хранилище:

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

В окне появится схема БД интернет-магазина.
Проследите за переносом изменений в Yandex.Cloud:

Создайте заказ на сайте интернет-магазина http://ya-sample-store.local.
Выполните запрос к БД в облаке:
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 5
Убедитесь, что данные вашего заказа появились в БД.
Конец документа