Захват изменений MySQL® и поставка в YDS
Вы можете отслеживать изменения данных в кластере-источнике Managed Service for MySQL® и отправлять их в кластер-приемник Data Streams с помощью технологии Change Data Capture (CDC).
Чтобы настроить CDC с использованием сервиса Data Transfer:
Если созданные ресурсы вам больше не нужны, удалите их.
Необходимые платные ресурсы
-
Кластер Managed Service for MySQL®: выделенные хостам вычислительные ресурсы, объем хранилища и резервных копий (см. тарифы Managed Service for MySQL®).
-
Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
-
Каждый трансфер: использование вычислительных ресурсов и количество переданных строк данных (см. тарифы Data Transfer).
-
База данных Managed Service for YDB. Стоимость зависит от режима использования:
- Для бессерверного режима — оплачиваются операции с данными, объем хранимых данных и резервных копий.
- Для режима с выделенными инстансами — оплачивается использование выделенных БД вычислительных ресурсов, объем хранилища и резервных копий.
-
Сервис Data Streams. Стоимость зависит от режима тарификации:
- По выделенным ресурсам — оплачивается фиксированная почасовая ставка за установленный лимит пропускной способности и срок хранения сообщений, а также дополнительно количество единиц фактически записанных данных.
- По фактическому использованию (On-demand) — оплачиваются выполненные операции записи и чтения данных, объем считанных/записанных данных, а также объем фактически используемого хранилища для сообщений, по которым не истек срок хранения.
См. тарифы Data Streams.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте кластер-источник Managed Service for MySQL® любой подходящей конфигурации с хостами в публичном доступе и следующими настройками:
- Имя БД —
db1. - Имя пользователя —
mmy-user.
- Имя БД —
-
Выдайте пользователю административные привилегии
REPLICATION CLIENTиREPLICATION SLAVE. -
Настройте группы безопасности и убедитесь, что они допускают подключение к кластеру.
-
Создайте базу данных Managed Service for YDB с именем
ydb-exampleлюбой подходящей конфигурации. -
Создайте сервисный аккаунт с именем
yds-saи рольюyds.editor. Трансфер будет использовать его для доступа к Data Streams.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации mysql-yds.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности, необходимая для подключения к кластеру;
- кластер-источник Managed Service for MySQL®;
- база данных Managed Service for YDB;
- сервисный аккаунт, который будет использоваться для доступа к Data Streams;
- эндпоинт для источника;
- трансфер.
-
Укажите в файле
mysql-yds.tfпароль пользователя MySQL®. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте трансфер
-
Создайте поток данных Data Streams с именем
mpg-stream. -
Подключитесь к кластеру Managed Service for MySQL®, создайте в базе данных
db1таблицуmeasurementsи заполните ее данными:CREATE TABLE measurements ( device_id varchar(200) NOT NULL, datetime timestamp NOT NULL, latitude real NOT NULL, longitude real NOT NULL, altitude real NOT NULL, speed real NOT NULL, battery_voltage real, cabin_temperature real NOT NULL, fuel_level real, PRIMARY KEY (device_id) ); INSERT INTO measurements VALUES ('iv9a94th6rzt********', '2022-06-05 17:27:00', 55.70329032, 37.65472196, 427.5, 0, 23.5, 17, NULL), ('rhibbh3y08qm********', '2022-06-06 09:49:54', 55.71294467, 37.66542005, 429.13, 55.5, NULL, 18, 32); -
Создайте эндпоинт-приемник типа
Data Streamsсо следующими настройками:- База данных —
ydb-example. - Поток —
mpg-stream. - Сервисный аккаунт —
yds-sa.
- База данных —
-
Создайте эндпоинт-источник и трансфер:
ВручнуюTerraform-
Создайте эндпоинт-источник типа
MySQL®и укажите в нем параметры подключения к кластеру:- Тип подключения —
Кластер Managed Service for MySQL. - Кластер Managed Service for MySQL —
<имя_кластера-источника>из выпадающего списка. - База данных —
db1. - Пользователь —
mmy-user. - Пароль — пароль пользователя
mmy-user.
- Тип подключения —
-
Создайте трансфер типа Репликация, использующий созданные эндпоинты.
-
Укажите в файле
mysql-yds.tfпеременные:yds_endpoint_id— значение идентификатора эндпоинта для приемника;transfer_enabled– значение1для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
-
Активируйте трансфер
- Активируйте трансфер и дождитесь его перехода в статус Реплицируется.
Проверьте, что в поток данных Data Streams перенеслись данные из источника:
- В консоли управления
выберите сервис Data Streams. - Выберите поток-приемник из списка и перейдите в раздел
Просмотр данных. - Убедитесь, что в сегменте
shard-000000появились сообщения, содержащие строки таблицы из источника. Чтобы рассмотреть сообщения подробнее, нажмите на значок .
-
Настройте окружение для Data Streams.
-
Прочитайте данные из потока с помощью:
Проверьте работу репликации
-
Подключитесь к кластеру-источнику.
-
Добавьте в таблицу
measurementsновую строку:INSERT INTO measurements VALUES ('ad02l5ck6sdt********', '2022-06-05 17:27:00', 55.70329032, 37.65472196, 427.5, 0, 23.5, 19, 45); -
Убедитесь, что новая строка отобразилась в потоке данных Data Streams.
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
Остальные ресурсы удалите в зависимости от способа их создания:
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-