E.1. Postgres Pro Enterprise 13.21.1

Дата выпуска: 2025-06-02

E.1.1. Обзор

Важно

Последний выпуск Postgres Pro 13 запланирован на ноябрь 2025 года. Дальнейшие обновления (включая устранение уязвимостей (CVE) и ошибок) для этой версии перестанут выпускаться с 1 декабря 2025 года. Если вы используете версию 13, рекомендуется выполнить обновление до актуальной основной версии не позднее 30 ноября 2025 года.

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

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

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

  • Добавлены следующие изменения в реализацию crash_info:

    • Добавлена обработка сигналов SIGILL в процесс обработки crash_info.

    • В выходные файлы crash_info добавлены новые сведения: время запуска процесса и текст запроса при планировании.

    • Исправлены некорректные имена функций в первых 2-3 строках трассировки стека crash_info.

    • Исправлено возможное усечение данных в конце файлов выгрузки SQL-запросов. Ранее переполнение буфера при выгрузке SQL-запроса могло приводить к тому, что записывались не все данные, в результате чего в конце файлов, создаваемых crash_info, могли содержаться усечённые данные.

    • Исправлена обработка сигналов о сбоях (отправленных командой kill) обслуживающими процессами. Ранее с первым сигналом информация crash_info отправлялась в журнал, но процесс продолжал работу без создания дампа памяти, даже если он был настроен. И только со вторым сигналом обслуживающий процесс завершался и создавался дамп памяти так, как ожидалось.

  • Исправлены следующие проблемы для CFS:

    • Обеспечена совместимость CFS с командами ALTER TABLESPACE ... SET/RESET.

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

  • Исправлены следующие ошибки, связанные с автономными транзакциями:

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

    • Исправлена ошибка, при которой временные таблицы пропадали из родительской транзакции при откате автономной транзакции.

    • Исправлена проблема, из-за которой столбец xact_start представления pg_stat_activity оказывался пустым для обслуживающих процессов, выполняющих автономные транзакции.

  • Исправлена проблема с недостающей статистикой об очистке при использовании нескольких рабочих процессов очистки индексов.

  • Устранена проблема, при которой процесс контрольной точки мог зависать, постоянно выдавая ошибку «invalid memory alloc request size» (недопустимый запрошенный размер памяти). Проблема могла возникать, если для параметра конфигурации shared_buffers было задано огромное значение, в результате чего процесс контрольной точки мог запрашивать выделение памяти, превышающее допустимое ограничение.

  • Исправлено некорректное использование циклических блокировок в процессе автоматического исправления страниц.

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

  • Добавлено расширение pg_failover_slots в виде отдельного пакета. Оно предназначено для автоматического создания и синхронизации слотов логической репликации на физических репликах.

  • Добавлена утилита pgpro_datactl для управления файлами данных Postgres Pro, которая включает в себя модуль распаковки и анализа файлов CFS.

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

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

  • Экспериментальное расширение vops признано устаревшим.

  • Удалён параметр --tune программы pg-setup. Вместо этого используйте новую утилиту pgpro_tune.

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

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

    • Исправлено потенциальное зависание узлов во время навёрстывания при попытке обработать прерванные DDL-транзакции в кластере с тремя или более узлами.

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

    • Увеличена длина строк вывода EXPLAIN для соответствия условиям фильтров некоторых запросов к каталогам Oracle. Новое значение — 3000 символов.

    • Устранён сбой, который мог возникать, если для несуществующих столбцов были определены параметры. Если у таблицы Oracle было меньше столбцов, чем у таблицы Postgres Pro, и для одного из таких дополнительных столбцов был определён параметр, oracle_fdw при записи данных выходил за границы массива, что приводило к повреждению памяти и сбоям. Теперь параметры для таких столбцов игнорируются.

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

    • Добавлены новые типы объектов: CATALOG RELATION и CATALOG FUNCTION.

    • Добавлены новые поля событий: UUID, XID и VXID. Теперь можно определить событие по его UUID и идентификатору транзакции (если применимо).

    • Исправлено поведение параметра конфигурации pg_proaudit.log_catalog_access, теперь оно отражает новую логику регистрации событий для объектов системного каталога.

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

    • Исправлена проблема, из-за которой тип события DISCONNECT не регистрировался для пользователя, который являлся членом роли, заданной в правиле регистрации события.

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

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

    • Исправлено поведение процесса logger при удалении роли из параллельного сеанса, настроенного в правиле регистрации событий.

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

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

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

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

    • Стабилизирована работа команды checkdb на удалённом сервере.

    • Повышена стабильность восстановления с валидацией на момент времени (PITR).

    • Исправлена ошибка «SignatureDoesNotMatch» (несовпадение сигнатуры), которая могла возникать во время соединения с S3-хранилищем VK Cloud.

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

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

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

    • Добавлена возможность определять режим сбора информации о размере отношений глобально при помощи параметра конфигурации pgpro_pwr.relsize_collect_mode расширения или для сервера при помощи функции set_server_size_sampling.

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

    • Добавлена возможность предварительного просмотра параметров хранения таблиц и индексов в разделе отчёта «Schema object statistics» (Статистика по объектам схемы).

  • Расширение pgpro_scheduler обновлено до версии 2.11.2. В ней исправлена проблема, из-за которой могли дополнительно запускаться повторяющиеся задачи, если дни недели задавались в формате crontab. Теперь расширение проверяет все временные параметры задач и запускает их в указанное время.

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

    • Улучшена трассировка сеансов, которая теперь предоставляет больше информации. В частности, новый атрибут фильтра time_info управляет включением дополнительной информации в вывод трассировки сеансов, а новый параметр конфигурации pgpro_stats.trace_query_text_size позволяет ограничивать размер запроса в таком выводе.

    • Имена атрибутов фильтра explain_* трассировщика сеансов приведены в соответствие с именами параметров конфигурации трассировки сеансов.

    • Изменён формат файла выгрузки статистики и соответствующие процедуры сохранения/загрузки.

    • Реализовано отключение функциональности трассировки сеансов, если не указаны соответствующие фильтры.

    • Запрещено одновременно указывать pgpro_stats и pg_stat_statements в shared_preload_libraries. Если они указаны вместе, сервер баз данных не запустится.

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

    • Исправлена проблема, из-за которой переменные GUC могли перезаписываться при использовании параллельных рабочих процессов.

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

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

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

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

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

