Миграция базы данных из Yandex Managed Service for MySQL в Yandex Object Storage
С помощью сервиса Data Transfer вы можете перенести данные из кластера-источника Managed Service for MySQL в объектное хранилище Object Storage.
Чтобы перенести данные:
- Подготовьте кластер-источник.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
- Создайте кластер-источник Managed Service for MySQL любой подходящей конфигурации.
- Создайте бакет в Object Storage.
-
Если у вас еще нет Terraform, установите и настройте его.
-
Скачайте файл с настройками провайдера. Поместите его в отдельную рабочую директорию и укажите значения параметров.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-mmy-objs.tf.
В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правило, необходимое для подключения к кластеру Managed Service for MySQL;
- кластер-источник Managed Service for MySQL;
- сервисный аккаунт с ролями
editor
,storage.editor
иstorage.uploader
; - бакет Object Storage;
- эндпоинт для источника;
- трансфер.
-
Укажите в файле
data-transfer-mmy-objs.tf
:-
folder_id
— идентификатор каталога, в котором будут созданы ресурсы. -
sa_name
— имя сервисного аккаунта для создания бакета и использования в эндпоинте-приемнике. -
bucket_name
— имя бакета в Object Storage. -
параметры кластера-источника Managed Service for MySQL, которые будут использоваться как параметры эндпоинта-источника:
source_mysql_version
— версия MySQL;source_db_name
— имя базы данных;source_user
иsource_password
— имя и пароль пользователя-владельца базы данных.
-
transfer_enabled
– значение0
, чтобы не создавать трансфер до создания эндпоинта-приемника вручную.
-
-
Выполните команду
terraform init
в директории с конфигурационным файлом. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.
-
Подготовьте кластер-источник
-
Если вы создавали инфраструктуру вручную, подготовьте кластер-источник.
-
Подключитесь к кластеру-источнику Managed Service for MySQL.
-
Наполните базу тестовыми данными. В качестве примера используется таблица с информацией, поступающей от датчиков автомобиля.
Создайте таблицу:
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 ('iv9a94th6rztooxh5ur2', '2022-06-05 17:27:00', 55.70329032, 37.65472196, 427.5, 0, 23.5, 17, NULL), ('rhibbh3y08qmz3sdbrbu', '2022-06-06 09:49:54', 55.71294467, 37.66542005, 429.13, 55.5, NULL, 18, 32);
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для приемника:
-
Тип базы данных —
Object Storage
. -
Параметры эндпоинта:
-
Настройки подключения:
- Бакет — укажите имя бакета Object Storage.
- Сервисный аккаунт — выберите или создайте сервисный аккаунт с ролью
storage.uploader
.
-
Имя папки —
measurements
.
-
-
-
Создайте эндпоинт для источника и трансфер:
ВручнуюС помощью Terraform-
Создайте эндпоинт для источника:
-
Тип базы данных —
MySQL
. -
Параметры эндпоинта:
-
Настройки подключения:
-
Тип подключения —
Кластер Managed Service for MySQL
.Выберите кластер-источник из списка и укажите настройки подключения к нему.
-
-
(Опционально) Список включенных таблиц, Список исключенных таблиц — укажите регулярные выражения для переносимых таблиц и таблиц, которые не надо переносить.
-
-
-
Создайте трансфер типа Копирование, использующий созданные эндпоинты.
-
Активируйте его.
-
Укажите в файле
data-transfer-mmy-objs.tf
переменные:target_endpoint_id
— значение идентификатора эндпоинта для приемника;transfer_enabled
– значение1
для создания трансфера;- (Опционально)
include_tables_regex
,exclude_tables_regex
– регулярные выражения для переносимых таблиц и таблиц, которые не надо переносить.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Завершен.
-
Убедитесь, что данные перенеслись из кластера-источника Managed Service for MySQL в бакет Object Storage:
- В консоли управления выберите каталог, в котором находится нужный бакет.
- В списке сервисов выберите Object Storage.
- Выберите бакет из списка.
- Перейдите на вкладку Объекты.
- Проверьте, что бакет Object Storage содержит папку
measurements
с объектом<имя базы данных кластера-источника>_measurements
с тестовыми данными.
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Если созданные ресурсы вам больше не нужны, удалите их:
- Удалите трансфер.
- Удалите эндпоинт для приемника.
Остальные ресурсы удалите в зависимости от способа их создания:
- Удалите эндпоинт для источника.
- Удалите бакет Object Storage.
- Удалите кластер Managed Service for MySQL.
- Если при создании эндпоинта для приемника вы создавали сервисный аккаунт, удалите его.
-
В терминале перейдите в директорию с планом инфраструктуры.
-
Удалите конфигурационный файл
data-transfer-mmy-objs.tf
. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Все ресурсы, которые были описаны в конфигурационном файле
data-transfer-mmy-objs.tf
, будут удалены. -