Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Конфигурация 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.
Практические рекомендации по управлению конфигурацией
- Проверка конфигурации: После изменения файлов используйте команду
pgbouncer -d <config.ini> --testдля проверки синтаксиса. - Релиативный vs абсолютный путь: В
auth_fileвнутриpgbouncer.iniможно указать относительный путь (относительно расположенияpgbouncer.ini). - Динамическое обновление: Некоторые параметры можно изменять "на лету" через административную базу PgBouncer (
SHOW CONFIG;,RELOAD;), но не все (например,listen_addr). - Безопасность: Файл аутентификации содержит хэши паролей — ограничьте права доступа (например,
chmod 600).
Итог: Основная конфигурация хранится в текстовых файлах .ini и .auth/userlist.txt. Их расположение чаще всего стандартизировано (/etc/pgbouncer/), но может быть каким угодно, если указано явно при запуске процесса. Для современных облачных развертываний эти файлы часто рендерятся из шаблонов (Ansible, Terraform) или предоставляются оркестратором как конфигурационные объекты.