Если вы хотите сохранить существующее представление карт видимости в pageinspect при миграции на текущую основную версию Postgres Pro Enterprise с использованием pg_upgrade, выполните команду VACUUM, прежде чем начинать обновление.

Начиная с Postgres Pro Enterprise 13.13.1, права ролей с атрибутом CREATEROLE ограничены, и для изменения свойств других ролей требуется наличие права ADMIN OPTION.

Настоятельно не рекомендуется обновлять кластер с 32-битными идентификаторами транзакций на версии Postgres Pro Enterprise ниже 13.12.2 при наличии мультитранзакций в базе данных, поскольку это может вызвать повреждение данных.

При обновлении до версии Postgres Pro Enterprise 13.11.1 и выше обязательно обновите pg_probackup до версии 2.6.4 или выше, поскольку более ранние версии pg_probackup несовместимы с этими версиями Postgres Pro Enterprise.

Если вы ранее мигрировали на Postgres Pro Enterprise версии 13.3.1 или ниже, обязательно перестройте индексы GIN, выполнив команду REINDEX.

Если вы используете PTRACK в процедуре резервного копирования, реализуемой c помощью утилиты pg_probackup, и обновляетесь с Postgres Pro Enterprise версии 13.2.2 или ниже, сделайте полную резервную копию базы данных после обновления.

Если в вашей инсталляции Postgres Pro Enterprise 13.2.1 имеются сжатые табличные пространства, созданные без явного выбора алгоритма pglz, произведите обновление следующим образом. До обновления выгрузите полный дамп, используя pg_dumpall. Обновите Postgres Pro Enterprise, пересоздайте кластер баз данных и восстановите все данные из дампа. Затем вы можете создать табличные пространства CFS по прежней схеме.

Если вы уже обновили инсталляцию Postgres Pro Enterprise 13.2.1 с табличными пространствами CFS и потеряли доступ к сжатым данным, обратитесь к службе поддержки.

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