Миграция данных из Yandex Object Storage в Yandex Managed Service for MySQL®
С помощью сервиса Data Transfer вы можете перенести данные из объектного хранилища Object Storage в кластер-приемник Managed Service for MySQL®.
Чтобы перенести данные:
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте сервисный аккаунт с именем
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.net
. -
Регион —
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® добавились новые данные.
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите трансфер.
- Удалите эндпоинт для приемника.
Остальные ресурсы удалите в зависимости от способа их создания:
- Удалите эндпоинт для источника.
- Удалите бакет Object Storage.
- Удалите кластер Managed Service for MySQL®.
- Если при создании эндпоинта для приемника вы создавали сервисный аккаунт, удалите его.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-