Перенос данных из Yandex Object Storage с использованием Yandex Data Transfer
Вы можете перенести данные из Yandex Object Storage в таблицу кластера Managed Service for PostgreSQL с помощью сервиса Data Transfer. Для этого:
- Подготовьте облако к работе.
- Подготовьте тестовые данные.
- Подготовьте трансфер.
- Активируйте трансфер.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Необходимые платные ресурсы
В стоимость инфраструктуры входят:
- Бакет Object Storage: использование хранилища и выполнение операций с данными (тарифы Object Storage).
- Кластер Managed Service for PostgreSQL: использование вычислительных ресурсов выделенных хостов, объем хранилища и резервных копий (тарифы Managed Service for PostgreSQL).
- Публичные IP-адреса, если для хостов кластера включен публичный доступ (тарифы Virtual Private Cloud).
Подготовьте инфраструктуру
-
Создайте кластер-приемник Managed Service for PostgreSQL любой подходящей конфигурации со следующими настройками:
-
Имя БД —
db1. -
Имя пользователя —
pg-user. -
Пароль —
<пароль_пользователя>. -
С публичным доступом к хостам кластера.
Примечание
Публичный доступ к хостам кластера нужен, если вы планируете подключаться к кластеру через интернет. Этот вариант подключения более простой, и его рекомендуется использовать для прохождения руководства. К хостам без публичного доступа тоже можно подключиться, но только с виртуальных машин Yandex Cloud, расположенных в той же облачной сети, что и кластер.
-
-
Если вы используете группы безопасности в кластере, убедитесь, что они настроены правильно и допускают подключение к нему.
-
Создайте сервисный аккаунт с именем
storage-viewerи рольюstorage.viewer. Трансфер будет использовать его для доступа к бакету. -
Создайте статический ключ доступа для сервисного аккаунта
storage-viewer.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации objstorage-to-postgres.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности, необходимая для подключения к кластеру;
- сервисный аккаунт, который будет использоваться для создания бакета и дальнейшего доступа к нему;
- секрет Yandex Lockbox, в котором будет храниться статический ключ сервисного аккаунта для настройки эндпоинта-источника;
- бакет-источник Object Storage;
- кластер-приемник Managed Service for PostgreSQL;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
objstorage-to-postgres.tf:folder_id— идентификатор облачного каталога, такой же, как в настройках провайдера.bucket_name— имя бакета в соответствии с правилами именования.pg_password— пароль пользователя PostgreSQL.
-
Создайте ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список планируемых изменений: ресурсы и/или выходные переменные. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте тестовые данные
-
Создайте на рабочей машине файл
demo_data.csvи наполните его тестовыми данными:1,Anna 2,Robert 3,Umar 4,Algul 5,Viktor -
Загрузите подготовленный файл в бакет Object Storage.
Подготовьте трансфер
-
Создайте эндпоинт-источник типа
Object Storageсо следующими настройками:-
Тип базы данных —
Object Storage. -
Настройки подключения → Настроить вручную:
-
Бакет — имя бакета в Object Storage.
-
Идентификатор ключа доступа AWS — открытая часть статического ключа сервисного аккаунта. Если вы создали инфраструктуру с помощью Terraform, скопируйте значение ключа из секрета Yandex Lockbox.
-
Секретный ключ доступа AWS — закрытая часть статического ключа сервисного аккаунта. Если вы создали инфраструктуру с помощью Terraform, скопируйте значение ключа из секрета Yandex Lockbox.
-
Эндпоинт —
https://storage.yandexcloud.net. -
Регион —
ru-central1.
-
-
Формат данных —
CSV. -
Разделитель — запятая
,. -
Таблица — имя CSV-файла в бакете, например
demo_data.csv. -
Схема результирующей таблицы — выберите
Вручнуюи укажите имена полей и типы данных:Id:Int64;Name:UTF8.
Остальные параметры оставьте по умолчанию.
-
-
Создайте эндпоинт-приемник и трансфер:
ВручнуюTerraform-
Создайте эндпоинт-приемник типа
PostgreSQLи укажите в нем параметры подключения к кластеру:- Тип инсталляции —
Кластер Managed Service for PostgreSQL. - Кластер Managed Service for PostgreSQL — выберите кластер-приемник PostgreSQL из выпадающего списка.
- База данных —
db1. - Пользователь —
pg-user. - Пароль —
<пароль_пользователя>.
- Тип инсталляции —
-
Создайте трансфер типа Копирование, использующий созданные эндпоинты.
-
Укажите в файле
objstorage-to-postgres.tfпеременные:source_endpoint_id— значение идентификатора эндпоинта для источника;transfer_enabled— значение1для создания трансфера.
-
Обновите ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список планируемых изменений: ресурсы и/или выходные переменные. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
-
Активируйте трансфер
-
Активируйте трансфер и дождитесь его перехода в статус Завершен.
-
Подключитесь к базе данных в кластере-приемнике Managed Service for PostgreSQL.
-
Выполните запрос:
SELECT * FROM public."demo_data.csv";Пример ответа
__file_name | __row_index | Id | Name --------------+-------------+----+-------- demo_data.csv | 1 | 1 | Anna demo_data.csv | 2 | 2 | Robert demo_data.csv | 3 | 3 | Umar demo_data.csv | 4 | 4 | Algul demo_data.csv | 5 | 5 | Viktor
Данные успешно перенесены.
Удалите созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
-
Удалите объекты из бакета.
-
Остальные ресурсы удалите в зависимости от способа их создания:
ВручнуюTerraform-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-