E.1. Postgres Pro Enterprise 16.11.1 #

Дата выпуска: 2025-12-22

E.1.1. Обзор #

Этот выпуск основан на PostgreSQL 16.11 и Postgres Pro Enterprise 16.10.2. Все изменения, унаследованные от PostgreSQL 16.11, описаны в Замечаниях к выпуску PostgreSQL 16.11. По сравнению с Postgres Pro Enterprise 16.10.2 эта версия также содержит следующие изменения:

  • Улучшен механизм поиска схожих строк типов mchar и mvarchar с использованием оператора LIKE. Оптимизированное сравнение без учёта регистра значительно ускоряет поиск. Может быть полезно для 1C.

  • Улучшена производительность сбора информации о сбоях сервера за счёт оптимизации служебных функций и команд.

  • Улучшена производительность для случаев, когда приоритизация ресурсов выключена.

  • Реализовано обязательное маскирование паролей в журнале сервера для защиты конфиденциальных данных.

  • Добавлен параметр конфигурации enable_sorted_merge_join, который включает или отключает использование планировщиком соединений слиянием в планах с сортировкой.

  • Добавлен параметр конфигурации max_wal_segments_prealloc, который позволяет фоновому процессу записи заранее создавать сегменты WAL в ходе своего основного цикла работы, тем самым снижая нагрузку на обслуживающие процессы. Параметр задаёт максимальное количество таких сегментов.

  • Ограничено максимальное количество присваиваемых идентификаторов транзакций, теперь оно равняется 263. Кроме того, при достижении порогового значения в 10 миллионов XID теперь выводится предупреждение. При достижении максимального количества XID новые транзакции перестают запускаться, но запросы только на чтение продолжают выполняться.

  • Реализованы следующие исправления и усовершенствования для CFS:

    • Добавлен параметр конфигурации cfs_compression, позволяющий временно отключать сжатие в CFS, что ускоряет миграцию больших сжатых таблиц.

    • Устранена проблема CFS со сжатием файлов отношений, в которых OID превышал значение INT32_MAX. Проблема возникала при переносе таблиц в табличное пространство CFS.

  • Исправлена проблема с процессом очистки, который мог бесконечно ожидать заморозки страницы из-за события ожидания BufferPin. Проблема могла возникать при наличии буфера, постоянно используемого обслуживающими процессами.

  • Исправлена ошибка некорректного вычисления внутреннего порогового значения vacuum_freeze_min_age, которое должно равняться половине значения autovacuum_freeze_max_age. Ранее эта ошибка могла приводить к некорректному внутреннему вычислению параметров автоочистки, и, как следствие, лишним запускам очистки.

  • Добавлены новые значения переменной окружения PGPRO_TUNE, используемой initdb.

  • Добавлено расширение auto_dump. Это расширение собирает данные о длительных и проблемных запросах и создаёт файлы с информацией, необходимой для их воспроизведения и устранения неполадок.

  • Добавлена утилита ldap2pg, которая автоматизирует процесс создания, изменения и удаления ролей и пользователей Postgres Pro из корпоративного каталога.

  • Добавлено расширение pg_trgm_mchar, которое обеспечивает быстрый поиск cхожих строк типов mchar и mvarchar на основе триграмм. Это расширение также обеспечивает поддержку GIN-индексов для типов mchar и mvarchar. Может быть полезно для 1C.

  • Добавлено расширение pgpro_planner, которое предоставляет преобразования и оптимизации запросов для создания эффективных планов выполнения запросов и повышения производительности.

  • Добавлено расширение pgpro_cpumeter, которое предоставляет доступ к новой системной функции мониторинга использования процессора. Функция pgpro_cpumeter непрерывно собирает и записывает информацию о ядрах процессора, используемых процессами сервера Postgres Pro.

  • Обновлён модуль aqo, чтобы устранить проблему, из-за которой функция aqo_cleanup не удаляла данные в основном режиме.

  • Обновлено решение BiHA. Включены следующие оптимизации и исправления:

    • Устранена проблема потери лидера при неинкрементальном обновлении BiHA-кластера с Postgres Pro Enterprise версии 16.8 или ниже до 16.10.

    • Устранена ошибка, которая возникала, когда значение MIN параметра конфигурации synchronous_standby_names было выше 0, а текущее число синхронных реплик превышало значение число_синхронных. Это могло вызвать зависание транзакций в случае зависания репликации.

    • Устранена ошибка, при которой функции biha.add_to_ssn, biha.remove_from_ssn и biha.set_ssn меняли список синхронных ведомых в параметре synchronous_standby_names только на лидере.

    • Устранена ошибка, при которой выполнение команды bihactl init --convert завершалось с ошибкой, если в экземпляре Postgres Pro Enterprise был настроен pg_proaudit.

    • Устранена проблема множественных сообщений об ошибках, вызванных тем, что большие сообщения о контроле состояния могли не поместиться в буфер разделяемой памяти. Проблема решена уменьшением размера сообщений о контроле состояния, записываемых в WAL.

    • Устранены утечки памяти, вызванные некорректной обработкой ошибок.

    • Устранены лишние проверки при выделении памяти.

  • Обновлено расширение multimaster. Включены следующие исправления:

    • Устранена проблема, из-за которой multimaster возвращал ошибку при выполнении транзакций на чтение и запись, содержавших запросы к сторонним таблицам postgres_fdw. Основная причина ошибки была в том, что postgres_fdw не поддерживает транзакции с двухфазной фиксацией, которые использует multimaster. Для решения проблемы был реализован параметр конфигурации postgres_fdw.read_only_transactions. Если параметр имеет значение on, включается возможность выполнять запросы на чтение к сторонним таблицам в транзакциях на чтение и запись, что обеспечивает стабильную работу multimaster и postgres_fdw.

    • Устранена проблема возможной задержки при фиксации транзакций вследствие ошибки в логике обмена сообщениями с информацией о применении транзакций на узлах.

  • Модуль orafce обновлён до версии 4.16.3.

  • Обновлён модуль pageinspect. В новой версии исправлена ошибка функции page_header, которая выводила некорректную информацию для страниц double xmax и некоторых страниц индексов. В частности, была перепутана последовательность столбцов, и значение prune_xid выводилось в столбце xid_base. Теперь информация выводится корректно.

  • Утилита pg_filedump обновлена до версии 18.0.

  • Модуль pg_hint_plan обновлён до версии 1.6.2, чтобы перечитывать строки с указаниями, если указания были добавлены вне стандартного планировщика. Эта функциональность необходима, чтобы обеспечить совместимость с расширением pgpro_multiplan при работе с планами, которые основаны на наборах указаний.

  • Расширение pg_portal_modify обновлено до версии 0.3.6.

  • Обновлено расширение pg_proaudit. Включены следующие исправления и усовершенствования:

    • Добавлена поддержка регистрации следующих типов событий: ANALYZE, DISCARD ALL, DISCARD PLANS, DISCARD SEQUENCES, DISCARD TEMP (для временных таблиц), CHECKPOINT, FETCH и MOVE.

    • Добавлен новый класс событий MISC. Этот класс позволяет регистрировать все события (включая перечисленные выше), не относящиеся к другим классам.

    • Добавлен новый метод регистрации событий безопасности. Теперь события безопасности в формате CEF можно не только записывать в отдельный файл, но и передавать в syslog.

    • Добавлено новое поле в журнал событий: название приложения. Теперь записи о событиях AUTHENTICATE содержат не только параметры подключения, но и название инициирующего приложения.

    • Исправлена проблема, из-за которой pg_proaudit не регистрировал события безопасности в файл CEF.

    • Исправлена проблема, из-за которой расширение pg_proaudit не регистрировало события для команды INSERT после CREATE в анонимных блоках кода (команда DO) и хранимых процедурах/функциях.

    • Исправлена ошибка, приводившая к чрезмерной нагрузке на ядро процессора из-за сбоя ротации журналов в pg_proaudit.

  • Приложение pg_probackup обновлено до версии 2.8.11 Enterprise, в которой добавлена новая функциональность, улучшена производительность и исправлены некоторые ошибки:

    • Обеспечена поддержка Postgres Pro Enterprise 18.

    • Обеспечена поддержка прозрачного защитного преобразования данных (TDE). Теперь в выводе версии pg_probackup отображается отметка о поддержке TDE.

    • Добавлено сохранение хоста, с которого была выполнена резервная копия, в backup.control и его отображение в выводе команды show.

    • Улучшено поведение при восстановлении с носителей, доступных только для чтения, включая более информативные предупреждения.

    • Для операций archive-push и archive-get в удалённом режиме добавлено игнорирование сигналов SIGQUIT для предотвращения дампа памяти вспомогательных программ при остановке сервера.

    • Добавлена проверка соответствия номера порта в PGDATA и в параметре --pgport. Также добавлен флаг --force, чтобы выполнять резервное копирование, даже если эти значения не совпадают.

    • Исправлена обработка внешних табличных пространств при инкрементальном восстановлении. При использовании флага --force их содержимое больше не перезаписывается.

    • Исправлена проблема удержания слота репликации командой backup после успешного завершения.

    • Исправлен конфликт идентификаторов для параметра --wal-tree путём добавления проверки уникальности.

    • Исправлен порядок отображения рассчитанного и ожидаемого значений контрольных сумм в предупреждениях.

  • Модуль pg_repack обновлён до версии 1.5.3.

  • Обновлён плагин pgpro_bindump. В новой версии исправлена проверка уровня сжатия. Ранее применялся одинаковый диапазон уровней сжатия независимо от выбранного алгоритма.

  • Утилита pgpro_controldata обновлена до версии 18.1.0.

  • Утилита pgpro_datactl обновлена до версии 1.2.

  • Расширение pgpro_multiplan обновлено до версии 1.4, в которую включены следующие исправления и усовершенствования:

    • Улучшена стабильность режима auto_approve_plans для перепланирования запросов в реальном времени с включённым параметром pgpro_multiplan.auto_capturing.

    • Добавлена новая функция pgpro_multiplan_remove_template, которая удаляет указанный план с типом template из постоянного хранилища pgpro_multiplan.

    • Добавлена новая функция pgpro_multiplan_template_hintset_update, которая заменяет сгенерированный набор указаний для плана с типом template на указанный пользовательский набор указаний.

    • Улучшены сообщения для ошибок, которые могут возникнуть при регистрации запросов и заморозке планов запросов.

    • Изменена логика указания значений параметра pgpro_multiplan.wildcards. Теперь этот параметр принимает одно регулярное выражение вместо списка из нескольких выражений, разделённых запятыми.

    • Исправлена ошибка, из-за которой план с типом template не идентифицировался и не применялся при изменении констант в соответствующем запросе.

    • Устранена проблема в pgpro_multiplan, которая могла приводить к сбою сервера при повторном выполнении того же запроса из-за некорректной обработки значения sample_string.

  • Модуль pgpro_pwr обновлён до версии 4.12, в которой улучшена производительность и исправлены некоторые ошибки. Основные изменения перечислены ниже:

    • Улучшено отслеживание времени функцией take_sample.

    • Добавлена поддержка pgpro_stats 1.10.

    • Добавлена возможность исключать из дампов строки подключения к серверу.

    • В отчёты добавлена доступная статистика по точкам перезапуска.

  • Расширение pgpro_result_cache обновлено до версии 1.1.1, в которую были включены следующие усовершенствования и исправления:

    • Реализовано автоматическое аннулирование кеша на уровне кластера с помощью файлов WAL. Оно может быть включено при помощи параметров pgpro_result_cache.consistent и pgpro_result_cache.wal.

    • Добавлена возможность задавать параметр pgpro_result_cache.max_memory_size во время выполнения при помощи команды ALTER SYSTEM.

    • Добавлена поддержка нового указания no_result_cache, которое позволяет исключать из кеширования отдельные запросы.

    • Добавлены два необязательных аргумента limit и offset в указание result_cache. Эти аргументы позволяют ограничивать количество строк, возвращаемых из кешированных наборов результатов, и пропускать определённые строки перед возвращением результата.

    • Устранена проблема, которая могла возникнуть в pgpro_result_cache при кешировании большого количества простых запросов, путём изменения алгоритма для хранения кешированных результатов.

    • Устранена ошибка сегментации, которая могла возникнуть при перезагрузке файла конфигурации после того, как для параметра pgpro_result_cache.consistent было установлено значение on.

  • Устранена проблема в pgpro_scheduler, при которой в служебную таблицу, связанную с функцией get_log(), некорректно записывались значения временной метки. Теперь значения NULL корректно записываются как отсутствие данных.

  • Приложение pgpro_stats обновлено до версии 1.10, в которой были исправлены некоторые ошибки и появились новые возможности:

    • В представления pgpro_stats_statements и pgpro_stats_totals включены новые поля, добавленные в pg_stats_statements в Postgres Pro 18. Также были обновлены соответствующие функции.

    • Добавлена функция pgpro_stats_statements_filtered, которая фильтрует статистику, аналогичную доступной в представлении pgpro_stats_statements по одному или нескольким полям: userid, dbid, queryid и planid. Вызов этой функции работает быстрее, чем запрос к представлению pgpro_stats_statements с указанием соответствующих значений этих полей.

    • Улучшено поведение pgpro_stats аналогично pg_stat_statements. Включены следующие изменения:

      • Добавлена возможность параметризации значений SET. Это позволяет сократить раздувание, которое возникает из-за операторов SET с разными константами.

      • Возможность параметризации списков констант.

    • Устранена проблема, которая могла возникать, когда в pgpro_stats дополнительные метрики изменялись «на лету». Теперь при каждом изменении дополнительных метрик требуется перезапуск сервера.

  • Пакет pgpro-orautl обновлён до версии 2.1.

  • Расширение pgvector обновлено до версии 0.8.1.

  • Расширение pldebugger обновлено до версии 1.1.6.

  • Модуль pljava обновлён до версии 1.6.10.

  • Расширение plpgsql_check обновлено до версии 2.8.5.

  • Обновлён модуль rum. Исправлена ошибка обновления модуля, которая возникала из-за того, что в его сборочном файле была указана некорректная переменная.

  • Расширение tds_fdw обновлено до версии 2.0.5.

  • Обновлено расширение utl_mail, чтобы устранить проблему с некорректной обработкой некоторых форматов адресов электронной почты. Теперь ряд основных форматов, включая root@localhost, обрабатывается корректно.

  • Улучшены сообщения в sr_plan для ошибок, которые могут возникнуть при регистрации запросов и заморозке планов запросов.

  • Отключён online_analyze. Не рекомендуется использовать этот модуль с современными версиями . Однако при необходимости его можно включить.

