С помощью этого руководства вы выполните миграцию данных между двумя базами данных PostgreSQL с помощью Managed Trino. Вы создадите таблицу-источник и целевую таблицу и научитесь переносить данные между ними с помощью JDBC-клиента DBeaver и Python-скрипта.
Вы будете использовать следующие сервисы:
Managed Trino — сервис, который предоставляет массивно-параллельный аналитический SQL-движок для обработки больших объемов данных из разных источников.
Managed PostgreSQL — управляемая база данных PostgreSQL.
Шаги:
Располагайте создаваемые сущности в одной VPC и используйте единые сетевые параметры.
Зарегистрируйтесь в личном кабинете Cloud.ru. Если вы уже зарегистрированы, войдите под своей учетной записью.
Перейдите в раздел Evolution.
Создайте публичный SNAT-шлюз, чтобы обеспечить инстансу доступ в интернет и связь с внешними источниками.
Создайте кластер Data Platform с названием dp-labs.
Скачайте и установите root-сертификат на устройство.
На этом шаге вы подготовите базы данных Managed PostgreSQL®.
Создайте кластер Managed PostgreSQL c названием PG-lab.
Дождитесь, когда статус кластера изменится на «Доступен».
В кластере PG-lab создайте базу данных с названием pg_1. Это исходная база данных с таблицами для миграции.
В кластере PG-lab создайте базу данных с названием pg_2. Это целевая база данных, куда нужно перенести таблицы из pg_1.
Откройте карточку кластера PG-lab. Информация из него понадобится на следующих этапах.
На этом шаге вы создадите ключи для настройки доступа к кластеру Managed PostgreSQL® и к инстансу Managed Trino.
Перейдите в Управление → Secret Management.
Создайте секрет для доступа к кластеру PG-lab:
Нажмите Добавить секрет.
В поле Путь введите postgres-access-key.
В блоке Значение секрета выберите Стандартый режим. В качестве значения введите пароль из карточки кластера PG-lab.
Нажмите Создать.
Создайте секрет для доступа к инстансу Managed Trino:
Нажмите Добавить секрет.
В поле Путь введите dp-labs-access-key.
В блоке Значение секрета выберите Стандартый режим и задайте пароль.
Нажмите Создать.
На этом шаге вы создадите два каталога Managed Trino.
Перейдите в Платформа данных → Managed Trino.
Откройте раздел Каталоги.
Нажмите Создать и выберите Каталог.
В блоке Общие параметры в поле Название введите pg_1.
В блоке Настройки каталога заполните поля следующими значениями:
Коннектор — postgresql.
Хост — внутренний IP, указанный в карточке кластера PG-lab.
Порт — порт, указанный в карточке кластера PG-lab.
Название базы данных — pg_1.
Логин — логин, указанный в карточке кластера PG-lab.
Пароль — выберите секрет postgres-access-key.
Нажмите Создать.
Создайте второй каталог: нажмите Создать и выберите Каталог.
В блоке Общие параметры введите Название — pg_2.
В блоке Настройки каталога заполните поля следующими значениями:
Коннектор — postgresql.
Хост — внутренний IP, указанный в карточке кластера PG-lab.
Порт — порт, указанный в карточке кластера PG-lab.
Название базы данных — pg_2.
Логин — логин, указанный в карточке кластера PG-lab.
Пароль — выберите секрет postgres-access-key.
Нажмите Создать.
На этом шаге вы создадите инстанс Managed Trino и подключитесь к нему с помощью JDBC-клиента.
Перейдите в раздел Инстансы.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — trino-instance-migration.
Кластер — db-labs.
В блоке Конфигурация заполните поля следующими значениями:
Версия — 0.1.7.
Режим — Основной.
Вычислительные ресурсы — 4 vCPU 4 / RAM 16.
Количество нод — 3. Чтобы задать количество нод, отключите опцию Автомасштабирование.
В блоке Настройки каталога выберите каталоги pg_1 и pg_2.
Нажмите Продолжить.
В блоке Сетевые настройки заполните поля следующими значениями:
Зона доступности — зона доступности, для которой создан SNAT-шлюз.
Подсеть — подсеть с DNS-сервером, в которой расположен инстанс Managed Metastore.
Подключить публичный хост — активируйте опцию.
Пользователь — имя пользователя, например user1.
Пароль — dp-labs-access-key.
Нажмите Создать.
Дождитесь, пока статус инстанса Managed Trino изменится на «Готов».
На этом шаге вы выполните миграцию данных с помощью SQL-запросов, отправленных через приложение DBeaver.
В приложении DBeaver в панели сверху нажмите Редактор SQL → Новый редактор SQL.
Создайте схему для базы данных pg_1:
CREATE SCHEMA IF NOT EXISTS pg_1.lab_migration
Создайте схему для базы данных pg_2:
CREATE SCHEMA IF NOT EXISTS pg_2.lab_migration
Создайте таблицу в базе данных pg_1:
CREATE TABLE IF NOT EXISTS pg_1.lab_migration.users (id_user INT, email VARCHAR(255))
Заполните таблицу:
INSERT INTO pg_1.lab_migration.users values (1, 'one@example.com'), (2, 'two@example.com'), (3, 'three@example.com')
Выполните миграцию таблицы в базу данных pg_2:
CREATE TABLE pg_2.lab_migration.users ASSELECT * FROM pg_1.lab_migration.users;
На этом шаге вы выполните миграцию данных с помощью Python-скрипта.
В командной строке выполните:
python3 -m venv venvsource venv/bin/activatepip install trino
Скопируйте скрипт, введите необходимые значения и сохраните файл с названием trino_pg_migration.py:
Запустите скрипт:
python trino_pg_migration.py
На этом шаге вы проверите результат с помощью SQL-запросов, отправленных через приложение DBeaver.
Проверьте, что таблица создана:
SHOW TABLES IN pg_2.lab_migration
Проверьте количество строк в таблице:
SELECT COUNT(*) FROM pg_2.lab_migration.users
Проверьте содержимое:
SELECT * FROM pg_2.lab_migration.users
Вы создали базы данных Managed PostgreSQL®, разместили в них таблицы с данными и подключили к инстансу Managed Trino. Вы научились переносить данные между таблицами двумя способами: с помощью Python-скрипта и запросов, отправленных через JDBC-клиент DBeaver.