Postgres Pro Enterprise 13
Установка, настройка, обновление
13
Авторские права
© Postgres Professional, 2023 год.
Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Установка и начальная настройка
Обновление сервера
Миграция с других СУБД
3
Установка и настройка
Архитектуры и ОС
Пакеты Postgres Pro
Настройка Postgres Pro
Информация о сервере
Нумерация версий
4
Архитектуры и ОС
64-разрядные архитектуры
AMD/Intel 64 (x86_64)
ARM64 (aarch64)
Эльбрус 2000 (e2kv3, e2kv4)
Power PC, Power ISA (ppc64le)
OC на базе Linux
Red Hat Enterprise Linux, CentOS, Rocky Linux, Oracle Linux,
Rosa/РОСА, РЕД ОС, AlterOS, AlmaLinux
Debian, Ubuntu, Astra Linux
Альт
SUSE Linux Enterprise Server
Postgres Pro может работать на серверных операционные системах
на базе Linux. Поддерживаются только 64-х разрядные архитектуры.
Список поддерживаемых систем можно посмотреть на сайте Postgres
и в разделе документации
Платформа Windows поддерживается в версиях до 14 включительно.
Более детальную информацию по поддержке архитектур, отличных от
x86-64, можно запросить на info@postgrespro.ru.
5
Пакеты Postgres Pro
Пакет верхнего уровня
postgrespro-ent-13
все доступные компоненты сервера
автоматическая настройка
Детальный выбор пакетов
только необходимые компоненты
ручная настройка
Сторонние пакеты для Postgres Pro
дополнительные расширения и утилиты
Функционал Postgres Pro разделен на пакеты.
Пакет верхнего уровня postgrespro-ent-13 позволяет быстро установить
и настроить Postgres Pro для серверных и клиентских систем (будут
установлены все доступные компоненты Postgres Pro без возможности
выбора). Такой способ установки не рекомендуется использовать при
обновлении или миграции системы.
Для более детальной установки и настройки рекомендуется отобрать
отдельные пакеты. Можно установить только серверную часть,
клиентские утилиты, документацию и т. п. В этом случае действия по
настройке, такие как инициализация кластера, придется выполнять
самостоятельно.
Пакеты называются одинаково для всех операционных систем (кроме
незначительных отличий в суффиксе названия пакета для
разработчиков postgrespro-ent-13-devel и пакета с отладочной
информацией postgrespro-ent-13-dbg).
Существуют и сторонние пакеты, собранные специально для Postgres
Pro Enterprise. Эти пакеты устанавливают дополнительные утилиты и
расширения: libzstd для сжатия данных, oracle-fdw-ent-13 – обертку
сторонних данных для Oracle, pgpro-pgbadger – анализатор журналов
сообщений и др.
Полный перечень пакетов есть в документации:
6
Настройка Postgres Pro
pg-wrapper — управление ссылками
путь поиска PATH и страницы man
pg-setup — управление кластером
инициализация кластера
проверка доступных портов
изменение конфигурации сервера
включение и отключение автоматического запуска службы
запуск, остановка или перезапуск службы
настройка кластера
Проверка контрольных сумм
включена по умолчанию
В данном курсе рассматривается настройка и работа Postgres Pro
Enterprise в среде Linux.
Для добавления ссылок в путь поиска PATH и для подключения man-
страниц используется скрипт pg-wrapper.
Для инициализации кластера Postgres Pro рекомендуется скрипт
pg-setup
Скрипт pg-setup может создавать базы данных и инициализировать
кластер Postgres Pro. Запускать скрипт нужно от имени пользователя
root, действия с базами данных скрипт выполняет под ролью postgres.
По умолчанию скрипт инициализирует кластер БД с включенными
контрольными суммами, их можно отключить ключом --no-data-
checksums. Кластер инициализируется с поддержкой библиотеки ICU,
в которой реализована платформонезависимая сортировка
Скрипт pg-setup также позволяет запустить сервер, остановить его и
настроить автоматический запуск.
7
Информация о сервере
pgpro_controldata
вывод информации о кластере и/или сервере
чтение младших мажорных версий и редакций
сравнение параметров сервера, влияющих на совместимость
SQL-функции
проверка информации о системе после установки
версия и редакция Postgres Pro
идентификатор состояния исходного кода
pg_config
версия и редакция Postgres Pro
С помощью утилиты pgpro_controldata можно вывести управляющую
информацию о кластере PostgreSQL/Postgres Pro и параметры
совместимости кластера и/или сервера. Без указания параметров
утилита pgpro_controldata работает аналогично утилите pg_controldata.
Устанавливается отдельным пакетом.
После установки Postgres Pro в системе можно использовать
дополнительные функции для вывода информации о системе.
С помощью этих функций можно узнать версию Postgres Pro, название
редакции и идентификатор состояния исходного кода (хеш коммита),
из которого был собран пакет — эти сведения пригодятся для
обращения в техподдержку.
Аналогичная информация выводится и с помощью утилиты pg_config.
9
Нумерация версий
13 8 1..
основная версия PostgreSQL
дополнительный выпуск PostgreSQL
выпуск Postgres Pro Enterprise
Номер версии Postgres Pro Enterprise состоит из трех частей: номера
основной версии (major release), номера дополнительного выпуска
(minor release) PostgreSQL и номера выпуска Postgres Pro. До версии 10
основной номер состоял из двух чисел (9.5, 9.6), поэтому выпуски
нумеровались четырьмя числами.
Новая основная версия привносит изменение функционала: какие-то
возможности добавляются и изменяются, реже — удаляются.
Дополнительные выпуски служат для переноса изменений, сделанных
в соответствующем выпуске PostgreSQL, а также для исправления
ошибок, проблем безопасности и производительности, найденных
в предыдущих выпусках.
Выпуски Postgres Pro Enterprise служат исключительно для
исправления ошибок, проблем безопасности и производительности,
найденных в предыдущих выпусках Postgres Pro Enterprise.
При обновлении нужно учитывать, что в новом выпуске может быть
прекращена поддержка определенных версий операционных систем.
10
Обновление сервера
Обновление Postgres Pro Enterprise
Переход с PostgreSQL и редакций Postgres Pro
Правила сортировки ICU
11
Обновление Enterprise
Обновление в пределах основной версии
доп. выпуск PostgreSQL или выпуск Postgres Pro
установить исполняемые файлы и перезапустить сервер
Обновление основной версии
pg_dump + pg_restore
pg_upgrade
В целом процедура обновления сервера Postgres Pro Enterprise
аналогична процедуре обновления PostgreSQL. Внимательно
прочитайте замечания ко всем выпускам между текущим и целевым.
В любом случае сначала устанавливаются пакеты новой версии или
выпуска.
При обновлении на дополнительный выпуск или выпуск Postgres Pro
Enterprise достаточно перезапустить сервер.
При обновлении основной версии для переноса данных есть два пути:
сделать логическую резервную копию утилитами pg_dumpall или
pg_dump и восстановить данные с помощью pg_restore / psql;
воспользоваться утилитой pg_upgrade.
Если статистику оптимизатора не переносили из старой версии, после
переноса данных нужно выполнить анализ.
После любого обновления следует проверить и при необходимости
обновить версии расширений в базах данных.
12
Варианты перехода
Поддерживаются pg_dump+pg_restore и pg_upgrade
Понижение версии не поддерживается
PostgreSQL
Postgres Pro
Standard [Certified]
Postgres Pro
Enterprise [Certified]
PostgreSQL
Postgres Pro
Standard [Certified]
Postgres Pro
Enterprise [Certified]
В иерархии PostgreSQL < Postgres Pro Standard < Postgres Pro
Enterprise возможен перенос данных с младшей на более старшую
редакцию СУБД. При этом поддерживается как перенос с помощью
логического резервирования и восстановления (pg_dump + pg_restore),
так и перенос с помощью утилиты pg_upgrade. Возможные пути
переноса и ограничения показаны в таблице.
При этом возможен переход только на ту же или бóльшую основную
версию СУБД, понижение версии (downgrade) не поддерживается.
Также не поддерживается переход с помощью pg_upgrade на Postgres
Pro Enterprise и Postgres Pro Enterprise Certified версий до 11
включительно.
14
Правила сортировки ICU
Правила сортировки
C, POSIX
libc
icu
ICU поддерживается на уровне кластера и БД
в PostgreSQL только для столбцов и выражений
Указывается при инициализации
initdb --locale=ru_RU.UTF-8@icu
createdb --locale=ru_RU.UTF-8@icu
CREATE DATABASE ... LOCALE=ru_RU.UTF-8@icu
PostgreSQL и Postgres Pro Enterprise генерируют правила сортировки на
основе двух библиотек («провайдеров»): традиционной библиотеки libc
и современной платформонезависимой ICU, которая дает больше
возможностей.
Postgres Pro Enterprise позволяет использовать правила обоих
провайдеров на всех уровнях (кластер, база данных, столбец таблицы,
выражение). В PostgreSQL правила провайдера libc можно
использовать на любом уровне, а правила провайдера ICU не
поддерживаются на уровне кластера и базы данных (поддержка
добавлена в версии 15). Это ограничение нужно учесть при миграции
данных из PostgreSQL.
Подробнее о правилах сортировки рассказывается в теме
«Локализация» курса DBA2.
16
Миграция с других СУБД
Миграция данных: oracle_fdw и другие обертки
Миграция других объектов
17
Миграция данных
SQL
выгрузка + psql
Обертки сторонних данных
универсальные для СУБД: ODBC, JDBC
для реляционных СУБД: Oracle (oracle_fdw), MS SQL, MySQL, DB2,
SQLite
для NoSQL-СУБД
файловые универсальные: file_fdw, CSV, JSON, TAR, XML, ZIP
файловые специализированные: геоданные, LDAP, IMAP, RSS, WWW
При миграции данных из других СУБД можно использовать SQL как
промежуточный формат. Конечно, это самый универсальный подход, но
на практике при значительных объемах данных он неприменим. К тому
же из-за разницы в диалектах SQL может потребоваться
дополнительное преобразование данных.
Дополнительные удобства и более высокую производительность можно
получить, используя механизм оберток сторонних данных (foreign data
wrappers), встроенный в PostgreSQL и позволяющий обращаться
к внешним данным как к локальным таблицам. Штатная обертка file_fdw
позволяет читать данные из файлов различных форматов. В составе
дистрибутива Postgres Pro Enterprise есть пакет oracle-fdw-ent-13
с расширением oracle_fdw, устанавливающий одноименную обертку.
Помимо этого, существует множество сторонних оберток для различных
СУБД, форматов файлов, сетевых протоколов, для
специализированных форматов данных и др.
18
Миграция объектов
Объекты SQL
индексы, представления, последовательности
Подпрограммы
процедуры, функции, триггеры
orafce
Другие объекты
Миграция стандартных объектов, таких как индексы, представления,
последовательности, относительно проста и поддается автоматизации.
Миграция других объектов — обычно более сложная задача, поскольку
большинство из них реализованы в Postgres Pro Enterprise по-другому
или вовсе не имеет аналогов. Например, пакеты Oracle не имеют
аналогов в Postgres Pro версии 13 (они реализованы в версии 15, но
синтаксис и возможности немного разные).
Миграция процедурного кода: функций, процедур, триггеров — гораздо
сложнее из-за разнообразия логики, различий используемых языков и
модулей. В составе дистрибутива Postgres Pro Enterprise есть пакет
orafce-ent-13, устанавливающий расширение orafce. Расширение
добавляет в базу данных Postgres Pro объекты, аналогичные объектам
СУБД Oracle, это упрощает перенос процедурной логики.
Существует довольно большое количество сторонних решений,
автоматизирующих процесс миграции; они экономят усилия и снижают
количество ошибок. В статьях и выступлениях на конференциях
описано множество успешных проектов по переносу информационных
систем с других СУБД на PostgreSQL или Postgres Pro Enterprise,
откуда также можно почерпнуть идеи и подходы. Однако в целом
задача очень многообразна и сложна, поэтому автоматизировать ее
полностью не представляется возможным.