Синхронизация данных из стороннего кластера MySQL® в Yandex Managed Service for MySQL®
Из описания сценария вы узнаете, как обеспечить периодическую доставку изменений из внешней базы данных в облако при помощи Data Transfer. Для синхронизации данных в вашем облаке нужно создать промежуточное стейджинговое хранилище данных — Managed Service for MySQL®, в которое будут реплицироваться таблицы. Данные синхронизируются практически в режиме реального времени.
Чтобы настроить передачу изменений:
- Подготовьте облако к работе.
- Создайте ВМ с интернет-магазином.
- Создайте стейджинговое хранилище.
- Настройте параметры трансфера.
- Проследите за переносом изменений в БД в облаке.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры передачи данных входит:
- Плата за постоянно запущенную виртуальную машину (см. тарифы Yandex Compute Cloud);
- Плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- Плата за постоянно запущенный кластер Managed Service for MySQL® (см. тарифы Managed Service for MySQL®);
- Плата за сервис Data Transfer (см. тарифы Data Transfer).
Создайте ВМ с интернет-магазином
-
Создайте ВМ с интернет-магазином
web-store-vm
на базе MySQL:CLIСоздайте диск с предварительно настроенным публичным образом виртуальной машины с интернет-магазином:
yc compute disk create \ --name web-store-lab-dataplatform \ --source-image-id fd8lcf21vlpfdhb84m2s \ --folder-id <your-yc-folder-id>
Создайте виртуальную машину:
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 \ --ssh-key ~/.ssh/id_ed25519.pub
-
В параметрах группы безопасности добавьте разрешение на входящий и исходящий трафик с
80
и443
порта, а также с порта MySQL3306
. -
Подключитесь к ВМ по ssh:
ssh yc-user@<публичный_IP-адрес_виртуальной_машины>
-
От имени администратора откройте файл
hosts
(C:\Windows\System32\drivers\etc\hosts), добавьте строку:<ip-address-vm> ya-sample-store.local
-
Подключитесь к интернет-магазину по адресу
http://ya-sample-store.local/
. -
Схему интернет-магазина можно посмотреть при помощи DBeaver
.
Создайте стейджинговое хранилище
Для реплицирования таблиц с информацией о заказах интернет-магазина создайте кластер Managed Service for MySQL®:
-
В консоли управления
выберите каталог, в котором нужно создать кластер БД. -
Выберите сервис Managed Service for MySQL® и нажмите Создать кластер.
-
Задайте имя кластера —
ya-sample-cloud-mysql
. -
Выберите класс хоста —
s2.small
. -
В блоке Размер хранилища:
- Выберите тип хранилища —
network-ssd
. - Выберите объем —
32ГБ
.
- Выберите тип хранилища —
-
В блоке База данных:
- Укажите имя базы данных —
magento-cloud
. - Укажите имя пользователя —
yc-user
и пароль —12345678
.
- Укажите имя базы данных —
-
В блоке Сетевые настройки выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера.
-
В блоке Хосты выберите параметры хостов БД, создаваемых вместе с кластером:
- Зона доступности —
ru-central1-a
. - Подсеть —
default-ru-central1-a
.
- Зона доступности —
-
Нажмите кнопку Создать кластер.
Подробнее о создании кластера см. раздел Как начать работать с Managed Service for MySQL®.
Настройте параметры трансфера
Чтобы синхронизировать информацию о заказах из БД 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
. - В блоке Тип трансфера выберите —
Копировать и реплицировать
. - Нажмите кнопку Создать.
- Нажмите на
в строке с описанием трансфера и выберите Активировать.
Будет выполнена первоначальная синхронизация схем данных и другой информации, а в дальнейшем, данные будут автоматически синхронизироваться при появлении изменений в базе данных источника. Статус синхронизации и сообщения об ошибках можно найти в разделе Логи.
- Имя —
-
Проверьте, что схемы базы данных появились в стейджинговом хранилище:
- Перейдите в раздел SQL стейджингового хранилища
ya-sample-cloud-mysql
. - Введите имя пользователя —
yc-user
и пароль —12345678
. - Выберите БД —
magento-cloud
. - Нажмите Подключиться.
В окне появится схема БД интернет-магазина.
- Перейдите в раздел SQL стейджингового хранилища
Проследите за переносом изменений в 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 10
- Убедитесь, что данные вашего заказа появились в БД.
Как удалить созданные ресурсы
Удалите ресурсы, которые вы больше не будете использовать, чтобы за них не списывалась плата:
- Удалите ВМ
magento
. - Удалите кластер
ya-sample-cloud-mysql
. - Если вы зарезервировали публичный статический IP-адрес, удалите его.