Как посмотреть настройки PostgreSQL - команды SHOW и pg_settings | AdminWiki

Как посмотреть настройки PostgreSQL: полное руководство для администраторов

18 декабря 2025 7 мин. чтения #SHOW #pg_settings #postgresql #администрирование бд #конфигурация #настройки PostgreSQL

Представь, что ты пришел на новый проект или унаследовал существующий сервер PostgreSQL. Первое, что нужно сделать — понять, как настроена система. Знание текущих параметров конфигурации критически важно для оптимизации производительности, обеспечения безопасности и устранения неполадок.

В этой статье я, как опытный DevOps ментор, покажу тебе все способы посмотреть настройки PostgreSQL — от базовых команд до продвинутых техник анализа конфигурации.

Основные способы просмотра настроек PostgreSQL

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

1. Команда SHOW — самый простой способ

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

sql
-- Показать конкретный параметр
SHOW shared_buffers;
SHOW max_connections;
SHOW work_mem;

-- Показать все параметры (очень длинный вывод)
SHOW ALL;

-- Показать параметры с фильтрацией
SHOW ALL LIKE '%memory%';
SHOW ALL LIKE '%log%';
Важно: Команда SHOW показывает текущие значения параметров, которые могут отличаться от значений в конфигурационных файлах, если параметры были изменены динамически.

2. Системное представление pg_settings — полная информация

Для получения детальной информации о каждом параметре используй представление pg_settings:

sql
-- Базовая информация о параметрах
SELECT name, setting, unit, context, short_desc 
FROM pg_settings 
ORDER BY name;

-- Показать измененные параметры
SELECT name, setting, source, sourcefile, sourceline
FROM pg_settings 
WHERE source NOT IN ('default', 'override');

-- Поиск параметров по ключевым словам
SELECT name, setting, short_desc
FROM pg_settings 
WHERE name ILIKE '%buffer%' 
   OR short_desc ILIKE '%memory%';

3. Конфигурационные файлы PostgreSQL

Основные настройки хранятся в конфигурационных файлах. Вот как их найти и просмотреть:

bash
# Найти расположение конфигурационных файлов
sudo -u postgres psql -c "SHOW config_file;"
sudo -u postgres psql -c "SHOW hba_file;"
sudo -u postgres psql -c "SHOW ident_file;"

# Просмотреть основной конфигурационный файл (postgresql.conf)
sudo cat /etc/postgresql/14/main/postgresql.conf
# или
sudo cat /var/lib/pgsql/14/data/postgresql.conf

# Просмотреть файл аутентификации (pg_hba.conf)
sudo cat /etc/postgresql/14/main/pg_hba.conf

Практические примеры и сценарии

Анализ критических параметров производительности

Создадим полезный запрос для анализа ключевых параметров:

sql
-- Критические параметры для производительности
SELECT 
  name,
  setting,
  unit,
  CASE 
    WHEN context = 'postmaster' THEN 'Требует перезагрузки'
    WHEN context = 'sighup' THEN 'Требует reload (SIGHUP)'
    WHEN context = 'user' THEN 'Можно изменить в сессии'
    WHEN context = 'superuser' THEN 'Только для суперпользователей'
    ELSE context
  END as изменение,
  short_desc
FROM pg_settings 
WHERE name IN (
  'shared_buffers',
  'work_mem',
  'maintenance_work_mem',
  'effective_cache_size',
  'max_connections',
  'wal_buffers',
  'checkpoint_segments',
  'checkpoint_timeout',
  'random_page_cost',
  'effective_io_concurrency'
)
ORDER BY name;

Сравнение настроек между серверами

Иногда нужно сравнить настройки между разными серверами. Вот удобная таблица для анализа:

Параметр Рекомендуемое значение Описание Как проверить
shared_buffers 25% от RAM Кэш для данных в памяти SHOW shared_buffers;
work_mem 4-32 MB Память для операций сортировки SHOW work_mem;
max_connections 100-500 Максимальное число подключений SHOW max_connections;
wal_level replica Уровень журналирования WAL SHOW wal_level;

Продвинутые техники работы с настройками

Экспорт настроек в файл

Для документирования или сравнения настроек можно экспортировать их в файл:

bash
# Экспорт всех настроек в CSV
sudo -u postgres psql -c "\COPY (SELECT name, setting, unit, source FROM pg_settings ORDER BY name) TO '/tmp/postgres_settings.csv' WITH CSV HEADER;"

