<< Click to Display Table of Contents >> Администрирование (Linux) > Расширенная установка Настройка работы с PgBouncer
|
![]() ![]() ![]() |
PgBouncer – программа, управляющая соединениями с базой данных PostgreSQL. PgBouncer позволяет большому количеству пользователей подключаться к одной базе данных, при этом используя меньше соединений. Благодаря этому снижается нагрузка на сервер и улучшается производительность.
Чтобы настроить работу менеджера соединений базы данных PgBouncer:
1.Из конфигурационного файла full_config.yml.example скопируйте секцию SungeroPgBouncer. Путь до файла: DirectumLauncher/etc/full_config.yml.example.
2.Вставьте секцию с настройками PgBouncer в любое место конфигурационного файла config.yml. Путь до файла: <Папка с Directum Launcher>/etc/config.yml.
3.Заполните параметры секции своими значениями:
Параметры подключения PgBouncer
port – порт, по которому PgBouncer взаимодействует с сервисами Directum RX; docker_tag – версия docker-образа PgBouncer в формате <Имя образа>:<Версия образа>. В системе Directum RX доступна версия registry.directum.ru/public/pgbouncer:1.23.1; PgBouncer_data_path – путь до папки, в которой хранятся файлы менеджера соединений базы данных PgBouncer, например данные о состоянии пула соединений; auth_username – имя пользователя для аутентификации в PgBouncer; auth_password – пароль для аутентификации в PgBouncer; POSTGRESQL_HOST – доменное имя сервера, на котором развернута БД; POSTGRESQL_PORT – порт, на котором доступна БД. |
В параметре databases указываются настройки подключения к БД, к которым PgBouncer может обращаться: host – доменное имя сервера, на котором развернута БД; port – порт, на котором доступна БД; datestyle – формат отображения дат и временных меток. Вы можете указать несколько стилей, разделяя их запятыми Возможные значения: •iso. Формат: YYYY-MM-DD HH:MM:SS; •dmy. Формат: MM/DD/YYYY DD HH:MM:SS; •european. Формат: DD/MM/YYYY HH:MM:SS; client_encoding – кодировка символов, которая используется для передачи данных между клиентом и сервером PostgreSQL; timezone – временная зона, которая используется для отображения временных меток и управления временем. Пример настройки в config.yml:
Вы можете указать универсальные настройки для всех баз на указанном сервере, а не прописывать их отдельно для каждой. Для этого вместо имени БД используйте символ *:
Индивидуальные настройки подключения к базе данных имеют больший приоритет, чем универсальные. |
auth_type – метод аутентификации. В системе Directum RX доступен только метод MD5; ВАЖНО. На сервере БД для аутентификации пользователей также должен быть выбран метод MD5. auth_query – запрос для получения имени пользователя и пароля из таблицы аутентификации. Укажите и оставьте неизменным значение SELECT usename, passwd FROM pgbouncer.get_auth($1); auth_dbname – имя БД, которое будет использоваться для аутентификации; pool_mode – режим работы пула соединений с БД. Рекомендуется использовать transaction. В этом режиме соединение освобождается после завершения транзакции; max_client_conn – максимальное количество клиентских соединений, которые могут одновременно подключаться к PgBouncer; default_pool_size – размер пула соединений по умолчанию для каждой базы данных; reserve_pool_timeout – время ожидания в секундах, в течение которого запросы могут находиться в резервном пуле, прежде чем они будут отменены. Рекомендуется указать значение 2; reserve_pool_size – размер резервного пула соединений. Используется, когда превышается максимальное количество клиентских соединений, указанное в параметре max_client_conn; СОВЕТ. Если постоянно используются резервные подключения, увеличьте значение параметра default_pool_size. min_pool_size – размер минимального пула соединений, который поддерживается для каждой базы данных. Даже если нет активных запросов к базе, PgBouncer поддерживает указанное количество соединений; idle_transaction_timeout – время в секундах, после которого неактивные транзакции завершаются; server_idle_timeout – время в секундах, после которого неактивные соединения с сервером PostgreSQL закрываются; max_prepared_statements – максимальное количество подготовленных выражений, которые могут быть созданы и использованы в одном соединении. Если это значение превышено, PgBouncer удаляет старые подготовленные выражения; ignore_startup_parameters – параметры, которые игнорируются при установлении соединения. Используется, когда необходимо избежать конфликтов между параметрами, указанными в конфигурации, и теми, которые передаются через командную строку или из других источников. |
Пример настройки секции в config.yml:
SungeroPgBouncer:
port: 6432
docker_tag: 'registry.directum.ru/public/PgBouncer:1.23.1'
PgBouncer_data_path: '{{ home_path }}/PgBouncer'
auth_username: PgBouncer
auth_password: setpassword
environments:
POSTGRESQL_HOST: postgres-host
POSTGRESQL_PORT: 5450
databases:
'*': >-
host=postgres-host port=5450 datestyle='iso, dmy' client_encoding=UTF8 timezone='Europe/Samara'
PgBouncer:
auth_type: md5
auth_query: 'SELECT usename, passwd FROM PgBouncer.get_auth($1)'
auth_dbname: RX_Tenant_Etalon
pool_mode: transaction
max_client_conn: 500
default_pool_size: 5
reserve_pool_timeout: 2
reserve_pool_size: 1000
min_pool_size: 2
idle_transaction_timeout: 60
server_idle_timeout: 300
max_prepared_statements: 1
ignore_startup_parameters: extra_float_digits
4.Создайте пользователя и функцию запроса хэша пароля в БД. Для этого выполните команду:
./do.sh PgBouncer configure
5.Разверните PgBouncer:
./do.sh PgBouncer up
6.Проверьте состояние PgBouncer. Для этого подключитесь к нему:
psql postgres://user@<адрес сервера, на котором запущен PgBouncer>:<порт, на котором PgBouncer слушает входящие подключения>/database
Например, если менеджер соединений базы данных PgBouncer запущен на локальном сервере (localhost) и порте 6432, выполните:
psql postgres://user@localhost:6432/database
© Компания Directum, 2025 |