E.1.2. Миграция на версию 16.11.1 #

Если вы производите обновление выпуска Postgres Pro Enterprise, базирующегося на той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.

Важно

Чтобы обновить BiHA-кластер с Postgres Pro Enterprise версии 16.10 или ниже до Postgres Pro Enterprise версии 16.11, обратитесь к инструкциям по миграции BiHA.

Чтобы обновить расширение citus с версии 12.1 до версии 13.0, обратитесь к инструкциям по обновлению.

Версия ABI может измениться в корректирующем выпуске Postgres Pro. В таком случае при попытке запустить расширение возникает ошибка ABI mismatch (Несоответствие ABI), поэтому обязательно установите новую версию расширения, поставляемую с новым выпуском Postgres Pro, или перекомпилируйте стороннее расширение, чтобы использовать его с текущей версией Postgres Pro.

При обновлении отказоустойчивого кластера с Postgres Pro Enterprise версии 16.3.x или ниже сначала отключите автоматическое аварийное переключение узлов, если оно было включено, и обновите все резервные серверы, затем обновите ведущий сервер, повысьте резервный сервер до ведущего и перезапустите бывший ведущий сервер (возможно, с использованием pg_rewind).

Если вы создаёте резервные копии с помощью pg_probackup и ранее обновили его до версии 2.8.0 Enterprise или 2.8.1 Enterprise, обязательно обновите его до версии 2.8.2 Enterprise или выше и сделайте полную резервную копию базы данных после обновления, поскольку резервные копии, созданные с использованием этих версий, могут быть повреждены. Чтобы проверить, повреждены ли резервные копии, созданные с помощью версий 2.8.0 или 2.8.1, можно использовать версию 2.8.2.

Для перехода с PostgreSQL, а также с выпуска Postgres Pro Standard или Postgres Pro Enterprise, базирующегося на предыдущей основной версии PostgreSQL, обратитесь к инструкциям по миграции на версию 16.