02 Data Transform · Продукты · Мигратор

O2PG Migrator — перенос схем и данных

Конвертация объектов базы, перенос больших объёмов пакетами и проверка того, что источник и приёмник совпали.

О продукте

O2PG Migrator — компонент семейства O2PG, отвечающий за перенос структур базы и данных из Oracle в PostgreSQL. Предназначен для сценариев, где требуется аккуратная конвертация объектов, сохранение бизнес-логики и минимизация простоя.

Возможности

  • автоматическая и полуавтоматическая конвертация схем;
  • перенос больших объёмов данных пакетами и потоком;
  • проверка целостности и отчётность о расхождениях;
  • интеграция с O2PG Proxy, чтобы приложения работали во время миграции.

Быстрый старт

Мигратор запускается отдельным контейнером или шагом CI/CD-пайплайна.

Рабочий поток

  1. scan — аудит схем и данных: объёмы, типы, зависимости.
  2. generate — генерация DDL и маппинг типов для целевой базы.
  3. pilot — перенос справочников и небольших таблиц.
  4. bulk — перенос основного объёма данных пакетами с проверками.
  5. delta & cut-over — синхронизация дельт и переключение.

Порядок важен: каждый шаг опирается на результат предыдущего, а scan определяет, какие таблицы попадут в пилот, а какие поедут пакетами.

Запуск

docker run --rm \
  -v /path/to/config:/app/config \
  cr.yandex/o2pg/migrator:latest \
  --config /app/config/migrator.yaml
            

Конфигурация

docker-compose.yml

services:
  migrator:
    image: cr.yandex/crpgr3sfcpa3lqqkvupn/o2pg-migrator:latest
    volumes:
      - ./migrator-config:/app/config
    environment:
      - MIGRATOR_CONFIG=/app/config/migrator.yaml
    restart: on-failure
            

migrator.yaml

source:
  type: oracle
  dsn: "oracle://user:pass@oracle-host:1521/ORCL"
target:
  type: postgres
  dsn: "postgresql://user:pass@pg-host:5432/postgres"
mapping:
  default_varchar_size: 4000
  clob_to_text: true
batch:
  size: 10000
  parallel_workers: 4
validation:
  enabled: true
  checksum: md5
            

Разделы конфигурации

Раздел Ключ Назначение
source dsn строка подключения к исходной базе Oracle
target dsn строка подключения к целевой базе PostgreSQL
mapping default_varchar_size длина VARCHAR по умолчанию при конвертации
mapping clob_to_text переносить CLOB в text
batch size число строк в одном пакете переноса
batch parallel_workers сколько таблиц переносится одновременно
validation enabled сверять источник и приёмник после переноса
validation checksum алгоритм контрольной суммы для сверки

Вопросы и ответы

Можно ли выполнить миграцию без простоя?

Полностью избежать простоя удаётся не всегда. Стандартный подход — минимизировать окно cut-over: перенести историю и основной объём данных заранее, затем синхронизировать дельты и переключиться. На практике окно измеряется часами, а не выходными.

Поддерживаются ли materialized views и сложные триггеры?

Материализованные представления и триггеры обрабатываются индивидуально: мигратор генерирует DDL и предлагает стратегию переноса, но сложные триггеры могут потребовать ручной доработки.

Как проверяется, что данные перенесены верно?

При validation.enabled: true мигратор считает контрольные суммы на источнике и приёмнике и сверяет их построчно по пакетам. Расхождения попадают в отчёт с указанием таблицы и диапазона строк.

Как получить лицензию?

Свяжитесь с нами — после проверки мы выдадим ключ для файла config.env, который используется контейнером.

Второй продукт семейства O2PG Connector — прокси-транслятор протокола Oracle, чтобы приложения не переписывать