Миграция данных из Yandex Object Storage в Managed Service for MySQL® с помощью Yandex Data Transfer
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
Примечание
Функциональность загрузки данных из Object Storage в сервисе Data Transfer находится на стадии Preview. Чтобы получить доступ, обратитесь в техническую поддержку
С помощью сервиса Data Transfer вы можете перенести данные из объектного хранилища Object Storage в кластер-приемник Managed Service for MySQL®.
Чтобы перенести данные:
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Необходимые платные ресурсы
- Бакет Object Storage: использование хранилища и выполнение операций с данными (см. тарифы Object Storage).
- Кластер Managed Service for MySQL®: выделенные хостам вычислительные ресурсы, объем хранилища и резервных копий (см. тарифы Managed Service for MySQL®).
- Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте сервисный аккаунт с именем
storage-viewerи рольюstorage.viewer. Трансфер будет использовать его для доступа к бакету. -
Создайте статический ключ доступа для сервисного аккаунта
storage-viewer. -
Создайте кластер-приемник Managed Service for MySQL® любой подходящей конфигурации со следующими настройками:
- Имя БД —
db1. - Имя пользователя —
mmy-user. - Пароль —
<пароль_пользователя>.
- Имя БД —
-
Назначьте пользователю MySQL® роль
ALL_PRIVILEGESдля базы-приемника.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-objs-mmy.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правило, необходимое для подключения к кластеру Managed Service for MySQL®;
- сервисный аккаунт, который будет использоваться для создания бакета и дальнейшего доступа к нему;
- секрет Yandex Lockbox, в котором будет храниться статический ключ сервисного аккаунта для настройки эндпоинта-источника;
- бакет-источник Object Storage;
- кластер-приемник Managed Service for MySQL®;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
data-transfer-objs-mmy.tf:folder_id— идентификатор каталога, в котором будут созданы ресурсы.bucket_name— имя бакета в соответствии с правилами именования.mmy_password— пароль пользователя MySQL®.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте тестовые данные
-
Создайте на рабочей машине текстовый файл
data.csvи наполните его тестовыми данными. В качестве примера используются показатели датчиков автомобиля:1;99101;2022-06-05 17:27:00;55.70329032;37.65472196;427.5;52.3;23.5;17.;52. 2;95106;2022-06-06 09:49:54;55.71294467;37.66542005;429.13;55.5;21.;18.;32. 3;117890;2023-06-07 06:21:29;55.71294467;37.66542005;429.13;56.2;20.;18.7;45. 4;99101;2022-06-07 08:15:32;55.29194467;37.66542005;429.13;59.1;21.;18.;20. -
Загрузите файл в созданный ранее бакет Object Storage.
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для источника со следующими настройками:
-
Тип базы данных —
Object Storage. -
Бакет — имя бакета в Object Storage.
-
Идентификатор ключа доступа AWS — открытая часть статического ключа сервисного аккаунта. Если вы создали инфраструктуру с помощью Terraform, скопируйте значение ключа из секрета Yandex Lockbox.
-
Секретный ключ доступа AWS — закрытая часть статического ключа сервисного аккаунта. Если вы создали инфраструктуру с помощью Terraform, скопируйте значение ключа из секрета Yandex Lockbox.
-
Эндпоинт —
https://storage.yandexcloud.kz. -
Регион —
ru-central1. -
Формат данных —
CSV. -
Разделитель — знак точки с запятой
;. -
Таблица —
measurements. -
Добавить системные колонки — выключите опцию.
-
Схема результирующей таблицы — выберите
Вручнуюи укажите имена полей и тип данных:-
id:INT64, признак Ключ; -
device_id:INT32; -
datetime:DATETIME;Примечание
Эндпоинт-приемник записывает данные с типом
DATETIMEв часовом поясе UTC+0. -
latitude:DOUBLE; -
longitude:DOUBLE; -
altitude:DOUBLE; -
speed:DOUBLE; -
battery_voltage:DOUBLE; -
cabin_temperature:DOUBLE; -
fuel_level:DOUBLE.
-
Остальные параметры оставьте по умолчанию.
-
-
Создайте эндпоинт для приемника и трансфер:
ВручнуюTerraform-
Создайте эндпоинт для приемника:
-
Тип базы данных —
MySQL. -
Параметры эндпоинта:
- Настройки подключения:
-
Тип подключения —
Кластер Managed Service for MySQL.Выберите кластер-источник из списка и укажите настройки подключения к нему.
-
- Настройки подключения:
-
-
Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.
-
Активируйте его.
-
Укажите в файле
data-transfer-objs-mmy.tfпеременные:source_endpoint_id— значение идентификатора эндпоинта для источника;transfer_enabled– значение1для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру для трансфера:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Реплицируется.
-
Подключитесь к базе данных в кластере-приемнике Managed Service for MySQL®.
-
Чтобы убедиться, что данные успешно перенесены, выполните запрос:
SELECT * FROM db1.measurements;Пример ответа
id | device_id | datetime | latitude | longitude | altitude | speed | battery_voltage | cabin_temperature | fuel_level ----------------+---------------------+-----------+-----------+----------+-------+-----------------+-------------------+----------+ 1 | 99101 | 2022-06-05T17:27:00 | 55.703289 | 37.66542 | 427.50 | 52.29 | 23.5 | 17.0 | 52.0 | 2 | 95106 | 2022-06-06T09:49:54 | 55.712944 | 37.66542 | 429.13 | 55.50 | 21.0 | 18.0 | 32.0 | 3 | 117890 | 2023-06-07T06:21:29 | 55.712944 | 37.66542 | 429.13 | 56.20 | 20.0 | 18.7 | 45.0 | 4 | 99101 | 2022-06-05 17:27:00 | 55.291944 | 37.66542 | 429.13 | 59.09 | 21.0 | 18.0 | 20.0 | -
Создайте текстовый файл
data2.csv, в котором содержатся новые данные:7;95106;2022-06-07 09:54:32;47.71294467;37.66542005;429.13;62.2;21.;20.4;27. 9;117890;2022-06-07 11:56:27;52.71294467;37.66542005;429.13;65.5;19.;19.;38. 10;117890;2022-06-07 12:36:27;57.71294467;37.66542005;429.13;72.1;19.;20.;25. 11;99101;2022-06-07 15:22:27;59.71294467;37.66542005;429.13;35.5;19.;18.;12. -
Загрузите файл в бакет Object Storage для трансфера.
-
Убедитесь, что в таблицу
db1.measurementsбазы-приемника MySQL® добавились новые данные.
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Чтобы снизить потребление ресурсов, которые вам не нужны, удалите их:
-
Удалите эндпоинт для приемника.
-
Остальные ресурсы удалите в зависимости от способа их создания:
ВручнуюTerraform-
Удалите эндпоинт для источника.
-
Если при создании эндпоинта для приемника вы создавали сервисный аккаунт, удалите его.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-