Перейти к содержимому

03 Занятие 03: Установка и сопровождение / Установка, настройка, обновление

Исходная страница в нативном Markdown: Установка и сопровождение / Установка, настройка, обновление
Примечание

Эта страница извлечена из официального PDF в нативный Markdown. Текст слайдов, код и комментарии сохранены в порядке чтения; исходные PDF и HTML остаются эталоном макета. HTML source: pgpro_03_install.html Archive: PGPRO-handouts-16.zip Страниц PDF: 23

Page 1: Установка и сопровождение / Установка, настройка, обновление

Авторские права

© Postgres Professional, 2023–2026 Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев, Игорь Гнатюк Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)

Использование материалов курса

Некоммерческое использование материалов курса (презентации, демонстрации) разрешается без ограничений. Коммерческое использование возможно только с письменного разрешения компании Postgres Professional. Запрещается внесение изменений в материалы курса.

Обратная связь

Отзывы, замечания и предложения направляйте по адресу: edu@postgrespro.ru

Отказ от ответственности

Компания Postgres Professional не несет никакой ответственности за любые повреждения и убытки, включая потерю дохода, нанесенные прямым или непрямым, специальным или случайным использованием материалов курса. Компания Postgres Professional не предоставляет каких-либо гарантий на материалы курса. Материалы курса предоставляются на основе принципа «как есть» и компания Postgres Professional не обязана предоставлять сопровождение, поддержку, обновления, расширения и изменения.

Page 2: Темы

  • Установка и начальная настройка
  • Обновление сервера

Page 3: Установка и настройка

Архитектуры и ОС

  • Пакеты Postgres Pro
  • Настройка Postgres Pro
  • Информация о сервере
  • Нумерация версий

Page 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-разрядные архитектуры.

Список поддерживаемых систем можно посмотреть в документации:

https://postgrespro.ru/docs/enterprise/16/binary-installation-on-linux#SUPPO RTED-LINUX-OS

Платформа Windows поддерживалась в версиях до 14 включительно.

Page 5: Пакеты Postgres Pro

Пакет верхнего уровня

  • postgrespro-ent-16
  • все доступные компоненты сервера
  • автоматическая настройка
  • Детальный выбор пакетов
    • postgrespro-ent-16-* и другие
    • только необходимые компоненты
    • ручная настройка
  • Сторонние пакеты
    • дополнительные расширения и утилиты

Комментарии преподавателя

Программное обеспечение Postgres Pro Enterprise поставляется в двоичных пакетах.

Пакет верхнего уровня postgrespro-ent-16 позволяет быстро установить и настроить Postgres Pro Enterprise для серверных и клиентских систем (будут установлены все доступные компоненты без возможности выбора). Такой способ установки не рекомендуется при обновлении или миграции системы.

Для более детальной установки и настройки рекомендуется отобрать отдельные пакеты. Можно установить только серверную часть, клиентские утилиты, документацию и т. п. В этом случае действия по настройке, такие как инициализация кластера, придется выполнять самостоятельно.

Пакеты называются одинаково для всех операционных систем (кроме незначительных отличий в суффиксе названия пакетов для разработчиков postgrespro-ent-16-dev* и пакетов с отладочной информацией postgrespro-ent-16-dbg*).

Существуют также сторонние пакеты и библиотеки, собранные специально для Postgres Pro Enterprise. В них реализованы необходимые функции, содержатся дополнительные утилиты и расширения: в libzstd — функции сжатия данных, oracle-fdw-ent-16 — обертка сторонних данных для Oracle, pgpro-pgbadger — анализатор журналов сообщений и др.

Полный перечень пакетов и библиотек есть в документации:

https://postgrespro.ru/docs/enterprise/16/binary-installation-on-linux#CHOO SING-PGPRO-PACKAGES

Page 6: Настройка Postgres Pro

pg-wrapper — управление ссылками

  • путь поиска PATH и страницы man
  • pg-setup — управление кластером
    • инициализация кластера
    • проверка доступных портов
    • изменение конфигурации сервера
    • включение и отключение автоматического запуска службы
    • запуск, остановка или перезапуск службы
    • настройка кластера
  • Проверка контрольных сумм
    • включена по умолчанию

