Search
Write a publication
Pull to refresh
233.05
Postgres Professional
Разработчик СУБД Postgres Pro

Мы научились переносить базу данных с Oracle на Postgres Pro со скоростью 41 ТБ/сутки

Level of difficultyEasy
Reading time4 min
Views4.6K

Рассмотрим типичную ситуацию: компания использует 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. Решение позволяет избежать длительных простоев, минимизировать риски потери или повреждения данных и обеспечить плавный переход на новую платформу.

Подробнее о технической стороне решения мы напишем после публичного релиза. 

Tags:
Hubs:
+19
Comments9

Articles

Information

Website
www.postgrespro.ru
Registered
Founded
Employees
501–1,000 employees
Location
Россия
Representative
Иван Панченко