Миграция базы данных в Yandex Managed Service for YDB с помощью Yandex Data Transfer
Важно
Этот документ не применим для пользователей Yandex Cloud в регионе Казахстан. См. полный перечень поддерживаемых эндпоинтов в Data Transfer.
С помощью сервиса Data Transfer вы можете перенести данные из кластера-источника Managed Service for MySQL® в Managed Service for YDB.
Чтобы перенести данные:
- Подготовьте кластер-источник.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте инфраструктуру
-
Создайте кластер-источник Managed Service for MySQL® любой подходящей конфигурации.
-
Создайте базу данных Managed Service for YDB любой подходящей конфигурации.
-
Если вы используете группы безопасности, настройте их так, чтобы к кластеру можно было подключаться из интернета.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-mmy-ydb.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правило, необходимое для подключения к кластеру Managed Service for MySQL®;
- кластер-источник Managed Service for MySQL®;
- база данных Managed Service for YDB;
- эндпоинт для источника;
- трансфер.
-
Укажите в файле
data-transfer-mmy-ydb.tf
:-
параметры кластера-источника Managed Service for MySQL®, которые будут использоваться как параметры эндпоинта-источника:
source_mysql_version
— версия MySQL®;source_db_name
— имя базы данных;source_user
иsource_password
— имя и пароль пользователя-владельца базы данных.
-
target_db_name
— имя базы данных Managed Service for YDB.
-
-
Проверьте корректность файлов конфигурации 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 ('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);
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для приемника:
-
Тип базы данных —
YDB
. -
Параметры эндпоинта:
- Настройки подключения → База данных — выберите базу данных Managed Service for YDB из списка.
- Идентификатор сервисного аккаунта — выберите или создайте сервисный аккаунт с ролью
ydb.editor
.
-
-
Создайте эндпоинт для источника и трансфер:
ВручнуюTerraform-
Создайте эндпоинт для источника:
-
Тип базы данных —
MySQL®
. -
Параметры эндпоинта → Настройки подключения —
Кластер Managed Service for MySQL
.Выберите кластер-источник из списка и укажите настройки подключения к нему.
-
-
Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.
-
Активируйте его.
-
Раскомментируйте в файле
data-transfer-mmy-ydb.tf
:- переменную
target_endpoint_id
и задайте ей значение идентификатора эндпоинта для приемника, созданного на предыдущем шаге; - ресурсы
yandex_datatransfer_endpoint
иyandex_datatransfer_transfer
.
- переменную
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Реплицируется.
-
Убедитесь, что в базу данных Managed Service for YDB перенеслись данные из кластера-источника Managed Service for MySQL®:
Консоль управленияCLI- В консоли управления
выберите каталог, в котором находится нужная база данных. - В списке сервисов выберите Managed Service for YDB.
- Выберите базу из списка.
- Перейдите на вкладку Навигация.
- Проверьте, что база данных Managed Service for YDB содержит таблицу
<имя_БД_кластера-источника>_measurements
с тестовыми данными.
-
Проверьте, что база данных содержит таблицу
<имя_БД_кластера-источника>_measurements
с тестовыми данными:SELECT * FROM <имя_БД_кластера-источника>_measurements;
- В консоли управления
-
Подключитесь к кластеру-источнику Managed Service for MySQL® и добавьте данные в таблицу
measurements
:INSERT INTO measurements VALUES ('iv7b74th678t********', '2020-06-08 17:45:00', 53.70987913, 36.62549834, 378.0, 20.5, 5.3, 20, NULL);
-
Убедитесь, что в базе данных Managed Service for YDB отобразились сведения о добавленной строке:
Консоль управленияCLI- В консоли управления
выберите каталог, в котором находится нужная база данных. - В списке сервисов выберите Managed Service for YDB.
- Выберите базу из списка.
- Перейдите на вкладку Навигация.
- Проверьте, что в таблицу
<имя_БД_кластера-источника>_measurements
добавились новые данные.
-
Проверьте, что в таблицу
<имя_БД_кластера-источника>_measurements
добавились новые данные:SELECT * FROM <имя_БД_кластера-источника>_measurements;
- В консоли управления
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите трансфер.
- Удалите эндпоинт для приемника.
- Если при создании эндпоинта для приемника вы создавали сервисный аккаунт, удалите его.
Остальные ресурсы удалите в зависимости от способа их создания:
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-