Postgres Professional представляет обновление платформы миграции и репликации данных — Postgres ProGate 1.3.0. Ключевые темы релиза: полноценная поддержка Postgres Pro Shardman в качестве приёмника с маршрутизацией по шардам, режим высокой доступности для prosync и комплекс улучшений безопасности.

Поддержка Postgres Pro Shardman в качестве приёмника
В релизе 1.3.0 появилась полноценная поддержка Postgres Pro Shardman как целевой СУБД — теперь она доступна как для разового переноса данных с помощью утилиты procopy, так и для непрерывной репликации через prosync.
Ключевое нововведение — маршрутизация строк по шардам: данные из таблицы-источника можно распределять между конкретными сегментами Shardman-кластера с помощью условий фильтрации, задаваемых в параметре dst_shard_filter_mapping. Например, строки можно разбить по остатку от деления числового поля на количество шардов (mod(ID, 2) = 0), направив каждую группу в соответствующий сегмент. Это позволяет гибко управлять распределением нагрузки уже на этапе миграции.
При работе с Shardman-источником prosync автоматически создаёт отдельные слоты репликации для глобальных таблиц и для шардированных/локальных таблиц в каждом сегменте, обеспечивая корректное разграничение потоков данных.
Режим высокой доступности для prosync
prosync — утилита для CDC-репликации (Change Data Capture) — получила поддержку отказоустойчивого режима запуска. В нём несколько экземпляров prosync с одинаковой конфигурацией образуют кластер: один узел выполняет роль лидера, остальные находятся в резерве.
Механика отказоустойчивости:
-
хартбиты — лидер каждые 5 секунд обновляет метку
leader_last_heartbeatв служебной БД; -
детектирование отказа — резервный узел следит за таблицей
prosync_ha_cluster_transfer_locks. Если лидер не обновлял хартбит дольше допустимого порога (heartbeat_period × heartbeat_max_errors), узел считается отказавшим; -
перехват лидерства — резервный узел атомарно захватывает лидерство через
UPDATE ... SET leader_uuid = @self WHERE leader_uuid IS NULLи продолжает репликацию с той точки, на которой остановился предыдущий лидер.
Для запуска в отказоустойчивом режиме команде prosync run передаётся флаг --ha. Мониторинг всех узлов кластера доступен через таблицы prosync_ha_cluster_nodes и prosync_ha_cluster_transfer_locks в служебной БД.
Стратегия разрешения конфликтов в prosync
В prosync добавлен параметр prosync_options.conflict_resolve_strategy, управляющий поведением при конфликтах первичного ключа при вставке строк в приёмник:
-
nothing— конфликтующая строка игнорируется (ON CONFLICT DO NOTHING); -
update— строка обновляется значениями из источника (ON CONFLICT ... DO UPDATE); -
fail— вставка выполняется без обработки конфликта, при его возникновении репликация завершается ошибкой.
Расширение поддержки источников
Список поддерживаемых СУБД-источников пополнился Oracle 11g. Теперь в procopy и prosync поддерживаются Oracle версий 11g, 12c, 18c и 19c. Дополнительно исправлены ошибки при миграции из Oracle Real Application Clusters (RAC) и при обратной миграции PostgreSQL → Oracle.
Улучшения безопасности
В этом релизе проведён комплекс мер по укреплению безопасности платформы.
Серверная часть:
-
минимальная длина пароля увеличена до 10 символов; число попыток ввода пароля ограничено четырьмя;
-
добавлена валидация email: его указание обязательно при создании и редактировании пользователя;
-
добавлены события безопасности в журнал аудита: logout и удаление пользователя;
-
после смены пароля пользователя администратором система потребует от пользователя смены пароля при следующем входе.
procheck:
-
добавлены аутентификация и события безопасности.
Другие улучшения
-
в утилите procheck автоматическое определение кодировок баз источника и приёмника для предотвращения расхождений данных; исправлено аварийное завершение при отсутствии геотипов Oracle; исправлена ошибка сравнения пользовательских типов (segmentation violation); исправлена обработка скрытых столбцов для типов XML и геометрии;
-
добавлена поддержка регистрозависимых идентификаторов на уровне сервера и клиента;
-
все утилиты платформы теперь поддерживают подстановку переменных окружения в конфигурационных файлах через шаблоны. Это упрощает управление конфигурацией в контейнерных и автоматизированных окружениях, где чувствительные параметры (пароли, адреса хостов) хранятся в переменных окружения, а не прописываются напрямую в файлах;
-
утилита procopy теперь выводит все ошибки маппинга сразу, а не останавливается на первой найденной — это упрощает диагностику конфигурации;
-
добавлены переключатели для работы с пустым паролем при редактировании подключений PostgreSQL и Oracle; добавлена возможность обновить подключение без повторного ввода пароля.
Обновление Postgres ProGate 1.3.0 уже доступно для установки. Подробная документация по переходу и описание всех изменений представлены по ссылке:
https://postgrespro.ru/docs/progate/current
Источник: habr.com