Базовый инструментарий
Конфигурирование сервера
16
Авторские права
© Postgres Professional, 2017–2024
Авторы: Егор Рогов, Павел Лузанов, Илья Баштанов, Алексей Береснев
Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Параметры конфигурации
Файлы конфигурации
Управление параметрами на уровнях экземпляра и сеанса
3
Параметры
Задача
управление работой и поведением СУБД
Установка
для экземпляра — файлы конфигурации
для отдельной базы или пользователя
для текущего сеанса
В PostgreSQL существует большое количество параметров, влияющих на
работу СУБД. Параметры позволяют управлять потреблением ресурсов,
настраивать работу серверных процессов и многое другое.
Например, при помощи параметра max_connections можно ограничить
количество одновременных подключений к серверу.
Полный список и описание параметров конфигурации:
В этой теме мы не изучаем назначение отдельных параметров
конфигурации, а лишь рассматриваем, какими способами им можно
устанавливать значения.
Для установки параметров, в первую очередь, используются файлы
конфигурации. Если не определено иное, значения, установленные в этих
файлах, действуют для всего экземпляра СУБД.
Ряд параметров можно установить для сеансов в отдельной базе данных или
для сеансов отдельного пользователя. Такие установки будут иметь
предпочтение перед файлами конфигурации. Мы подробнее коснемся этого
варианта в следующих темах курса.
Наконец, многими параметрами можно управлять на уровне отдельного
сеанса, прямо во время работы.
4
postgresql.conf
Основной файл конфигурации
считывается при старте сервера
возможность подключения дополнительных файлов
по умолчанию находится в каталоге с данными (PGDATA)
/etc/postgresql/16/main
При изменении параметров необходимо перечитать файл
$ pg_ctl reload
$ pg_ctlcluster 16 main reload
=> SELECT pg_reload_conf();
изменение ряда параметров требует перезапуска сервера
Основной конфигурационный файл — postgresql.conf.
Расположение файла по умолчанию задается при сборке PostgreSQL. При
запуске исполняемого файла сервера с помощью аргумента командной
строки -c config_file можно задать требуемое местонахождение файла
конфигурации.
По умолчанию файл располагается в каталоге с данными (PGDATA), но
пакетные дистрибутивы обычно размещают этот файл в другом месте, в
соответствии с правилами, принятыми в конкретной ОС.
Это текстовый, хорошо документированный файл, хранящий параметры
в формате «ключ=значение».
Есть возможность подключать дополнительные файлы. По умолчанию
в Ubuntu подключаются все файлы из каталога /etc/postgresql/16/main/conf.d.
Если один и тот же параметр указан в конфигурационных файлах несколько
раз, будет использоваться значение, считанное последним.
Для вступления в силу внесенных в файл изменений необходимо, чтобы
сервер перечитал файл. Для некоторых параметров требуется перезагрузка
сервера.
6
postgresql.auto.conf
Файл конфигурации, управляемый командами SQL
ALTER SYSTEM добавляет или изменяет строку
SET параметр TO значение;
ALTER SYSTEM RESET параметр; удаляет строку
ALTER SYSTEM RESET ALL; удаляет все строки
считывается после postgresql.conf
Расположение
всегда в каталоге с данными (PGDATA)
Действия при изменении
аналогично postgresql.conf
Последним считывается файл postgresql.auto.conf. Он всегда располагается
в каталоге данных (PGDATA).
Этот файл не следует изменять вручную, для его редактирования
предназначена команда ALTER SYSTEM. По сути, ALTER SYSTEM
представляет собой SQL-интерфейс для управления параметрами
конфигурации.
Для применения изменений, сделанных командой ALTER SYSTEM, сервер
должен перечитать конфигурационные файлы, как и в случае с изменением
файла postgresql.conf.
Содержимое файлов конфигурации можно увидеть в представлении
pg_file_settings. А действующие значения параметров — в представлении
pg_settings.
Более подробная информация о команде ALTER SYSTEM:
8
В текущем сеансе
установка до конца сеанса или транзакции
установка параметров транзакционна
допускаются пользовательские параметры
клиентское
приложение
PostgreSQL
PostgreSQL
SET, set_config
SHOW, current_setting
Значения параметров можно изменить прямо во время сеанса
командой SET или функцией set_config. А для получения текущего
значения служит команда SHOW или функция current_setting.
Устанавливая новое значение, можно указать срок его действия: до
конца сеанса (по умолчанию) или до конца транзакции (SET LOCAL).
В любом случае установка параметров транзакционна: в случае
отмены текущей транзакции, значения измененных в ней параметров
вернутся к состоянию на начало транзакции.
Помимо системных параметров PostgreSQL, этими же командами и
функциями можно пользоваться для создания и получения значений
пользовательских параметров.
10
Итоги
Основной файл конфигурации — postgresql.conf
ALTER SYSTEM — SQL-интерфейс для управления
параметрами конфигурации в postgresql.auto.conf
При изменениях в файлах нужно перечитать конфигурацию
Многие параметры можно изменять для текущего сеанса
Изменение части параметров требует перезапуска сервера
11
Практика
1. Получите список параметров, для изменения которых
требуется перезапуск сервера.
2. В дополнительном подключаемом файле конфигурации
сделайте ошибку при изменении параметра max_connections.
Перезапустите сервер. Убедитесь, что сервер не стартует,
и проверьте журнал сообщений.
Исправьте ошибку и запустите сервер.
2. Расположение файла postgresql.conf можно найти, посмотрев
значение параметра c onf ig_file, как это сделано в демонстрации.
В завершающей части этого файла имеется директива include_dir,
подключающая дополнительные файлы конфигурации.
Создайте в указанном этой директивой каталоге файл
max_connections.conf, отредактировав его либо от имени пользователя
postgres, либо от имени суперпользователя операционной системы.
Для получения соответствующих прав используйте команду
операционной системы sudo.
Используйте знакомый вам текстовый редактор. Например, так:
sudo nano /etc/postgresql/16/main/conf.d/max_connections.conf
Для выхода из nano используйте сочетание клавиш Ctrl+X.
12
Практика+
1. Установите параметр work_mem = 32MB в командной строке
запуска утилиты psql.
2. В пакетном дистрибутиве для Ubuntu файл postgresql.conf
находится не в каталоге PGDATA. Каким образом сервер
находит этот файл конфигурации при запуске?
1. Используйте один из двух способов: ключ options в строке
подключения или переменная среды PGOPTIONS.
Информация о формировании строки подключения:
2. Расположение файла postgresql.conf можно посмотреть в параметре
config_file.
Чтобы узнать, где задается этот параметр, посмотрите вывод команды
ps для основного процесса postgres. Идентификатор процесса (PID)
записан в первой строке файла postmaster.pid, который находится
в каталоге с данными (PGDATA).