E.1. Postgres Pro Enterprise 9.6.24.1
Дата выпуска: 2021-12-06
E.1.1. Обзор
Этот выпуск Postgres Pro Enterprise должен стать последним в серии 9.6. Пользователям следует поторопиться с переходом на более новую основную версию Postgres Pro Enterprise.
Этот выпуск основан на PostgreSQL 9.6.24 и Postgres Pro Enterprise 9.6.23.1. Все усовершенствования, унаследованные от PostgreSQL 9.6.24, описаны в Замечаниях к выпуску PostgreSQL 9.6.24. По сравнению с Postgres Pro Enterprise 9.6.23.1 эта версия также содержит следующие изменения:
Прекращена поддержка расширения sr_plan.
Модуль mamonsu обновлён до версии 3.1.0. Основные изменения перечислены ниже:
У команды
bootstrap
появилась новая возможность. Благодаря ей, если параметр-dbname
не указан явно, он автоматически примет значение, соответствующее имени базы данных, которое указано в разделе[postgres]
файла конфигурации mamonsu.Исправлена критическая проблема, которая могла возникнуть при пропуске шага
bootstrap
. В этом случае, хотя пользователь мог работать с mamonsu с правами суперпользователя, специальная схемаmamonsu
не создавалась, но после создания вспомогательного расширения pg_buffercache в любой другой схеме запуск mamonsu приводил к ошибкам «ERROR: relation "mamonsu.pg_buffercache" does not exist
» (ОШИБКА: отношение "mamonsu.pg_buffercache" не существует).
Устранена проблема некорректной обработки коротких (4-байтовых) идентификаторов транзакций во время очистки страниц кучи, что могло приводить к генерации неоптимального трафика WAL, содержащего полные образы страниц.
Решена проблема pg_probackup с архивированием WAL из каталога за пределами каталога данных. Ранее многопоточная и пакетная оптимизации команды
archive-push
препятствовали такому архивированию; теперь можно архивировать WAL из любого каталога, но если он находится за пределами каталога данных, многопоточная и пакетная оптимизации автоматически отключаются.Оператор
WAITLSN
признан устаревшим.В CFS задействована функциональность разреженных файлов в Windows, благодаря чему оптимизируется размер файлов
*.cfm
на диске (до 1 МБ для каждого файла).
E.1.2. Миграция на версию 9.6.24.1
Процедура установки зависит от версии вашей текущей инсталляции.
Для перехода с ванильной версии PostgreSQL 9.6.x или Postgres Pro Standard сначала установите последний корректирующий выпуск для этой версии, а затем выполните выгрузку/восстановление данных, используя pg_dumpall. Обязательно уделите внимание особенностям реализации, связанным с 64-битными идентификаторами транзакций. Если вы ранее использовали явные приведения идентификаторов транзакций к 32-битным целым, вы должны заменить их на приведения к типу bigint
, так как 64-битные идентификаторы транзакций имеют такой тип.
Встроенные функции numeric_eq
, numeric_ne
, numeric_gt
, numeric_ge
, numeric_lt
и numeric_le
фактически являются герметичными, но они не имели соответствующей пометки в Postgres Pro Enterprise до версии 9.6.17.1, в результате чего запросы могли выполняться неоптимально. В частности, это отрицательно сказывалось на производительности запросов при использовании политик защиты на уровне строк. В версии 9.6.17.1 это было исправлено для новых инсталляций в результате корректировки исходных данных каталога, но существующие инсталляции сохранят некорректные пометки, пока вы не исправите записи этих функций в pg_proc
. Чтобы их исправить, обновите экземпляр сервера с помощью pg_upgrade либо вручную измените их в существующем кластере, выполнив во всех его базах данных соответствующие команды ALTER FUNCTION
. Например:
ALTER FUNCTION pg_catalog.numeric_eq LEAKPROOF
Для обновления с версии Postgres Pro Enterprise, основанной на этом же основном выпуске PostgreSQL, выгрузка/восстановление данных не требуется. Обычно достаточно установить новую версию в каталог предыдущей инсталляции. После установки новых исполняемых файлов автоматически запускается скрипт pgpro_upgrade
, который проверяет, требуется ли дополнительная настройка, и завершает обновление.
В версиях Postgres Pro Enterprise до 9.6.15.1 функции age
и mxid_age
возвращали 32-битные значения для 64-битных идентификаторов транзакций. Даже после обновления существующих инсталляций сохранились некорректные определения функций. Чтобы их исправить, выполните во всех базах данных существующего кластера команды:
ALTER FUNCTION pg_catalog.age(xid) RENAME TO xid_age_old; CREATE FUNCTION pg_catalog.age(xid) RETURNS bigint STABLE PARALLEL RESTRICTED LANGUAGE INTERNAL AS 'xid_age'; ALTER FUNCTION pg_catalog.mxid_age(xid) RENAME TO mxid_age_old; CREATE FUNCTION pg_catalog.mxid_age(xid) RETURNS bigint STABLE PARALLEL SAFE LANGUAGE INTERNAL AS 'mxid_age';
Так как в Postgres Pro Enterprise 9.6.12.1 была изменена модель распространения pg_probackup, при переходе с предыдущей версии в Альт Линукс или системе на базе Debian выполните apt dist-upgrade
(или apt-get dist-upgrade
), чтобы корректно обработались все новые зависимости. В Windows для завершения обновления вам нужно будет запустить отдельный инсталлятор pg_probackup.
При обновлении с версий 9.6.9.1–9.6.14.1 вы должны выполнить команду REINDEX
для индексов GIN, GiST и SP-GiST, чтобы устранить дефекты, которые могли возникнуть в этих версиях при репликации. Кроме того, следует сделать новые резервные копии баз данных, в которых были такие индексы.
При обновлении с версии 9.6.8.2 и ниже вы должны перестроить индексы, в которых используются типы mchar
или mvarchar
.
При обновлении с версии 9.6.2.1 и ниже вы должны перестроить индексы GiST, построенные по столбцам типа intarray
.
При обновлении с версии 9.6.1.2 в дистрибутивах Linux с системой пакетов RPM вы должны переименовать каталог данных pgsql
в pgproee
до запуска скрипта pgpro_upgrade
.
В некоторых дистрибутивах Linux вам может быть предложено запустить pgpro_upgrade
вручную. В этом случае вы должны остановить службу postgres
. Этот скрипт должен запускать пользователь-владелец базы данных (обычно postgres), а переменная окружения PGDATA
должна указывать на каталог, где располагается база данных. При попытке запустить pgpro_upgrade
от имени root произойдёт ошибка. Данное действие не требуется выполнять при обновлении с версии 9.6.4.1 или выше.