Комментарии преподавателя

В данном курсе рассматривается настройка и работа Postgres Pro Enterprise в среде Linux.

Для добавления ссылок в путь поиска PATH и для подключения man-страниц используется скрипт pg-wrapper.

https://postgrespro.ru/docs/enterprise/16/pg-wrapper

Для инициализации кластера Postgres Pro Enterprise рекомендуется скрипт pg-setup. Он может находить доступные для установки сервера порты, инициализировать и настраивать экземпляры Postgres Pro Enterprise. Запускать pg-setup нужно от имени пользователя root, а действия с СУБД скрипт выполняет под ролью postgres.

https://postgrespro.ru/docs/enterprise/16/pg-setup

Скрипт также позволяет запустить сервер, остановить его и настроить автоматический запуск.

https://postgrespro.ru/docs/enterprise/16/binary-installation-on-linux#STARTI NG-SERVER-AUTOMATICALLY

По умолчанию в кластере:

● включаются подсчет и проверка контрольных сумм;

● запускается утилита pgpro_tune, которая добавляет в конфигурацию экземпляра настройки, оптимизирующие работу на конкретном оборудовании;

● поддерживается библиотека ICU, в которой реализована платформонезависимая сортировка.

https://postgrespro.ru/docs/enterprise/16/collation#COLLATION-MANAGING

Page 7: Информация о сервере

pgpro\_controldata

  • вывод информации о кластере и/или сервере
  • чтение младших мажорных версий и редакций
  • сравнение параметров сервера, влияющих на совместимость
  • SQL-функции
    • проверка информации о системе после установки
    • версия и редакция Postgres Pro
    • идентификатор состояния исходного кода
  • pg_config
    • версия и редакция Postgres Pro Enterprise

Комментарии преподавателя

С помощью утилиты pgpro_controldata можно вывести управляющую информацию о кластере PostgreSQL или Postgres Pro Enterprise и параметры совместимости кластера. Без указания параметров утилита pgpro_controldata работает аналогично утилите pg_controldata. Устанавливается отдельным пакетом.

https://postgrespro.ru/docs/enterprise/16/app-pgprocontroldata

Если Postgres Pro Enterprise уже установлен, с помощью SQL-функций можно узнать версию кластера, название редакции и идентификатор состояния исходного кода (хеш коммита), из которого был собран пакет — эти сведения пригодятся для обращения в техподдержку.

https://postgrespro.ru/docs/enterprise/16/functions-info#FUNCTIONS-INFO-SESSION-TABLE

Аналогичная информация выводится и с помощью утилиты pg_config.

https://postgrespro.ru/docs/enterprise/16/app-pgconfig

Page 8: Проверка системы после установки

В виртуальной машине курса установлен пакет postgrespro-ent-16-server, исполняемые файлы находятся в каталоге /opt/pgpro/ent-16/bin/:

student$ ls -C /opt/pgpro/ent-16/bin/
bihactl       oid2name
 pg_dump
  pg_resetwal
   pg_waldump
check-db-dir  pg_amcheck
 pg_dumpall
  pg_restore
   pg-wrapper
clusterdb     pg_archivecleanup  pg_dump_anon.sh  pg_rewind
   postgres
createdb      pg_basebackup
 pg_isready
  pg-setup
   psql
createuser    pgbench
 pg_probackup
  pg_test_fsync    reindexdb
dropdb       pg_checksums
 pgpro_tune
  pg_test_timing   vacuumdb
dropuser      pg_controldata
 pg_receivewal   pg_upgrade
   vacuumlo
initdb       pg_ctl
 pg_recvlogical   pg_verifybackup

Для инициализации кластера была использована утилита pg-setup. Ключ –no-tune отключает применение дополнительных настроек:

student$ sudo /opt/pgpro/ent-16/bin/pg-setup initdb -g --no-tune -D /var/lib/pgpro/ent-16 --auth=trust

