Загрузка данных из Yandex Managed Service for YDB в Yandex Object Storage с помощью Yandex Data Transfer
Вы можете перенести данные из Managed Service for YDB в объектное хранилище Object Storage с помощью сервиса Data Transfer. Для этого:
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте базу данных Managed Service for YDB любой подходящей конфигурации.
-
Создайте сервисный аккаунт с ролями
storage.editor
иydb.editor
. Трансфер будет использовать его для доступа к базе данных и бакету.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации ydb-to-object-storage.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности;
- сервисный аккаунт с ролями
storage.editor
иydb.editor
; - бакет-приемник Object Storage;
- эндпоинты;
- трансфер.
-
Укажите в файле
ydb-to-object-storage.tf
:folder_id
— идентификатор каталога;bucket_name
— имя бакета в соответствии с правилами именования.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте тестовые данные
-
Создайте в базе данных Managed Service for YDB таблицу
seasons
:CREATE TABLE seasons ( series_id Uint64, season_id Uint64, title Utf8, first_aired Uint64, last_aired Uint64, PRIMARY KEY (series_id, season_id) ); COMMIT;
-
Заполните таблицу данными:
REPLACE INTO seasons (series_id, season_id, title, first_aired, last_aired) VALUES (1, 1, "Season 1", CAST(Date("2006-02-03") AS Uint64), CAST(Date("2006-03-03") AS Uint64)), (1, 2, "Season 2", CAST(Date("2007-08-24") AS Uint64), CAST(Date("2007-09-28") AS Uint64)), (1, 3, "Season 3", CAST(Date("2008-11-21") AS Uint64), CAST(Date("2008-12-26") AS Uint64)), (1, 4, "Season 4", CAST(Date("2010-06-25") AS Uint64), CAST(Date("2010-07-30") AS Uint64)), (2, 1, "Season 1", CAST(Date("2014-04-06") AS Uint64), CAST(Date("2014-06-01") AS Uint64)), (2, 2, "Season 2", CAST(Date("2015-04-12") AS Uint64), CAST(Date("2015-06-14") AS Uint64)), (2, 3, "Season 3", CAST(Date("2016-04-24") AS Uint64), CAST(Date("2016-06-26") AS Uint64)), (2, 4, "Season 4", CAST(Date("2017-04-23") AS Uint64), CAST(Date("2017-06-25") AS Uint64)), (2, 5, "Season 5", CAST(Date("2018-03-25") AS Uint64), CAST(Date("2018-05-13") AS Uint64)); COMMIT;
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для приемника типа
Object Storage
со следующими настройками:- Бакет —
<имя_созданного_ранее_бакета>
- Сервисный аккаунт —
<имя_созданного_ранее_сервисного_аккаунта>
. - Выходной формат —
CSV
. - Формат сжатия —
UNCOMPRESSED
. - Имя папки —
from_YDB
.
- Бакет —
-
Создайте эндпоинт для источника типа
YDB
и укажите в нем параметры подключения к базе данных:- База данных — выберите базу данных YDB из списка.
- Идентификатор сервисного аккаунта — выберите созданный ранее сервисный аккаунт.
-
Создайте трансфер типа Копирование, использующий созданные эндпоинты.
-
Активируйте трансфер и дождитесь его перехода в статус Завершен.
-
Укажите в файле
ydb-to-object-storage.tf
переменные:target_endpoint_id
— значение идентификатора эндпоинта для приемника;source_endpoint_id
— значение идентификатора эндпоинта для источника;transfer_enabled
– значение1
для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
-
Активируйте трансфер и дождитесь его перехода в статус Завершен.
Проверьте работоспособность трансфера
Убедитесь, что данные перенеслись из базы данных Managed Service for YDB в бакет Object Storage:
- В консоли управления
выберите каталог, в котором находится нужный бакет. - В списке сервисов выберите Object Storage.
- Выберите бакет из списка.
- Перейдите на вкладку Объекты.
- Проверьте, что бакет Object Storage содержит папку
from_YDB
с объектом<seasons.csv>
с тестовыми данными.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
Остальные ресурсы удалите в зависимости от способа их создания:
- Удалите бакет Object Storage.
- Удалите базу данных Managed Service for YDB.
- Если вы создавали сервисный аккаунт, удалите его.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-