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