Этой же утилитой pg-setup была настроена служба с автозапуском, так что экземпляром можно управлять в стиле ОС:

student$ sudo systemctl status postgrespro-ent-16.service
● postgrespro-ent-16.service - Postgres Pro ent 16 database server
     Loaded: loaded (/usr/lib/systemd/system/postgrespro-ent-16.service; enabled; preset:
enabled)
     Active: active (running) since Mon 2026-07-27 23:33:31 MSK; 2s ago
   Main PID: 789676 (postgres)
      Tasks: 9 (limit: 3478)
     Memory: 48.6M (peak: 48.9M)
        CPU: 102ms
     CGroup: /system.slice/postgrespro-ent-16.service
             ├─789676 /opt/pgpro/ent-16/bin/postgres -D /var/lib/pgpro/ent-16
             ├─789677 "postgres: logger "
             ├─789678 "postgres: checkpointer "
             ├─789679 "postgres: background writer "
             ├─789681 "postgres: walwriter "
             ├─789682 "postgres: autovacuum launcher "
             ├─789683 "postgres: cfs-worker-0 "
             ├─789684 "postgres: logical replication launcher "
             └─789869 "postgres: student student [local] idle"
июл 27 23:33:31 course systemd[1]: Starting postgrespro-ent-16.service - Postgres Pro
ent 16 database server...
июл 27 23:33:31 course postgres[789676]: 2026-07-27 23:33:31.254 MSK [789676] LOG:
Start 1 background garbage collection workers for CFS
июл 27 23:33:31 course postgres[789676]: 2026-07-27 23:33:31.287 MSK [789676] LOG:
Start CFS version 0.55 supported compression algorithms pglz,zlib,lz4,zstd GC enabled
июл 27 23:33:31 course postgres[789676]: 2026-07-27 23:33:31.306 MSK [789676] LOG:
redirecting log output to logging collector process
июл 27 23:33:31 course postgres[789676]: 2026-07-27 23:33:31.306 MSK [789676] HINT:
Future log output will appear in directory "log".
июл 27 23:33:31 course systemd[1]: Started postgrespro-ent-16.service - Postgres Pro
ent 16 database server.

Статус можно узнать и с помощью традиционной утилиты pg_ctl:

postgres$ /opt/pgpro/ent-16/bin/pg_ctl \
  -w \
  -D /var/lib/pgpro/ent-16 \
  status
pg_ctl: server is running (PID: 789676)
/opt/pgpro/ent-16/bin/postgres "-D" "/var/lib/pgpro/ent-16"

Для запуска, остановки и перезапуска экземпляра сервера рекомендуется использовать те средства, которые уже используются в вашей компании. Информацию об установленной системе (номер версии и название редакции) можно узнать разными способами, например, с помощью утилиты pg_config или SQL-функций:

=> \pset xheader_width 90

Page 9: Page 9

