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

«Где хранится конфигурация PgBouncer?» — вопрос из категории Базы данных, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основной конфигурационный файл PgBouncer — pgbouncer.ini. Стандартные пути расположения:

  • /etc/pgbouncer/pgbouncer.ini (чаще всего в пакетных установках)
  • /etc/pgbouncer.ini
  • Можно указать произвольный путь через флаг -d при запуске: pgbouncer -d /path/to/pgbouncer.ini

Минимальный пример pgbouncer.ini:

[databases]
mydb = host=localhost port=5432 dbname=production

[pgbouncer]
listen_port = 6432
listen_addr = 0.0.0.0
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = transaction
max_client_conn = 100
default_pool_size = 20
logfile = /var/log/pgbouncer/pgbouncer.log
pidfile = /var/run/pgbouncer/pgbouncer.pid

Сопутствующие файлы:

  1. auth_file (обычно userlist.txt) — содержит пары "username" "md5-hashed-password". Пароль генерируется командой:
    echo "md5$(echo -n 'password123' | md5sum | cut -d ' ' -f1)"
  2. PID-файл — хранит Process ID для управления службой.
  3. Сокет-файл — для локальных подключений (если настроен unix_socket_dir).

DevOps-практики:

  • Хранить pgbouncer.ini в системе управления конфигурациями (Ansible, Chef) или как ConfigMap в Kubernetes.
  • Использовать environment variables для чувствительных данных (паролей) вместо хранения в файле.
  • Настраивать мониторинг логов (/var/log/pgbouncer/) и метрик (через SHOW команд в PgBouncer).