E.1. Postgres Pro Enterprise 13.20.1
Дата выпуска: 2025-03-05
E.1.1. Обзор
Важно
Последний выпуск Postgres Pro 13 запланирован на ноябрь 2025 года. Дальнейшие обновления (включая устранение уязвимостей (CVE) и ошибок) для этой версии перестанут выпускаться с 1 декабря 2025 года. Если вы используете версию 13, рекомендуется выполнить обновление до последней версии не позднее 30 ноября 2025 года.
Этот выпуск основан на PostgreSQL 13.20 и Postgres Pro Enterprise 13.18.1. Все изменения, унаследованные от PostgreSQL 13.20, описаны в Замечаниях к выпуску PostgreSQL 13.20. По сравнению с Postgres Pro Enterprise 13.18.1 эта версия также содержит следующие изменения:
В выходные файлы
crash_info
добавлены новые сведения, например текущий рабочий каталог, каталогPGDATA
и т. д.Добавлены повышенные требования безопасности для команды CREATE PROFILE. Теперь при использовании параметра
PASSWORD_REQUIRE_COMPLEX
пароли должны содержать символы из трёх разных групп. Также все буквы или их аналоги в языках без разделения на регистры (хинди, китайский и т.п.) в кодировке UTF-8 считаются строчными буквами.Реализованы следующие исправления и усовершенствования для CFS:
Изменено значение по умолчанию для параметра конфигурации cfs_gc_threshold с 50 до 30 процентов.
Исправлена проблема с блокировкой сборщика мусора CFS процессом резервного копирования. Если резервное копирование выполнялось слишком долго, оно могло привести к блокировкам, мешающим записи в сжатые табличные пространства. Теперь оба процесса блокируют только определённые файлы данных на короткое время, избегая взаимоблокировок.
Устранена проблема с отсутствующими настройками сжатия для табличных пространств на резервных серверах путём добавления нового типа записи WAL. Ранее резервные серверы не получали такие настройки сжатия, поскольку
ALTER TABLESPACE ... SET (compression=true)
не регистрировалась в WAL.Исправлено поведение функции
cfs_start_gc
, чтобы отклонялись недопустимые значения аргументаn_workers
.
Исправлена проблема, возникавшая при обновлении Postgres Pro Standard до Postgres Pro Enterprise с использованием pg_upgrade, которое могло завершиться ошибкой вида «could not open file» (не удалось открыть файл), если эпоха старого кластера была больше 1.
Исправлено поведение параметра pg_upgrade
--check
для корректной проверки того, что pg_upgrade запущен на резервном сервере. Ранее она завершалась ошибками вида «cannot assign TransactionIds during recovery» (не удалось назначить идентификаторы транзакций во время восстановления).Устранена ошибка сегментации, вызванная аннулированием обёртки сторонних данных во время автономных транзакций, если автономная транзакция сбрасывала глобальные переменные, в то время как зарегистрированные функции-обработчики оставались активными. Теперь функции-обработчики проверяют наличие глобальных переменных, а данные об аннулировании сохраняются для родительских транзакций.
Устранена проблема, из-за которой сервер аварийно завершал работу ошибкой уровня PANIC вместо возврата соответствующей ошибки при удалении кортежей со страницы, где разница между минимальным идентификатором транзакции и текущим идентификатором транзакции превышала 2^31.
Устранено раздувание
pg_multixact
путём введения «нестрогих» ограничений, запускающих автоочистку раньше.Устранена проблема, из-за которой при включённом параметре
crash_info
могли не записываться диагностические файлы во время обработки переполнения стека. Ранее обработчик сигналов запускался на стеке с переполнением, что могло помешать его запуску из-за нехватки памяти. Теперь обработчик использует альтернативный стек.Устранена проблема с контекстом памяти, которая ранее могла приводить к появлению мусора в журналах вместо сведений об узле и порте при отключении от удалённого сервера.
Устранена проблема при пользовательском сканировании, которая могла приводить к некорректному состоянию плана запроса и возникновению ошибки при использовании pgpro_stats.
Устранена проблема, из-за которой роли без явно заданного атрибута
VALID UNTIL
и связанные с профилем, у которого для PASSWORD_GRACE_TIME установлено значение 0, а дляPASSWORD_LIFE_TIME
—UNLIMITED
, некорректно получали предупреждения об истечении срока действия пароля. Теперь пароли корректно считаются действительными бесконечно.Оптимизирован модуль fasttrun для пропуска ненужных операций усечения пустых временных отношений.
Приложение mamonsu обновлено до версии 3.5.11, в которую включена поддержка pgpro_stats версии 1.8.
Расширение multimaster обновлено. Была добавлена возможность указать режим синхронизации для повторно подключившихся узлов с помощью параметра конфигурации
multimaster.catchup_algorithm
. Добавлена поддержка режима синхронизацииparallel
, при котором неконфликтующие реплицируемые транзакции применяются параллельно.Приложение pgbadger обновлено до версии 13.0.
pgbouncer обновлён до версии 1.24.0.
Расширение pg_hint_plan обновлено до версии 1.3.10.2.
Расширение pg_portal_modify обновлено до версии 0.3.5.
Обновлено расширение pg_proaudit. Включены следующие исправления и усовершенствования:
Добавлено новое поле событий: имя пользователя сеанса. Теперь события содержат информацию об атрибутах
session_user
иcurrent_user
SQL-сеанса.Добавлена поддержка новых классов событий:
ALL_DDL_NONTEMP
иALL_DML_NONTEMP
. Область действия этих классов ограничена объектами, не находящимися во временных схемахpg_temp_
.nnn
Исправлено внесение в журнал событий
SELECT FOR UPDATE
иSELECT FOR KEY SHARE
: теперь они корректно указываются как командыSELECT
, а неUPDATE
.
Приложение pg_probackup обновлено до версии 2.8.7 Enterprise, в которой улучшена производительность и исправлены некоторые ошибки:
Уровень записи в журнал сообщений вида «checking WAL file name» (проверка имени файла WAL), выдающихся при выполнении команды
show
с параметром--archive
, понижен сINFO
доVERBOSE
.Изменена логика команды
add-instance
: теперь обязательно использовать параметр-D
, указывающий путь к каталогу. Командаadd-instance
больше не использует переменную средыPGDATA
как расположение каталога, а требует явного указания пути к каталогу в параметре команды.Улучшен механизм сбора мусора в CFS, используемый при создании резервной копии. Блокировки на уровне файловой системы решают проблему с одновременным доступом к файлам из сжатых табличных пространств во время копирования в резервную копию и во время дефрагментации.
Устранена проблема с механизмом многопоточного копирования файлов, предотвращающим многократное копирование одного файла. Ранее из-за этой проблемы могла не создаваться резервная копия при высокой нагрузке на сервер.
Модуль pgpro_pwr обновлён до версии 4.8, в которой добавлены новые возможности и исправлены некоторые ошибки. Основные изменения перечислены ниже:
Добавлено отслеживание версий расширений, установленных в кластере, в новом разделе отчёта.
Добавлена возможность скрыть данные для определённых баз данных в отчёте. Для этого в функции формирования отчёта добавлен новый параметр, принимающий массив исключаемых баз данных.
Расширение pgpro_scheduler обновлено до версии 2.11.1, в которой устранена ошибки сегментации, которая могла возникнуть, если pgpro_scheduler не завершал свои процессы при удалении связанного расширения или схемы. Теперь работа завершается ошибкой, а не сбоем.
Расширение pgpro_stats обновлено до версии 1.8.1, в которую включены следующие усовершенствования и исправления:
Устранена проблема, которая могла возникнуть во время трассировки сеанса и вызвать ошибки «could not write file ""pg_stat/pgpro_stats_filters.trace.tmp"": No such file or directory» (не удалось записать файл ""pg_stat/pgpro_stats_filters.trace.tmp"": Такого файла или каталога не существует). Параллельная запись из разных сеансов в файл трассировки теперь работает корректно, и процессы могут выполнять запись в файл трассировки параллельно без конфликтов.
Изменён формат файла выгрузки статистики и соответствующие процедуры сохранения/загрузки.
Реализована оптимизация, которая в некоторых случаях снижает время блокировки при копировании метрик из локальной памяти в общую.
Имена атрибутов фильтра
explain_*
трассировщика сеансов приведены в соответствие с именами параметров конфигурации трассировки сеансов.Реализовано отключение функциональности трассировки сеансов, если не указаны соответствующие фильтры.
Обновлён модуль pg_variables. Команда
DISCARD ALL
теперь очищает все пакеты и переменные в pg_variables.Обновлён модуль rum: изменено сообщение об ошибках, возникающих в случаях, когда в запросе
SELECT
используетсяORDER BY
.
E.1.2. Миграция на версию 13.20.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.