Expanded header width is 90.
=> SELECT pgpro_edition(), pgpro_version() \gx
-[ RECORD 1 ]-+---------------------------------------------------------------------------
pgpro_edition | enterprise
pgpro_version | Postgres Pro (enterprise) 16.14.1 on x86_64-pc-linux-gnu, compiled by gcc
(Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0, 64-bit

Можно вывести значения конфигурационных параметров SQL-командой SHOW, как это делается в обычном PostgreSQL:

=> SHOW data_checksums;
 data_checksums
----------------
 on
(1 row)
=> SHOW data_directory;
    data_directory
-----------------------
 /var/lib/pgpro/ent-16
(1 row)

Файл postgresql.conf находится в каталоге данных:

=> SHOW config_file;
              config_file
---------------------------------------
 /var/lib/pgpro/ent-16/postgresql.conf
(1 row)

В виртуальной машине в основной конфигурационный файл Postgres Pro Enterprise добавлена директива include_dir для включения дополнительных файлов:

student$ sudo grep '^include_dir' /var/lib/pgpro/ent-16/postgresql.conf
include_dir='conf.d'
=> \q

Page 10: Нумерация версий

Source slide page 10: Нумерация версий{#source-figure-010 caption=“Source slide page 10: Нумерация версий”}

16 14 1 . .

  • основная версия PostgreSQL
  • дополнительный выпуск PostgreSQL
    • выпуск Postgres Pro Enterprise

Комментарии преподавателя

Номер версии Postgres Pro Enterprise состоит из трех частей: номера основной версии (major release), номера дополнительного выпуска (minor release) PostgreSQL и номера выпуска Postgres Pro Enterprise.

Новая основная версия привносит изменение функционала: какие-то возможности добавляются и изменяются, реже — удаляются.

Дополнительные выпуски служат для переноса изменений, сделанных в соответствующем выпуске PostgreSQL, а также для исправления ошибок, проблем безопасности и производительности, найденных в предыдущих выпусках.

Выпуски Postgres Pro Enterprise служат исключительно для исправления ошибок, проблем безопасности и производительности, найденных в предыдущих выпусках Postgres Pro Enterprise.

При обновлении нужно учитывать, что в новом выпуске может быть прекращена поддержка определенных версий операционных систем.

https://postgrespro.ru/docs/enterprise/16/upgrading

Page 11: Обновление сервера

Обновление Postgres Pro Enterprise

  • Переход с PostgreSQL и редакций Postgres Pro

Page 12: Обновление Enterprise

Обновление в пределах основной версии

  • доп. выпуск PostgreSQL или выпуск Postgres Pro Enterprise
  • установить исполняемые файлы и перезапустить сервер
  • Обновление основной версии
    • pg_dump + pg_restore
    • pg_upgrade

Комментарии преподавателя

В целом процедура обновления сервера Postgres Pro Enterprise аналогична процедуре обновления PostgreSQL. Внимательно прочитайте замечания ко всем выпускам между текущим и целевым.

В любом случае сначала устанавливаются пакеты новой версии или выпуска.

При обновлении на дополнительный выпуск или выпуск Postgres Pro Enterprise после этого достаточно перезапустить сервер.

При обновлении основной версии для переноса данных есть два пути:

● сделать логическую резервную копию утилитами pg_dumpall или pg_dump и восстановить данные с помощью pg_restore / psql;

● воспользоваться утилитой pg_upgrade.

Если статистику планировщика запросов не переносили из старой версии, после переноса данных нужно выполнить анализ.

После любого обновления следует проверить и при необходимости обновить версии расширений в базах данных.

Page 13: Варианты перехода

Source slide page 13: Варианты перехода{#source-figure-013 caption=“Source slide page 13: Варианты перехода”}

Поддерживаются pg_dump+pg_restore и pg_upgrade Понижение версии не поддерживается

Комментарии преподавателя

В иерархии PostgreSQL < Postgres Pro Standard < Postgres Pro Enterprise возможен перенос данных с младшей на более старшую редакцию СУБД. При этом поддерживается как перенос с помощью логического резервирования и восстановления (pg_dump + pg_restore), так и перенос с помощью утилиты pg_upgrade. Возможные пути переноса и ограничения показаны на рисунке.

При этом возможен переход только на ту же или бóльшую основную версию СУБД, понижение версии (downgrade) не поддерживается.

Формат табличных страниц Postgres Pro Enterprise отличается от формата PostgreSQL и Postgres Pro Standard (подробности в теме «Транзакции и сеансы»). Однако непосредственно при обновлении pg_upgrade конвертация всех страниц не выполняется — это слишком затратная процедура. Такое преобразование выполняется позже постепенно — страницы конвертируются при первом обращении к ним после обновления системы.

Page 14: Перенос данных из PostgreSQL

При миграции из PostgreSQL можно использовать средства логического резервного копирования или утилиту pg_upgrade. В виртуальной машине установлен PostgreSQL 16 и инициализирован кластер prod. Запустим экземпляр.

student$ sudo pg_ctlcluster 16 prod start

В отдельной базе данных создадим таблицу:

student$ psql -p 5433
=> CREATE DATABASE pgpro_install;
CREATE DATABASE
=> \c pgpro_install
You are now connected to database "pgpro_install" as user "student".
=> CREATE TABLE test(s) AS VALUES('Строка из PostgreSQL');
SELECT 1

Остановим экземпляр PostgreSQL.

student$ sudo pg_ctlcluster 16 prod stop

Будем переносить данные с помощью pg_upgrade. Нам понадобится пустой кластер Postgres Pro Enterprise.

student$ sudo mkdir /var/lib/pgpro/ent-16-prod
student$ sudo chown postgres: /var/lib/pgpro/ent-16-prod
student$ sudo -u postgres /opt/pgpro/ent-16/bin/initdb \
  -D /var/lib/pgpro/ent-16-prod --auth=trust
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
initdb: --icu-locale not specified, using lc_collate
Using language tag "en-US" for ICU locale "en_US.UTF-8".
The database cluster will be initialized with this locale configuration:
  provider:    icu
  ICU locale:  en-US
  LC_COLLATE:  en_US.UTF-8
  LC_CTYPE:    en_US.UTF-8
  LC_MESSAGES: en_US.UTF-8
  LC_MONETARY: ru_RU.UTF-8
  LC_NUMERIC:  ru_RU.UTF-8
  LC_TIME:     ru_RU.UTF-8
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are enabled.
fixing permissions on existing directory /var/lib/pgpro/ent-16-prod ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Europe/Moscow
creating configuration files ... ok
performing automatic tuning ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
    /opt/pgpro/ent-16/bin/pg_ctl -D /var/lib/pgpro/ent-16-prod -l logfile start

Для начала запустим утилиту в режиме проверки. Ключами -b и -B нужно указать пути к исполняемым файлам нового и старого кластера, а ключами -d и -D — пути к postgresql.conf.

postgres$ /opt/pgpro/ent-16/bin/pg_upgrade --check \
  -b /usr/lib/postgresql/16/bin/ \
  -B /opt/pgpro/ent-16/bin/ \

Page 15: Page 15

  -d /etc/postgresql/16/prod \
  -D /var/lib/pgpro/ent-16-prod
Finding the real data directory for the source cluster        ok
Performing Consistency Checks
-----------------------------
Checking cluster versions                                     ok
Checking cluster editions                                     ok
Checking database user is the install user                    ok
Checking database connection settings                         ok
Checking for prepared transactions                            ok
Checking for system-defined composite types in user tables    ok
Checking for reg* data types in user tables                   ok
Checking for contrib/isn with bigint-passing mismatch         ok
Checking for not-null constraint inconsistencies              ok
Checking for incompatible "xid" data type                     ok
Checking for hash indexes                                     ok
Checking for spgist indexes                                   ok
Checking for brin indexes                                     ok
Checking for external indexes                                 ok
Checking for presence of required libraries                   ok
Checking database user is the install user                    ok
Checking for prepared transactions                            ok
Checking for new cluster tablespace directories               ok
*Clusters are compatible*

Все в порядке, можно переносить данные.

postgres$ /opt/pgpro/ent-16/bin/pg_upgrade \
  -b /usr/lib/postgresql/16/bin/ \
  -B /opt/pgpro/ent-16/bin/ \
  -d /etc/postgresql/16/prod \
  -D /var/lib/pgpro/ent-16-prod
Finding the real data directory for the source cluster        ok
Performing Consistency Checks
-----------------------------
Checking cluster versions                                     ok
Checking cluster editions                                     ok
Checking database user is the install user                    ok
Checking database connection settings                         ok
Checking for prepared transactions                            ok
Checking for system-defined composite types in user tables    ok
Checking for reg* data types in user tables                   ok
Checking for contrib/isn with bigint-passing mismatch         ok
Checking for not-null constraint inconsistencies              ok
Checking for incompatible "xid" data type                     ok
Checking for hash indexes                                     ok
Checking for spgist indexes                                   ok
Checking for brin indexes                                     ok
Checking for external indexes                                 ok
Creating dump of global objects                               ok
Creating dump of database schemas                             ok
Checking for presence of required libraries                   ok
Checking database user is the install user                    ok
Checking for prepared transactions                            ok
Checking for new cluster tablespace directories               ok
If pg_upgrade fails after this point, you must re-initdb the
new cluster before continuing.
Performing Upgrade
------------------
Setting locale and encoding for new cluster                   ok
Analyzing all rows in the new cluster                         ok
Freezing all rows in the new cluster                          ok
Transforming commit log segments                              ok
Setting oldest XID for new cluster                            ok
Setting next transaction ID and epoch for new cluster         ok
Deleting files from new pg_multixact/offsets                  ok
Converting pg_multixact/offsets to new format                 ok
Deleting files from new pg_multixact/members                  ok
Converting pg_multixact/members to new format                 ok
Setting next multixact ID and offset for new cluster          ok
Resetting WAL archives                                        ok
Setting frozenxid and minmxid counters in new cluster         ok
Restoring global objects in the new cluster                   ok
Restoring database schemas in the new cluster                 ok
Setting minmxid counter in new cluster                        ok

Page 16: Page 16

Copying user relation files                                   ok
Setting next OID for new cluster                              ok
Sync data directory to disk                                   ok
Creating script to delete old cluster                         ok
Checking for hash indexes                                     ok
Checking for spgist indexes                                   ok
Checking for brin indexes                                     ok
Checking for external indexes                                 ok
Checking for extension updates                                ok
Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade.
Once you start the new server, consider running:
    /opt/pgpro/ent-16/bin/vacuumdb --all --analyze-in-stages
Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh

Добавим директиву include_dir в основной конфигурационный файл и создадим каталог для дополнительных файлов:

student$ echo include_dir=\'conf.d\' | sudo tee -a /var/lib/pgpro/ent-16-prod/postgresql.conf
include_dir='conf.d'
student$ sudo mkdir /var/lib/pgpro/ent-16-prod/conf.d
student$ sudo chown postgres /var/lib/pgpro/ent-16-prod/conf.d

Задаем порт в отдельном конфигурационном файле и запускаем сервер Postgres Pro Enterprise.

/var/lib/pgpro/ent-16-prod/conf.d/install.conf
port = 5434
postgres$ /opt/pgpro/ent-16/bin/pg_ctl \
  -w \
  -D /var/lib/pgpro/ent-16-prod \
  -l /var/lib/pgpro/ent-16-prod/pgpro-ent.log \
  start
waiting for server to start.... done
server started
student$ psql -p 5434 -d pgpro_install
=> \pset xheader_width 80
Expanded header width is 80.
=> SELECT pgpro_version() \gx
-[ RECORD 1 ]-+-----------------------------------------------------------------
pgpro_version | Postgres Pro (enterprise) 16.14.1 on x86_64-pc-linux-gnu, compiled by gcc
(Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0, 64-bit
=> SELECT * FROM test;
          s
----------------------
 Строка из PostgreSQL
(1 row)

Данные перенесены в Postgres Pro Enterprise.

Page 17: Итоги

Postgres Pro Enterprise можно установить «по умолчанию» или выборочно

  • PostgreSQL и Postgres Pro Standard можно обновить до Postgres Pro Enterprise Postgres Pro Enterprise имеет собственные административные утилиты и функции

Page 18: Практика

  1. Какой размер имеет сейчас буферный кеш сервера Postgres Pro Enterprise? Увеличьте его на 10 % с помощью команды ALTER SYSTEM. 2. Настройте журнал сообщений так, чтобы в него попадала информация обо всех выполняемых запросах. Запустите стандартный тест pgbench на 90 секунд. Найдите в журнале сообщений информацию о выполненных запросах. Проанализируйте журнал с помощью утилиты pgbadger. 3. Отключите запись информации, настроенную в п.2.

Комментарии преподавателя

  1. Создайте .conf-файл с произвольным именем в подкаталоге conf.d каталога PGDATA кластера и поместите в него необходимые настройки конфигурационных параметров. Содержимое этого файла будет учтено в конфигурации благодаря директиве include_dir, находящейся в конце конфигурационного файла postgresql.conf.

  2. Удалите конфигурационный файл, созданный в п.2

Page 19: 1. Размер кеша

Текущее значение параметра:

=> SHOW shared_buffers;
 shared_buffers
----------------
 128MB
(1 row)

Задаем на 10% больше:

=> ALTER SYSTEM SET shared_buffers='141 MB';
ALTER SYSTEM

Перезапуск и проверка:

=> \q
student$ sudo systemctl restart postgrespro-ent-16.service
student$ psql
=> SHOW shared_buffers;
 shared_buffers
----------------
 141MB
(1 row)

2. Тест pgbench и анализ журнала сообщений

Инициализируем pgbench в отдельной базе данных

=> CREATE DATABASE pgpro_install;
CREATE DATABASE
student$ /opt/pgpro/ent-16/bin/pgbench -i pgpro_install
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data (client-side)...
100000 of 100000 tuples (100%) done (elapsed 0.19 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done in 0.79 s (drop tables 0.00 s, create tables 0.10 s, client-side generate 0.31 s,
vacuum 0.17 s, primary keys 0.20 s).

Включаем вывод в журнал:

/var/lib/pgpro/ent-16/conf.d/install.conf
log_min_duration_statement = 0
student$ sudo systemctl reload postgrespro-ent-16.service

Проверяем значение параметра:

=> SHOW log_min_duration_statement;
 log_min_duration_statement
----------------------------
 0
(1 row)

Запускаем тест на 90 секунд.

student$ /opt/pgpro/ent-16/bin/pgbench -T 90 -P 10 pgpro_install

Page 20: Page 20

pgbench (16.14)
starting vacuum...end.
progress: 10.0 s, 103.3 tps, lat 9.673 ms stddev 8.356, 0 failed
progress: 20.0 s, 102.6 tps, lat 9.728 ms stddev 8.196, 0 failed
progress: 30.0 s, 105.0 tps, lat 9.535 ms stddev 2.439, 0 failed
progress: 40.0 s, 106.8 tps, lat 9.353 ms stddev 1.480, 0 failed
progress: 50.0 s, 106.5 tps, lat 9.397 ms stddev 1.521, 0 failed
progress: 60.0 s, 105.0 tps, lat 9.519 ms stddev 1.876, 0 failed
progress: 70.0 s, 104.4 tps, lat 9.575 ms stddev 1.351, 0 failed
progress: 80.0 s, 108.6 tps, lat 9.207 ms stddev 2.021, 0 failed
progress: 90.0 s, 110.8 tps, lat 9.024 ms stddev 1.082, 0 failed
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 1
number of threads: 1
maximum number of tries: 1
duration: 90 s
number of transactions actually processed: 9531
number of failed transactions: 0 (0.000%)
latency average = 9.441 ms
latency stddev = 4.147 ms
initial connection time = 6.361 ms
tps = 105.902830 (without initial connection time)

Файлы журнала сообщений находятся в /var/lib/pgpro/ent-16/log:

student$ sudo bash -c 'cd /var/lib/pgpro/ent-16/log; ls -Ct *.log'
postgresql-2026-07-28_000640.log  postgresql-2026-07-14_110515.log
postgresql-2026-07-28_000636.log

Несколько последних записей журнала:

student$ sudo tail /var/lib/pgpro/ent-16/log/postgresql-2026-07-28_000640.log
2026-07-28 00:08:18.488 MSK [870799] LOG:  duration: 0.119 ms  statement: UPDATE
pgbench_branches SET bbalance = bbalance + -1932 WHERE bid = 1;
2026-07-28 00:08:18.489 MSK [870799] LOG:  duration: 0.098 ms  statement: INSERT INTO
pgbench_history (tid, bid, aid, delta, mtime) VALUES (10, 1, 62451, -1932,
CURRENT_TIMESTAMP);
2026-07-28 00:08:18.496 MSK [870799] LOG:  duration: 7.082 ms  statement: END;
2026-07-28 00:08:18.496 MSK [870799] LOG:  duration: 0.024 ms  statement: BEGIN;
2026-07-28 00:08:18.497 MSK [870799] LOG:  duration: 0.246 ms  statement: UPDATE
pgbench_accounts SET abalance = abalance + -2069 WHERE aid = 16482;
2026-07-28 00:08:18.497 MSK [870799] LOG:  duration: 0.156 ms  rows: 1  size: 11 bytes
statement: SELECT abalance FROM pgbench_accounts WHERE aid = 16482;
2026-07-28 00:08:18.497 MSK [870799] LOG:  duration: 0.177 ms  statement: UPDATE
pgbench_tellers SET tbalance = tbalance + -2069 WHERE tid = 5;
2026-07-28 00:08:18.498 MSK [870799] LOG:  duration: 0.119 ms  statement: UPDATE
pgbench_branches SET bbalance = bbalance + -2069 WHERE bid = 1;
2026-07-28 00:08:18.498 MSK [870799] LOG:  duration: 0.089 ms  statement: INSERT INTO
pgbench_history (tid, bid, aid, delta, mtime) VALUES (5, 1, 16482, -2069,
CURRENT_TIMESTAMP);
2026-07-28 00:08:18.505 MSK [870799] LOG:  duration: 7.151 ms  statement: END;

pgBadger уже установлен в виртуальной машине:

student$ pgbadger --version
pgBadger version 13.2

Утилите нужно передать: имя html-файла для отчета; формат журнала сообщений; файл журнала или список файлов. Запускаем:

student$ sudo pgbadger --outfile=/tmp/out.html \
  --format=stderr --no-progressbar \
  /var/lib/pgpro/ent-16/log/postgresql-2026-07-28_000640.log
LOG: Ok, generating html report...

Утилита сгенерировала отчет в файле out.html:

student$ ls -l /tmp/out.html
-rw-r--r-- 1 root root 984269 июл 28 00:08 /tmp/out.html

Заглянем в отчет:

Page 21: 3. Восстановление конфигурации

Открываем /tmp/out.html…

student$ open /tmp/out.html

Удалим созданный файл и перечитаем конфигурацию:

student$ sudo rm -f /var/lib/pgpro/ent-16/conf.d/install.conf
student$ sudo systemctl reload postgrespro-ent-16.service

Уборка

Удалим созданный отчет.

student$ sudo rm -f /tmp/out.html

Page 22: Практика PPEM

  1. Войдите в веб-приложение PPEM как admin и найдите все параметры основного экземпляра, значения которых отличаются от значений по умолчанию. 2. Выясните текущее значение параметра shared_buffers. В каком конфигурационном файле находится строка, устанавливающая это значение? Увеличьте значение в два раза и примените это изменение. 3. Создайте новый экземпляр PostgresPro Enterprise с каталогом данных в /var/lib/pgpro/ent-16-opt. Запустите экземпляр и убедитесь, что он работает.

Page 23: 1. Параметры со значениями, отличными от значений по умолчанию

На главной странице в блоке «Экземпляры» выберите ent-16. В навигационной панели выберите вкладку «Параметры» и установите соответствующий переключатель на главном экране.

2. Значение параметра shared\_buffers

В «Параметрах» найдите shared_buffers. Под названием параметра будет информация, указывающую на строку и файл, где установлено это значение. В поле ввода укажите новое значение параметра и нажмите «Сохранить». Для применения нового значения потребуется перезапуск экземпляра; его нужно дополнительно подтвердить.

3. Создание и запуск нового экземпляра

В блоке «Экземпляры» нажмите «Добавить экземпляр», а затем в открывшемся окне выберите «Создать новый экземпляр» и нажмите «Далее». В новом окне заполните необходимые поля и нажмите «Выполнить». Убедитесь, что инициализация нового экземпляра завершена — в списке он должен иметь статус «Остановлен» — и затем нажмите «Запустить» и дождитесь изменения статуса. Чтобы проверить, что создание и запуск успешны, можно воспользоваться списком заданий. Для этого нажмите на пиктограмму колокольчика в панели инструментов.