E.4. Postgres Pro Enterprise 9.6.21.1

Дата выпуска: 2021-02-26

E.4.1. Обзор

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

  • Параметр cfs_compress_small_relations признан устаревшим. Небольшие отношения по-прежнему по умолчанию сжимаются и в дальнейшем они не будут рассматриваться отдельно от больших. Обеспечьте неизменность существующего значения этого параметра на протяжении всей жизни вашего кластера.

  • Исправлена ошибка в коде CFS, в результате которой включение параметра cfs_compress_temp_relations приводило к отключению сжатия для всех отношений.

  • Добавлена функция pg_snapshot_any, позволяющая суперпользователям исследовать повреждённые базы данных. За подробностями обратитесь к Подразделу 9.26.11.

  • Поведение параметров idle_session_timeout и idle_in_transaction_session_timeout синхронизировано с тем, что будет в следующем выпуске PostgreSQL. В частности, теперь idle_session_timeout действует только вне транзакции.

  • Приложение pg_probackup обновлено до версии 2.4.10. Её основные отличия от ранее поставляемой версии 2.4.2:

    • При инкрементальном восстановлении с флагом --force можно перезаписать содержимое каталога, задаваемого параметром PGDATA, в случае совпадения системных идентификаторов. Ранее в подобных случаях выдавалась ошибка.

    • Стало возможным восстанавливать или проверять копии, находящиеся в файловой системе «только для чтения».

    • Объединение копий на месте теперь не поддерживается только при смене формата хранения.

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

    • Передаваемые сегменты WAL теперь добавляются в список файлов копии «на лету» и сбрасываются на диск в конце резервного копирования.

    За подробностями обратитесь к документации pg_probackup.

  • Устранена ошибка в pgpro_scheduler, проявлявшаяся в том, что задания, которые должны были выполняться точно в начале часа (и при этом с интервалом не менее двух часов), не запускались вовсе.

  • Добавлена утилита pgpro_controldata, показывающая управляющую информацию кластера БД PostgreSQL/Postgres Pro и параметры совместимости кластера и/или сервера.

E.4.2. Миграция на версию 9.6.21.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.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 или выше.