Миграция базы данных в 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 MySQL®).
-
Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
-
База данных Managed Service for YDB (см. тарифы 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 удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-