← Назад к вопросам

Где хранится конфигурация PgBouncer?

1.0 Junior🔥 101 комментариев
#Базы данных

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Конфигурация PgBouncer: Основные файлы и их расположение

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

Основные конфигурационные файлы

  • pgbouncer.ini — главный файл настроек.
  • pgbouncer.auth или userlist.txt — файл аутентификации пользователей.
  • pgbouncer.log или системный лог — файл журналирования (часто конфигурируется в pgbouncer.ini).

Типичные пути расположения

1. При установке из официальных репозиторий (Linux)

Чаще всего файлы находятся в /etc/pgbouncer/. Это стандартный путь для конфигураций в Linux при установке через apt, yum и т.д.

# Пример для Ubuntu/Debian
/etc/pgbouncer/pgbouncer.ini
/etc/pgbouncer/userlist.txt

# Пример для CentOS/RHEL
/etc/pgbouncer/pgbouncer.ini
/etc/pgbouncer/pgbouncer.auth

2. При сборке из исходников или запуске в контейнере

Пути могут быть произвольными. Конфигурацию часто указывают явно при запуске через параметр -d (файл конфигурации) и -R (файл аутентификации).

# Пример запуска с указанием конкретных файлов
pgbouncer -d /path/to/custom/config/pgbouncer.ini -R /path/to/custom/auth/userlist.txt

3. Структура главного файла pgbouncer.ini

Это основной файл, где задаются параметры пула, адресация, логирование и таймауты.

# Пример ключевых секций pgbouncer.ini
[databases]
mydb = host=127.0.0.1 port=5432 dbname=postgres

[pgbouncer]
listen_addr = 127.0.0.1
listen_port = 6432
auth_file = /etc/pgbouncer/userlist.txt
auth_type = md5
pool_mode = transaction
max_client_conn = 100
default_pool_size = 20
logfile = /var/log/pgbouncer/pgbouncer.log
pidfile = /var/run/pgbouncer/pgbouncer.pid
  • Секция [databases]: Определяет целевые базы PostgreSQL, к которым пулер проксирует соединения. Можно использовать шаблон * для всех баз.
  • Секция [pgbouncer]: Глобальные параметры работы самого PgBouncer.

4. Файл аутентификации (userlist.txt или pgbouncer.auth)

Содержит список пользователей и их пароли (обычно в хэшированном виде, например, MD5), которые могут подключаться к PgBouncer. Пароль должен соответствовать паролю пользователя в PostgreSQL.

# Пример содержимого userlist.txt
"postgres" "md5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5"
"app_user" "md5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

Где также может храниться или учитываться конфигурация?

  • Командная строка запуска: Параметры, переданные при запуске, могут дополнять или переопределять настройки из .ini файла.
  • Системные переменные окружения: В Docker-контейнерах или оркестраторах (Kubernetes) конфигурация иногда генерируется из переменных env или хранится как ConfigMap/Secret.
  • Папка с логами и PID-файлом: Пути к logfile и pidfile также являются частью конфигурации и обычно указываются в pgbouncer.ini.

Практические рекомендации по управлению конфигурацией

  1. Проверка конфигурации: После изменения файлов используйте команду pgbouncer -d <config.ini> --test для проверки синтаксиса.
  2. Релиативный vs абсолютный путь: В auth_file внутри pgbouncer.ini можно указать относительный путь (относительно расположения pgbouncer.ini).
  3. Динамическое обновление: Некоторые параметры можно изменять "на лету" через административную базу PgBouncer (SHOW CONFIG;, RELOAD;), но не все (например, listen_addr).
  4. Безопасность: Файл аутентификации содержит хэши паролей — ограничьте права доступа (например, chmod 600).

Итог: Основная конфигурация хранится в текстовых файлах .ini и .auth/userlist.txt. Их расположение чаще всего стандартизировано (/etc/pgbouncer/), но может быть каким угодно, если указано явно при запуске процесса. Для современных облачных развертываний эти файлы часто рендерятся из шаблонов (Ansible, Terraform) или предоставляются оркестратором как конфигурационные объекты.