Рассмотрим типичную ситуацию: компания использует Oracle Database, в которой накоплены десятки терабайт данных. При попытке миграции на Postgres Pro возникают следующие проблемы:
-
длительное время переноса из-за большого объема данных;
-
высокая нагрузка на исходную систему и необходимость её непрерывной работы, несмотря на постоянные изменения в данных;
-
риск потери или повреждения данных: ошибки передачи, несоответствие типов данных и другие технические проблемы.
Для решения этих задач мы разработали ProGate, который должен существенно облегчить жизнь администраторам баз данных и ускорить переезд на Postgres Pro.

Что такое ProGate?
ProGate — это комплексное решение для миграции данных в Postgres Pro. Он состоит из нескольких специализированных утилит, которые покрывают все этапы миграции:
-
ProCopy — быстрая первоначальная загрузка данных;
-
ProSync — непрерывная синхронизация изменений (Change Data Capture — CDC);
-
ProCheck — контроль качества и целостности данных после миграции.
Давайте подробнее рассмотрим каждую из этих утилит.
Этап 1. Первоначальная загрузка данных с помощью ProCopy
ProCopy — это консольная утилита для быстрой первоначальной загрузки данных в Postgres Pro. Её задача — максимально быстро перенести большие объемы данных, в том числе не выключая систему-источник, чтобы минимизировать время простоя или задержку в работе приложений. В последних синтетических тестах нам удалось достигнуть производительности в 200–500 МБ/секунду, или до 41 ТБ/сутки по маршруту Oracle Database → Postgres Pro. А для маршрута PostgreSQL → Postgres Pro примерно 1 ГБ/сек.
Как это работает?
ProCopy написан на языке Go, что позволяет максимально эффективно использовать ресурсы сервера, работать параллельно и переносить базы данных любого размера.
Архитектурно ProCopy использует:
-
пул параллельных процессов чтения и записи;
-
встроенную шину данных для эффективного обмена информацией между процессами;
-
механизм обработки ошибок с возможностью повторной загрузки проблемных записей.
Пример использования ProCopy
Представим, что у вас есть таблица CUSTOMERS в Oracle Database, которая содержит миллиарды записей. С помощью ProCopy вы можете настроить параллельный перенос данных, указав количество процессов чтения/записи и размер батчей. Более того, вы можете исключить ненужные столбцы, изменить их названия или типы данных, и даже преобразовать NULL-значения прямо в процессе миграции.
Преимущества
-
Высокая скорость передачи данных.
-
Гибкость конфигурации (YAML/JSON).
-
Возможность возобновления работы с места остановки.
-
Поддержка сложных типов данных (LOB, XML, JSON и другие).

Этап 2. Синхронизация изменений с помощью ProSync (CDC)
ProSync — инструмент для непрерывного захвата изменений (CDC) из Oracle Database и их применения в Postgres Pro. Это позволяет обеспечить короткий downtime при миграции.
Как это работает?
Когда в базе данных Oracle происходят любые изменения, например добавление новой записи, изменение существующей или удаление данных, эти действия записываются в специальные журналы изменений (redo-логи) Oracle Database. ProSync постоянно следит за этими журналами и сразу же «видит» каждое изменение. Затем он берёт эти изменения и повторяет их в базе данных Postgres Pro.
Таким образом, данные в Postgres Pro всегда остаются актуальными и полностью совпадают с теми, что есть в Oracle Database. Это позволяет выполнять миграцию с минимальным техническим окном и без потери данных.
Реальный пример
Представьте банк, который не может позволить себе остановить систему даже на час. С помощью ProSync банк может постепенно переносить данные и приложения с Oracle Database на Postgres Pro, не останавливая работу исходной системы. Пользователи продолжат работать в Oracle Database, а все изменения в реальном времени будут синхронизироваться с новой базой данных на Postgres Pro. После полной синхронизации можно переключить приложения на новую систему с минимальным временем простоя.
Преимущества
-
Минимальная нагрузка на исходную СУБД.
-
Надежная обработка ошибок и мониторинг состояния репликации.
Этап 3. Проверка качества данных с помощью ProCheck
ProCheck — инструмент, который позволяет убедиться, что миграция прошла успешно, и данные в Postgres Pro полностью соответствуют данным в Oracle Database.
Как это работает?
ProCheck сравнивает таблицы, строки и столбцы между двумя базами данных. Он выявляет любые расхождения, ошибки преобразования, потери данных и предоставляет подробный отчёт.
Пример использования
После завершения миграции нужно проверить, совпадают ли финансовые балансы в Oracle Database и в новой системе на Postgres Pro. ProCheck автоматически проверит каждую запись и подтвердит, что все данные перенесены корректно.
Использование ProGate наиболее эффективно при:
-
миграции крупных баз данных (терабайты и выше);
-
необходимости минимального простоя (горячая миграция);
-
строгих требованиях к качеству и консистентности данных.
Возможные ограничения ProGate
Несмотря на все преимущества, важно помнить о возможных ограничениях:
-
Изменения схемы во время миграции, которые могут потребовать ручного вмешательства.
-
Пользовательские типы данных, требующие индивидуальной настройки или ручной обработки.
-
Таблицы без первичных ключей. Для ProSync желательно иметь уникальные ключи для корректной работы.

Публичный релиз ProGate запланирован на осень этого года. В ближайших планах:
-
графический интерфейс, backend и API;
-
добавление новых источников и таргетов (MS SQL Server, MySQL, Shardman).
В итоге ProGate решит одну из важнейших задач бизнеса — проведет безопасную и быструю миграцию данных из Oracle Database в Postgres Pro. Решение позволяет избежать длительных простоев, минимизировать риски потери или повреждения данных и обеспечить плавный переход на новую платформу.
Подробнее о технической стороне решения мы напишем после публичного релиза.
ссылка на оригинал статьи https://habr.com/ru/articles/935462/
Добавить комментарий