Облачная платформаEvolution

Миграция PostgreSQL® с помощью Managed Trino


С помощью этого руководства вы выполните миграцию данных между двумя базами данных PostgreSQL с помощью Managed Trino. Вы создадите таблицу-источник и целевую таблицу и научитесь переносить данные между ними с помощью JDBC-клиента DBeaver и Python-скрипта.

Вы будете использовать следующие сервисы:

  • Managed Trino — сервис, который предоставляет массивно-параллельный аналитический SQL-движок для обработки больших объемов данных из разных источников.

  • Managed PostgreSQL — управляемая база данных PostgreSQL.

Шаги:

Перед началом работы

Располагайте создаваемые сущности в одной VPC и используйте единые сетевые параметры.

  1. Перейдите в раздел Evolution.

  2. Создайте публичный SNAT-шлюз, чтобы обеспечить инстансу доступ в интернет и связь с внешними источниками.

  3. Создайте кластер Data Platform с названием dp-labs.

1. Создайте базы данных Managed PostgreSQL®

На этом шаге вы подготовите базы данных Managed PostgreSQL®.

  1. Дождитесь, когда статус кластера изменится на «Доступен».

  2. В кластере PG-lab создайте базу данных с названием pg_1. Это исходная база данных с таблицами для миграции.

  3. В кластере PG-lab создайте базу данных с названием pg_2. Это целевая база данных, куда нужно перенести таблицы из pg_1.

  4. Откройте карточку кластера PG-lab. Информация из него понадобится на следующих этапах.

2. Создайте ключи доступа

На этом шаге вы создадите ключи для настройки доступа к кластеру Managed PostgreSQL® и к инстансу Managed Trino.

  1. Перейдите в Управление → Secret Management.

  2. Создайте секрет для доступа к кластеру PG-lab:

    1. Нажмите Добавить секрет.

    2. В поле Путь введите postgres-access-key.

    3. В блоке Значение секрета выберите Стандартый режим. В качестве значения введите пароль из карточки кластера PG-lab.

    4. Нажмите Создать.

  3. Создайте секрет для доступа к инстансу Managed Trino:

    1. Нажмите Добавить секрет.

    2. В поле Путь введите dp-labs-access-key.

    3. В блоке Значение секрета выберите Стандартый режим и задайте пароль.

    4. Нажмите Создать.

3. Создайте каталоги Managed Trino

На этом шаге вы создадите два каталога Managed Trino.

  1. Перейдите в Платформа данных → Managed Trino.

  2. Откройте раздел Каталоги.

  3. Нажмите Создать и выберите Каталог.

  4. В блоке Общие параметры в поле Название введите pg_1.

  5. В блоке Настройки каталога заполните поля следующими значениями:

    • Коннекторpostgresql.

    • Хост — внутренний IP, указанный в карточке кластера PG-lab.

    • Порт — порт, указанный в карточке кластера PG-lab.

    • Название базы данныхpg_1.

    • Логин — логин, указанный в карточке кластера PG-lab.

    • Пароль — выберите секрет postgres-access-key.

  6. Нажмите Создать.

  7. Создайте второй каталог: нажмите Создать и выберите Каталог.

  8. В блоке Общие параметры введите Названиеpg_2.

  9. В блоке Настройки каталога заполните поля следующими значениями:

    • Коннекторpostgresql.

    • Хост — внутренний IP, указанный в карточке кластера PG-lab.

    • Порт — порт, указанный в карточке кластера PG-lab.

    • Название базы данныхpg_2.

    • Логин — логин, указанный в карточке кластера PG-lab.

    • Пароль — выберите секрет postgres-access-key.

  10. Нажмите Создать.

4. Создайте инстанс Managed Trino

На этом шаге вы создадите инстанс Managed Trino и подключитесь к нему с помощью JDBC-клиента.

  1. Перейдите в раздел Инстансы.

  2. Нажмите Создать инстанс.

  3. В блоке Общие параметры заполните поля следующими значениями:

    • Названиеtrino-instance-migration.

    • Кластерdb-labs.

  4. В блоке Конфигурация заполните поля следующими значениями:

    • Версия0.1.7.

    • РежимОсновной.

    • Вычислительные ресурсы4 vCPU 4 / RAM 16.

    • Количество нод3. Чтобы задать количество нод, отключите опцию Автомасштабирование.

  5. В блоке Настройки каталога выберите каталоги pg_1 и pg_2.

  6. Нажмите Продолжить.

  7. В блоке Сетевые настройки заполните поля следующими значениями:

    • Зона доступностизона доступности, для которой создан SNAT-шлюз.

    • Подсеть — подсеть с DNS-сервером, в которой расположен инстанс Managed Metastore.

    • Подключить публичный хост — активируйте опцию.

    • Пользователь — имя пользователя, например user1.

    • Парольdp-labs-access-key.

  8. Нажмите Создать.

  9. Дождитесь, пока статус инстанса Managed Trino изменится на «Готов».

5. Выполните миграцию с помощью DBeaver

На этом шаге вы выполните миграцию данных с помощью SQL-запросов, отправленных через приложение DBeaver.

  1. В приложении DBeaver в панели сверху нажмите Редактор SQL → Новый редактор SQL.

  2. Создайте схему для базы данных pg_1:

    CREATE SCHEMA IF NOT EXISTS pg_1.lab_migration
  3. Создайте схему для базы данных pg_2:

    CREATE SCHEMA IF NOT EXISTS pg_2.lab_migration
  4. Создайте таблицу в базе данных pg_1:

    CREATE TABLE IF NOT EXISTS pg_1.lab_migration.users (id_user INT, email VARCHAR(255))
  5. Заполните таблицу:

    INSERT INTO pg_1.lab_migration.users values (1, 'one@example.com'), (2, 'two@example.com'), (3, 'three@example.com')
  6. Выполните миграцию таблицы в базу данных pg_2:

    CREATE TABLE pg_2.lab_migration.users AS
    SELECT * FROM pg_1.lab_migration.users;

6. Выполните миграцию с помощью Python-скрипта

На этом шаге вы выполните миграцию данных с помощью Python-скрипта.

  1. В командной строке выполните:

    python3 -m venv venv
    source venv/bin/activate
    pip install trino
  2. Скопируйте скрипт, введите необходимые значения и сохраните файл с названием trino_pg_migration.py:

  3. Запустите скрипт:

    python trino_pg_migration.py

7. Проверьте результат

На этом шаге вы проверите результат с помощью SQL-запросов, отправленных через приложение DBeaver.

  1. Проверьте, что таблица создана:

    SHOW TABLES IN pg_2.lab_migration
  2. Проверьте количество строк в таблице:

    SELECT COUNT(*) FROM pg_2.lab_migration.users
  3. Проверьте содержимое:

    SELECT * FROM pg_2.lab_migration.users

Результат

Вы создали базы данных Managed PostgreSQL®, разместили в них таблицы с данными и подключили к инстансу Managed Trino. Вы научились переносить данные между таблицами двумя способами: с помощью Python-скрипта и запросов, отправленных через JDBC-клиент DBeaver.