Проекты:

PostgreSQL вместо Oracle: миграция без простоя

Когда в 2023-м стоимость продления лицензий Oracle выросла почти вдвое, финтех-компания с платёжным оборотом 4 млрд ₽ в год решила уйти на open-source. Ключевое требование — ноль простоя: 6 000 транзакций в секунду обрабатываются круглосуточно. За базу выбрали PostgreSQL 15, а мы спланировали миграцию так, чтобы касса и мобильные платежи не заметили переключения.

1. Инвентаризация и совместимость

Скрипт ora2pg сформировал отчёт: 78 % объектов конвертируются автоматически; рисковые зоны — пакетные процедуры, UDT-типы и встроенные очереди AQ. Для них написали микросервисы на Go, а PL/SQL-бизнес-логику переписали на PL/pgSQL с использованием pipelined-функций Postgres.

2. Лабораторный стенд

На тестовом кластере Patroni+etcd развернули три ноды: мастер, синхронная и асинхронная реплики. Нагрузочный профиль JMeter обрушил 12 000 TPS, задержка осталась ниже 40 мс. Верифицировали секционирование по дате, autotune shared_buffers и work_mem; индексы b-tree заменили на BRIN для «холодных» партиций.

3. Логическая репликация

Чтобы избежать окна недоступности, подняли GoldenGate Extract на Oracle и Connector pglogical на Postgres. Поток изменений шел параллельно ETL-процессам, задержка репликации держалась в пределах 800 мс. Все DDL-ивенты ловились триггером и применялись в целевой схеме автоматически.

4. Cut-over-ночь

Переключение запланировали на 03:00:

freeze — бизнес-процессы перевели в read-only;
catch-up — дождались, пока лаг = 0;
DNS-failover — сервисы направились на новый кластер;
thaw — включили запись.

Время недоступности API составило 92 секунды, пользователи не заметили: мобильное приложение показывало вращающийся «экран ожидания».

5. Экономика и метрики

Лицензии Oracle (22 млн ₽/год) обнулили. Новый железный кластер дороже на 4 млн ₽, но TCO за три года снизился на 60 %. TPS выросла на 23 % благодаря более свежему CPU и агрессивному autovacuum. RPO = 0, RTO < 15 с проверены Chaos-инъекциями SIGKILL к мастеру Patroni.

6. Выводы

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