# Экспорт в удобочитаемом формате
sudo -u postgres psql -c "SELECT name || ' = ' || setting || CASE WHEN unit IS NOT NULL THEN ' ' || unit ELSE '' END FROM pg_settings WHERE source != 'default' ORDER BY name;" > /tmp/postgres_non_default.txt

Мониторинг изменений настроек

Создадим представление для отслеживания изменений параметров:

sql
-- Представление для мониторинга измененных настроек
CREATE OR REPLACE VIEW changed_settings AS
SELECT 
  name,
  setting,
  source,
  sourcefile,
  sourceline,
  boot_val,
  reset_val,
  CASE 
    WHEN setting != boot_val THEN 'Изменено от значения по умолчанию'
    ELSE 'Значение по умолчанию'
  END as status
FROM pg_settings 
WHERE source NOT IN ('default', 'override')
ORDER BY name;

-- Использование представления
SELECT * FROM changed_settings;
Внимание: Некоторые параметры требуют перезагрузки сервера (context = 'postmaster'), другие — только перечитывания конфигурации (context = 'sighup'). Всегда проверяй контекст параметра перед изменением.

Смежные задачи администрирования

Как посмотреть настройки iptables

Хотя это не напрямую связано с PostgreSQL, знание как посмотреть настройки iptables важно для диагностики проблем с подключением:

bash
# Показать все правила iptables
sudo iptables -L -n -v

# Показать правила с номерами строк
sudo iptables -L --line-numbers

# Показать правила для конкретной цепочки
sudo iptables -L INPUT -n -v
sudo iptables -L OUTPUT -n -v

# Показать правила NAT
sudo iptables -t nat -L -n -v

# Сохранить правила в файл
sudo iptables-save > /tmp/iptables_backup.rules

Как посмотреть лог ошибок nginx

Если PostgreSQL работает за nginx, умение посмотреть лог ошибок nginx может помочь в диагностике:

bash
# Просмотр логов ошибок в реальном времени
sudo tail -f /var/log/nginx/error.log

# Поиск ошибок за последний час
sudo grep -i error /var/log/nginx/error.log | tail -50

# Просмотр логов с определенной даты
sudo journalctl -u nginx --since "2024-01-15" --until "2024-01-16"

# Анализ частоты ошибок
sudo awk '{print $1}' /var/log/nginx/error.log | sort | uniq -c | sort -rn

Часто задаваемые вопросы (FAQ)

В чем разница между SHOW и pg_settings?

SHOW — простая команда для быстрой проверки значений. pg_settings — системное представление с полной информацией о каждом параметре, включая значения по умолчанию, минимальные/максимальные значения, контекст изменения и описание.

Как узнать, какие параметры были изменены от значений по умолчанию?

Используй запрос: SELECT name, setting, source FROM pg_settings WHERE source NOT IN ('default', 'override'); Это покажет все параметры, которые были изменены в конфигурационных файлах или динамически.

Почему значение параметра в SHOW отличается от значения в postgresql.conf?

Параметры могут быть переопределены: 1) в командной строке при запуске, 2) через ALTER SYSTEM, 3) в сессии через SET. Команда SHOW показывает текущее действующее значение, а не обязательно значение из файла конфигурации.

Как проверить, требуется ли перезагрузка для применения изменений?

Посмотри колонку context в pg_settings: 'postmaster' — требует перезагрузки, 'sighup' — требует перечитывания конфигурации (SELECT pg_reload_conf()), 'user' — можно изменить в текущей сессии.

Какие настройки PostgreSQL критически важны для производительности?

Ключевые параметры: shared_buffers, work_mem, maintenance_work_mem, effective_cache_size, max_connections, checkpoint_segments, wal_buffers. Оптимальные значения зависят от аппаратного обеспечения и рабочей нагрузки.

Заключение

Умение посмотреть настройки PostgreSQL — фундаментальный навык для любого администратора баз данных. Ты теперь знаешь:

  • Как использовать команду SHOW для быстрой проверки
  • Как анализировать детальную информацию через pg_settings
  • Где находятся конфигурационные файлы и как их читать
  • Как экспортировать и сравнивать настройки между серверами
  • Какие параметры наиболее важны для производительности

Помни: прежде чем изменять любые настройки, всегда проверяй их текущие значения и понимай последствия изменений. Хорошая практика — документировать все изменения конфигурации и иметь план отката.

Поделиться:
Сохранить гайд? В закладки браузера