E.1. Postgres Pro Enterprise 12.22.1

Дата выпуска: 2024-12-06

E.1.1. Обзор

Этот выпуск Postgres Pro Enterprise должен стать последним в серии 12. Пользователям следует поторопиться с переходом на более новую основную версию Postgres Pro Enterprise.

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

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

  • Добавлена возможность преобразования связанных подзапросов IN в соединения.

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

  • Добавлен шаг для проверки программой pg_upgrade ненулевых значений в неиспользуемых полях заголовков файлов *.cfm.

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

  • Исправлена проблема, возникавшая при обновлении PostgreSQL или Postgres Pro Standard до Postgres Pro Enterprise с использованием pg_upgrade при переполнении счётчика смещения мультитранзакций.

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

  • Устранена проблема с обновлением PostgreSQL или Postgres Pro Standard до Postgres Pro Enterprise с помощью pg_upgrade, которая могла возникнуть при попытке преобразовать страницы кучи в формат страницы double xmax в случаях, когда для размещения специальной области было недостаточно свободного места. При наличии мультитранзакций это могло привести к ошибкам вида «MultiXactId XXXXX has not been created yet» (идентификатор XXXXX мультитранзакции ещё не создан) или «could not access status of transaction XXXXXX» (не удалось получить доступ к статусу транзакции XXXXXX), в зависимости от версии сервера. При этом не должно происходить потери данных, поскольку не происходит фактического преобразования. Теперь страницы безопасно преобразуются при первом обращении.

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

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

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

  • Устранена проблема, из-за которой команда EXPLAIN ANALYZE отображала неверное количество вставленных и конфликтующих кортежей во время вставки строк с конфликтующими первичными ключами при использовании ON CONFLICT DO NOTHING.

  • Устранена проблема, которая могла замедлить выполнение запроса. Причина заключалась выборе неоптимального индекса оптимизатором из-за отсутствия оценки его стоимости после удаления избыточных предложений с включённым (значение ON) параметром enable_appendorpath.

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

    • Добавлена поддержка систем, в которых установлена версия setuptools выше 67.7.2.

    • Прекращено использование указания user:group с точками на этапе перед установкой RPM.

  • Расширение oracle_fdw обновлено до версии 2.7.0.

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

  • Расширение pg_filedump обновлено до версии 17.1, в которой была устранена проблема, приводившая к ошибке сегментации при обработке неполных страниц и сбою pg_filedump.

  • Расширение pg_hint_plan обновлено до версии 1.3.10.

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

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

    • Добавлена возможность вывода команды version в формате JSON с помощью --format=json.

    • Добавлен параметр --all для команды amcheck, который позволяет выполнить все проверки в одной команде.

    • Добавлена поддержка параметра include в файле конфигурации. Содержимое файла, указанного в include, добавляется в файл конфигурации вместо этого параметра.

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

    • Изменён приоритет значений PGDATA и BACKUP_PATH. Теперь приоритет имеют значения из параметров командной строки.

    • Добавлена проверка файлов WAL для резервных копий, объединяемых командой merge.

    • Сообщение об ошибке, которое выдавалось, когда команда validate, запущенная с параметром --wal, обнаруживала архив в состоянии DEGRADED, было заменено предупреждением, поскольку резервные копии в этом состоянии не влияют на корректность восстановления в целом.

    • Добавлена поддержка параметра --s3-config-file для restore_command. Файл postgresql.auto.conf должен включать restore_command с параметром --s3-config-file, если резервная копия была создана с этим параметром.

    • Для PG_PROBACKUP_S3_IGNORE_CERT_VER установлено значение по умолчанию on согласно документации.

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

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

    • Исправлена проблема, которая могла возникнуть, когда порт подключения S3 был указан как в PG_PROBACKUP_S3_PORT, так и в PG_PROBACKUP_S3_HOST. Теперь значение, указанное в PG_PROBACKUP_S3_HOST, вместе с адресом имеет более высокий приоритет.

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

  • Расширение pgpro_stats обновлено до версии 1.8, в которой добавлена поддержка Postgres Pro 17. Основные изменения перечислены ниже:

    • Обновлены представления pgpro_stats_statements и pgpro_stats_totals, чтобы включить новые поля, добавленные в модуль pg_stat_statements. Также были обновлены соответствующие функции.

    • Упрощён доступ к представлениям и функциям. В частности, всем пользователям был предоставлен доступ к представлениям pgpro_stats_archiver, pgpro_stats_vacuum_database, pgpro_stats_vacuum_tables и pgpro_stats_vacuum_indexes. Ранее для этих представлений требовалось явное предоставление прав доступа. Доступ к выполнению функции pgpro_stats_trace_reset, которая ранее могла быть выполнена любым пользователем, теперь ограничен суперпользователями.

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

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

    • Исправлена обработка параметра конфигурации pgpro_stats.stats_temp_directory. Ранее после перезапуска сервера, необходимого для вступления в силу изменений значения этого параметра, могла возникнуть фатальная ошибка «pfree called with invalid pointer» (неверный указатель для функции pfree).

    • Устранена проблема, которая могла возникнуть во время трассировки сеанса и вызвать ошибки «could not write file ""pg_stat/pgpro_stats_filters.trace.tmp"": No such file or directory» (не удалось записать файл ""pg_stat/pgpro_stats_filters.trace.tmp"": Такого файла или каталога не существует). Параллельная запись из разных сеансов в файл трассировки теперь работает корректно, и процессы могут выполнять запись в файл трассировки параллельно без конфликтов.

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

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

    • Новые таблицы отчётов, в частности касающиеся состояний сеансов.

    • Поддержка новых статистик Postgres Pro 17.

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

    • Изменение тип поля, отслеживающего идентификаторы транзакций в определённой таблице, с xid на text. Использование типа xid ранее могло привести к сбою pg_upgrade при обновлении с Postgres Pro Standard до Postgres Pro Enterprise.

  • Приложение pgpro_scheduler обновлено до версии 2.10, в которую были включены следующие изменения:

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

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

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

    • Устранена ошибка, из-за которой работа at job executor завершалась сбоем, если database manager преждевременно освобождал сегмент общей памяти до того, как к нему подключался рабочий процесс.

    • Устранена проблема, из-за которой функция schedule.timetable не выводила следующее время выполнения заданий cron ни с next_time_statement, ни с массивом дат. Устранена проблема с расчётом следующего времени выполнения для заданий cron, из-за которой экземпляры заданий пропускались.

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

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

  • Расширение pg_wait_sampling обновлено для отслеживания идентификаторов подзапросов и операторов утилит. Также был добавлен параметр pg_wait_sampling.sample_cpu, который позволяет указать режим обработки показаний, определяющий, следует ли выполнять обработку показаний процессов, использующих ЦП.

  • Обеспечена совместимость postgres_fdw с автономными транзакциями.

  • Расширение PTRACK обновлено для предотвращения возможных проблем с резервными копиями PTRACK путём автоматического удаления файла ptrack.map при отключении PTRACK.

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

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

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

При обновлении отказоустойчивого кластера с Postgres Pro Enterprise версии 12.19.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.

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

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

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

Если вы ранее мигрировали с Postgres Pro Enterprise версии 11 или 10, обязательно перестройте индексы-B-деревья (за исключением уникальных, покрывающих и системных индексов). Перестроить такие индексы также рекомендуется, если вы мигрируете с указанных версий на текущую.

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

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