Базовый инструментарий
Конфигурирование сервера
13
Авторские права
© Postgres Professional, 2015–2022
Авторы: Егор Рогов, Павел Лузанов, Илья Баштанов
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Параметры конфигурации
Файлы конфигурации
Управление параметрами на уровнях экземпляра и сеанса
3
Параметры
Задача
управление работой и поведением СУБД
Установка
для экземпляра — файлы конфигурации
для отдельной базы или пользователя
для текущего сеанса
В PostgreSQL существует большое количество параметров, влияющих на
работу СУБД. Параметры позволяют управлять потреблением ресурсов,
настраивать работу серверных процессов и многое другое.
Например, при помощи параметра max_connections можно ограничить
количество одновременных подключений к серверу.
Полный список и описание параметров конфигурации:
В этой теме мы не изучаем назначение отдельных параметров
конфигурации, а лишь рассматриваем, какими способами им можно
устанавливать значения.
Для установки параметров, в первую очередь, используются файлы
конфигурации. Если не определено иное, значения, установленные в этих
файлах, действуют для всего экземпляра СУБД.
Ряд параметров можно установить для сеансов в отдельной базе данных или
для сеансов отдельного пользователя. Такие установки будут иметь
предпочтение перед файлами конфигурации. Мы подробнее коснемся этого
варианта в следующих темах курса.
Наконец, многими параметрами можно управлять на уровне отдельного
сеанса, прямо во время работы.
4
postgresql.conf
Основной файл конфигурации
считывается при старте сервера
по умолчанию находится в каталоге с данными (PGDATA)
/etc/postgresql/13/main
При изменении параметров необходимо перечитать файл
$ pg_ctl reload
$ pg_ctlcluster 13 main reload
=> SELECT pg_reload_conf();
изменение ряда параметров требует перезапуска сервера
Основной конфигурационный файл — postgresql.conf.
Расположение файла задается при сборке PostgreSQL. По умолчанию файл
располагается в каталоге с данными (PGDATA), но пакетные дистрибутивы
обычно размещают этот файл в другом месте, в соответствии с правилами,
принятыми в конкретной ОС.
Это текстовый, хорошо документированный, файл, хранящий параметры
в формате «ключ=значение».
Если один и тот же параметр указан в конфигурационных файлах несколько
раз, использоваться будет значение, считанное последним.
Для вступления в силу внесенных в файл изменений необходимо, чтобы
сервер перечитал файл. Для некоторых параметров требуется перезагрузка
сервера.
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.
Содержимое обоих файлов (postgresql.conf и postgresql.auto.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. В файле postgresql.conf сделайте ошибку при изменении
параметра max_connections.
Перезапустите сервер. Убедитесь, что сервер не стартует,
и проверьте журнал сообщений.
Исправьте ошибку и запустите сервер.
2. Расположение файла postgresql.conf можно найти, посмотрев
значение параметра config_file.
Редактируйте файл postgresql.conf либо от имени владельца –
пользователя postgres), либо с правами суперпользователя.
В первом случае удобно открыть новое окно терминала и выполнить
в нем команду:
sudo su postgres
Во втором случае запускайте редактор из командной строки через
команду sudo, например:
sudo vim postgresql.conf
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).