E.27. Postgres Pro Standard 12.1.1
Дата выпуска: 2019-12-23
E.27.1. Обзор
Этот выпуск основан на PostgreSQL 12.1 и включает все новые возможности, появившиеся в PostgreSQL 12, а также исправления ошибок, вошедшие в PostgreSQL 12.1. Подробное их описание вы можете найти в Замечаниях к выпуску PostgreSQL 12 и в Замечаниях к выпуску PostgreSQL 12.1, соответственно.
Также были перенесены все усовершенствования, разработанные для Postgres Pro Standard 11.6.1 и предыдущих версий, включая доработки ядра и модулей расширений, кроме следующих:
Представление
pg_recovery_settings
стало ненужным, так как содержимоеrecovery.conf
было включено вpostgresql.conf
и теперь его можно просмотреть через системное представление pg_settings; параметрыprimary_conninfo
,restore_command
иprimary_slot_name
можно изменять, не перезапуская сервер.Модификация, сокращающая объём записей в WAL, генерируемых при создании индексов GiST, GIN и SP-GiST, вошла в PostgreSQL 12, поэтому продукты Postgres Pro теперь включают её в несколько изменённом виде. Формат индексов не поменялся, поэтому все индексы должны остаться в рабочем состоянии.
Механизм PTRACK был основательно переработан и получил новый внешний API. Если ранее вы создавали резервные копии с использованием PTRACK в pg_probackup, вам нужно будет обновить pg_probackup до версии 2.2.6 или выше и настроить копирование PTRACK заново.
Список расширений и дополнительных утилит Postgres Pro Standard, а также основных видимых пользователю отличий от ванильной версии PostgreSQL приведён в Разделе 2.
Важно
Начиная с Postgres Pro 12, использовать pg_pathman не рекомендуется. Применяйте вместо него реализованное в ванильной версии декларативное секционирование, описанное в Разделе 5.11.
E.27.2. Миграция на версию 12
Вы можете перейти на Postgres Pro Standard 12 с той же или предыдущей версии 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-12
для установки исполняемых файлов Postgres Pro, а установите вместо него отдельные пакеты компонентов продукта. В этом случае режим автозапуска сервера, если он требуется, нужно будет включить вручную. Подробнее о предоставляемых пакетах вы можете узнать в Главе 16.
Другие особенности обновления, присущие и ванильной версии PostgreSQL, описаны в Разделе E.50.