E.23. Postgres Pro Standard 13.1.1
Дата выпуска: 2020-12-17
E.23.1. Обзор
Этот выпуск основан на PostgreSQL 13.1 и включает все новые возможности, появившиеся в PostgreSQL 13, а также исправления ошибок, вошедшие в PostgreSQL 13.1. Подробное их описание вы можете найти в Замечаниях к выпуску PostgreSQL 13 и в Замечаниях к выпуску PostgreSQL 13.1, соответственно. Ниже перечислены другие основные изменения и усовершенствования:
Добавлено расширение pgpro_pwr. Это расширение позволяет получать отчёты по нагрузке, полезные для выявления наиболее ресурсоёмких операций в базе данных.
В состав Postgres Pro Standard включено расширение pgpro_stats, предназначенное для сбора статистики выполнения SQL-операторов и подсчёта статистики событий ожидания.
Появилась поддержка операционной системы ОСнова 2.0. Это первая версия Postgres Pro Standard, изначально поддерживающая семейство ОСнова.
Расширение mchar обновлено до версии 2.2. Связанные с этим обновлением инструкции вы можете найти в Подразделе E.23.2.
Список расширений и дополнительных утилит Postgres Pro Standard, а также основных видимых пользователю отличий от ванильной версии PostgreSQL приведён в Разделе 2.
E.23.2. Миграция на версию 13
Вы можете перейти на Postgres Pro Standard 13 с той же или предыдущей версии PostgreSQL (которая поддерживается выбранным способом обновления) и с предыдущей версии Postgres Pro Standard. Способы обновления кластера базы данных описаны в Разделе 17.6. Если у вас возникнут проблемы при переходе на новую версию, обратитесь в службу поддержки Postgres Pro Standard. Обратный переход не поддерживается.
Для перехода с PostgreSQL или выпуска Postgres Pro Standard, базирующегося на предыдущей основной версии PostgreSQL, сначала установите его последний корректирующий выпуск, а затем выполните выгрузку/восстановление данных, применив pg_dumpall, или воспользуйтесь pg_upgrade:
Если вы решите использовать pg_upgrade, важно инициализировать новый кластер баз данных с совместимыми параметрами. В частности, обратите внимание на характеристику контрольных сумм и выбор провайдера основного правила сортировки в кластере, который вы будете обновлять. Если pg_upgrade создаст какие-либо скрипты SQL в текущем каталоге, выполните их для завершения обновления.
Если вы выбираете вариант с выгрузкой/восстановлением данных, не забудьте при выгрузке добавить ключ
--add-collprovider
, чтобы для обновляемой базы данных был установлен правильный провайдер основного правила сортировки.
Понять, какое правило сортировки является основным в старом кластере и какой провайдер оно использует, можно по значению datcollate
для базы данных template0
в каталоге pg_database. Если вы производите обновление с версии, в которой провайдер основного правила сортировки не задан, опустите указание провайдера при переходе с предыдущих версий Postgres Pro или выберите провайдер libc
при переходе с ванильного PostgreSQL.
Помимо этого, учтите описанные ниже особенности обновления, связанные с изменениями в использовании правил сортировки.
В Windows инсталляции Postgres Pro Standard могли содержать базы данных с правилами сортировки по умолчанию, использующими ICU, в которых имя правила имело синтаксически правильный формат языка BCP 47, но неправильный код языка или другие параметры, в результате чего это правило сортировки оказывалось недействительным для ICU.
Если эта проблема затрагивает вашу базу данных template0
, при попытке инициализировать новый кластер с тем же правилом сортировки вы получите следующее сообщение об ошибке: failed to get the canonical name for collation locale
(не удалось получить каноническое имя для локали правила сортировки). В этом случае выполнить обновление можно только путём выгрузки/восстановления данных, задав для нового кластера подходящую локаль для выбранного провайдера правил сортировки.
Если эта проблема затрагивает другие базы данных, вы получите то же сообщение об ошибке, что и при попытке создания в Postgres Pro нового кластера с некорректным правилом сортировки. Вы можете попытаться решить эту проблему следующим образом:
Выгрузите базу данных, используя pg_dump; при этом необходимо указать параметры
--create
и--format=plain
.Смените в выгруженном файле провайдер основного правила сортировки с
'@icu'
на'@libc'
.Восстановите изменённое содержимое базы в psql для завершения обновления. Эта операция может прерваться ошибкой, если окажутся нарушенными какие-либо ограничения, зависящие от правил сортировки в базе данных. В этом случае вы можете попытаться разрешить эти проблемы вручную.
В некоторых особых случаях при выгрузке/восстановлении данных вы можете столкнуться с нарушением ограничений в восстанавливаемых базах данных, так что вместо этого метода лучше использовать pg_upgrade. В частности:
Если в инсталляции Postgres Pro Standard версии 9.6 или ниже содержались индексы или ограничения, зависящие от правил сортировки, отличных от правила сортировки, установленного для БД по умолчанию, а также от
C
илиPOSIX
в базах данных с многобайтными кодировками, индексы и ограничения в таких базах могли оказаться несогласованными при обновлении до Postgres Pro версии 10 или выше. В Windows эта ситуация также могла иметь место, если база данных с многобайтной кодировкой содержала индексы или ограничения, зависящие от правила сортировки по умолчанию, имевшего полное имя"Russian_Russia[.
иликодировка
]""English_United States[.
.кодировка
]"При обновлении с Postgres Pro Standard версии 10 кластеров, в которых нет информации о версии библиотеки ICU, состояние актуальности индексов и ограничений определяется по версиям правил сортировки. Однако для кластеров, в которых содержатся базы данных с системными правилами сортировки ICU, но отсутствует информация о версии библиотеки ICU и/или версиях правил сортировки, нет никакой возможности удостовериться в том, что в текущей версии Postgres Pro используется та же версия библиотеки ICU.
В Windows у кластеров Postgres Pro Standard 10 с правилами сортировки по умолчанию, использующими ICU, локаль правила сортировки может не совпадать с локалью соответствующего правила сортировки
libc
.
Когда вы используете программу pg_upgrade, она объявляет такие индексы и ограничения нерабочими и создаёт для их исправления файлы reindex_text_indexes.sql
и validate_text_constraints.sql
, соответственно. Для завершения обновления вам надо будет выполнить эти скрипты.
Примечание
Во избежание конфликтов в системах Linux не используйте пакет postgrespro-std-13
для установки исполняемых файлов Postgres Pro, а установите вместо него отдельные пакеты компонентов продукта. В этом случае режим автозапуска сервера, если он требуется, нужно будет включить вручную. Подробнее о предоставляемых пакетах вы можете узнать в Главе 16.
Если ранее вы использовали расширение mchar, после обновления с предыдущих версий Postgres Pro выполните следующую команду, чтобы обеспечить ускорение оператора LIKE
:
ALTER EXTENSION mchar UPDATE;
Особенности обновления, унаследованные от ванильной версии PostgreSQL, описаны в Разделе E.40.