E.1. Postgres Pro Enterprise 16.8.1 #
Дата выпуска: 2025-03-10
E.1.1. Обзор #
Этот выпуск основан на PostgreSQL 16.8 и Postgres Pro Enterprise 16.6.1. Все изменения, унаследованные от PostgreSQL 16.8, описаны в Замечаниях к выпуску PostgreSQL 16.8. По сравнению с Postgres Pro Enterprise 16.6.1 эта версия также содержит следующие изменения:
В выходные файлы
crash_info
добавлены новые сведения, например текущий рабочий каталог, каталогPGDATA
и т. д.Добавлены повышенные требования безопасности для команды CREATE PROFILE. Теперь при использовании параметра
PASSWORD_REQUIRE_COMPLEX
пароли должны содержать символы из трёх разных групп. Также все буквы или их аналоги в языках без разделения на регистры (хинди, китайский и т.п.) в кодировке UTF-8 считаются строчными буквами.Добавлен параметр конфигурации skip_temp_rel_lock, который позволяет пропускать блокировку для временных отношений.
Улучшено перепланирование запросов в реальном времени. Теперь триггеры перепланирования отключаются для будущей переоптимизации, если выполняется одно из следующих условий: во время выполнения не были собраны новые данные, новый созданный план соответствует уже опробованному или достигнуто максимальное количество перезапусков, заданное параметром конфигурации replan_max_attempts.
Ограничена работа citus с включённым (
on
) параметром конфигурации enable_self_join_removal. Ранее запросы к распределённым таблицам расширения могли возвращать некорректные результаты. Теперь, если оптимизатор решает сделать запрос распределённым, планирование запроса приводит к ошибке.Реализованы следующие исправления и усовершенствования для 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.
Устранена проблема с обработкой файлов
*.cfm.bck
с помощью pg_upgrade.Устранена ошибка сегментации, вызванная аннулированием обёртки сторонних данных во время автономных транзакций, если автономная транзакция сбрасывала глобальные переменные, в то время как зарегистрированные функции-обработчики оставались активными. Теперь функции-обработчики проверяют наличие глобальных переменных, а данные об аннулировании сохраняются для родительских транзакций.
Устранена проблема, из-за которой сервер аварийно завершал работу ошибкой уровня PANIC вместо возврата соответствующей ошибки при удалении кортежей со страницы, где разница между минимальным идентификатором транзакции и текущим идентификатором транзакции превышала 2^31.
Устранено раздувание
pg_multixact
путём введения «нестрогих» ограничений, запускающих автоочистку раньше.Устранена проблема, из-за которой при включённом параметре
crash_info
могли не записываться диагностические файлы во время обработки переполнения стека. Ранее обработчик сигналов запускался на стеке с переполнением, что могло помешать его запуску из-за нехватки памяти. Теперь обработчик использует альтернативный стек.Устранена проблема с контекстом памяти, которая ранее могла приводить к появлению мусора в журналах вместо сведений об узле и порте при отключении от удалённого сервера.
Устранена проблема при пользовательском сканировании, которая могла приводить к некорректному состоянию плана запроса и возникновению ошибки при использовании pgpro_stats.
Устранена проблема, из-за которой роли без явно заданного атрибута
VALID UNTIL
и связанные с профилем, у которого для PASSWORD_GRACE_TIME установлено значение 0, а дляPASSWORD_LIFE_TIME
—UNLIMITED
, некорректно получали предупреждения об истечении срока действия пароля. Теперь пароли корректно считаются действительными бесконечно.Устранена ошибка, которая вызывала проблемы с запуском последователей, добавленных после выполнения
ALTER SYSTEM
на инициализированном лидере.Устранена проблема, из-за которой размер временных таблиц мог перестать увеличиваться при превышении границы сегмента, что могло приводить к ошибкам «could not open file» (невозможно открыть файл).
Устранена проблема, из-за которой параллельные рабочие процессы применения изменений не могли применять потоковые транзакции в логической репликации (
streaming = parallel
). Эта проблема возникала, когда публикующий сервер отправлял транзакции с 32-битными идентификаторами.Расширение apache_age обновлено до версии 1.5.1.
Обновлено решение BiHA — включены следующие возможности, усовершенствования и исправления:
Улучшена команда
bihactl
init --convert —теперь пропускается создание объектов, необходимых для работы BiHA-кластера, если эти объекты уже существуют в базе данных. Ранее в таких случаях преобразование завершалось ошибкой.Улучшена функциональность обработчиков. Добавлены типы обработчиков
NODE_ADDED
,NODE_REMOVED
иLEADER_STATE_IS_RW
. Обновлён типTERM_CHANGED
. Добавлена роль пользователяbiha_callbacks_user
в качестве пользователя по умолчанию для выполнения функций-обработчиков.Реализована возможность уменьшения параметра конфигурации max_connections в BiHA-кластере без отключения расширения biha. Теперь можно уменьшить значение параметра на узле-лидере и перезапустить его, чтобы изменения вступили в силу. Ранее значение
max_connections
можно было уменьшить только при временном удалении расширения biha изshared_preload_libraries
.Устранена ошибка, из-за которой функция biha.nodes возвращала пустую строку для узла, на котором была вызвана.
Устранена ошибка, приводившая к перезагрузке процесса
biha-background-worker
при удалении слота репликации.Устранена ошибка, вызывавшая проблемы с преобразованием кластера в BiHA-кластер при заданной переменной shared_preload_libraries в файле postgresql.auto.conf.
Устранена ошибка, вызывавшая проблемы при преобразовании синхронного кластера в BiHA-кластер. Теперь не требуется сбрасывать параметр
synchronous_standby_names
перед преобразованием синхронного кластера.
Расширение citus обновлено до версии 12.1.6.1.
Оптимизирован модуль fasttrun для пропуска ненужных операций усечения пустых временных отношений.
Приложение mamonsu обновлено до версии 3.5.11, в которую включена поддержка pgpro_stats версии 1.8.
Расширение multimaster обновлено. Была добавлена возможность указать режим синхронизации для повторно подключившихся узлов с помощью параметра конфигурации
multimaster.catchup_algorithm
. Добавлена поддержка режима синхронизацииparallel
, при котором неконфликтующие реплицируемые транзакции применяются параллельно.Устранена проблема, возникавшая в некоторых особых случаях с обновлением pageinspect до версии 1.10.1 или выше.
Добавлено расширение pgpro_multiplan версии 1.1, которое включает в себя полную функциональность расширения sr_plan, а также новые возможности, например
plan_hash
— внутренний идентификатор замороженного плана. Расширение sr_plan считается устаревшим, и его поддержка будет прекращена одновременно с Postgres Pro Enterprise 16. Использование pgpro_multiplan вместе с sr_plan не допускается, так как приведёт к сбою реплики в отказоустойчивом кластере. Прочие изменения по сравнению с sr_plan:Добавлена поддержка планов типа
template
и шаблонов. Теперь в расширении pgpro_multiplan можно создавать план с шаблонами и применять его к запросам, в которых имена таблиц соответствуют регулярным выражениямPOSIX
, указанным в параметре конфигурацииpgpro_multiplan.wildcards
.Устранена проблема с выполнением запроса, если план был одобрен при включённом pgpro_multiplan.auto_capturing, а затем запрос выполнялся с другим планом при выключенном
pgpro_multiplan.auto_capturing
. Проблема могла проявляться в ошибках вида «cache lookup failed for type» (ошибка поиска в кеше для типа).Устранена проблема, из-за которой расширение pgpro_multiplan не могло идентифицировать зарегистрированный запрос с параметром, используемым в нескольких местах этого запроса, что препятствовало замораживанию планов для таких запросов.
Приложение pgbadger обновлено до версии 13.0.
pgbouncer обновлён до версии 1.24.0.
Расширение pg_hint_plan обновлено до версии 1.6.1.2.
Расширение pg_portal_modify обновлено до версии 0.3.5.
Расширение pgpro_anonymizer обновлено до версии 1.3.2.
Обновлено расширение 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_sfile обновлено — добавлена проверка аргумента
a_sf_index
функцииsf_write
, его значение должно быть больше нуля.Расширение 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.Расширение plpgsql_check обновлено до версии 2.7.12.
Обновлён модуль rum: изменено сообщение об ошибках, возникающих в случаях, когда в запросе
SELECT
используетсяORDER BY
.
E.1.2. Миграция на версию 16.8.1 #
Если вы производите обновление выпуска Postgres Pro Enterprise, базирующегося на той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.
Важно
Чтобы обновить BiHA-кластер с Postgres Pro Enterprise версии 16.6 и ниже до Postgres Pro Enterprise версии 16.8, см. раздел Миграция BiHA-кластера на версию 16.8.
Версия 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.
Чтобы обновить BiHA-кластер с Postgres Pro Enterprise версии 16.4 и ниже до Postgres Pro Enterprise версии 16.6, см. раздел Миграция BiHA-кластера на версию 16.6.
Чтобы обновить BiHA-кластер с Postgres Pro Enterprise версии 16.3 и ниже до Postgres Pro Enterprise версии 16.4, см. раздел Миграция BiHA-кластера на версию 16.4.
Чтобы обновить BiHA-кластер с Postgres Pro Enterprise версий 16.1 и 16.2 до Postgres Pro Enterprise версии 16.3, см. раздел Migrating the BiHA Cluster to Version 16.3.
Для перехода с PostgreSQL, а также с выпуска Postgres Pro Standard или Postgres Pro Enterprise, базирующегося на предыдущей основной версии PostgreSQL, обратитесь к инструкциям по миграции на версию 16.