Ubuntu 16.04. Быстрая установка Pgbouncer
PgBouncer очень хороший инструмент для увеличения производительности при использовании PostgreSQL. Эта утилита позволит масштабировать кластер баз данных и не плохо справляется с оптимизацией воркеров. Это позволяет базе данных занимается непосредственно своими прямыми обязанностями то есть insert/read/write вместо того что бы занимается обработкой соединений.
Я не буду особо вдаваться в подробности установки PostgreSQL а просто расскажу как установить и настроить PgBouncer.
Установка очень проста:
1
sudo apt-get install pgbouncer
Следующий шаг это редактирование конфигурационного файла PgBouncer
1 |
|
В конфигурационном файле нужно указать настройки соединения с базой данных в секции [databases]:
1 |
|
Так же можно разрешить слушать все адреса:
1 |
|
Далее нам нужно указать тип авторизации:
1 |
|
После этого нужно сделать настройки пула:
Немного отойду от конфета и расскажу про основные режимы работы пула. PgBouncer представляет собой простой и быстрый менеджер соединений для PostgreSQL. Он поддерживает три режима управления соединениями:
Session Pooling. Наиболее “вежливый” режим. При начале сессии клиенту выделяется соединение с сервером; оно приписано ему в течение всей сессии и возвращается в пул только после отсоединения клиента.
Transaction Pooling. Клиент владеет соединением с бакендом только в течение транзакции. Когда PgBouncer замечает, что транзакция завершилась, он возвращает соединение назад в пул.
Statement Pooling. Наиболее агрессивный режим. Соединение с бакендом возвращается назад в пул сразу после завершения запроса. Транзакции с несколькими запросами в этом режиме не разрешены, так как они гарантировано будут отменены.
К достоинствам PgBouncer относится очень низкое потребление памяти (менее 2КБ на соединение по умолчанию), отсутствие привязки к одному серверу баз данных (может работать с разными хостами), возможность изменения большинства настроек без рестарта, а также возможность онлайн-перезапуска: PgBouncer сам перенесет открытые сокеты в новый процесс.
1 |
|
В режиме мультиплексирования на уровне транзакций, т.е. соединение будет закрываться по закрытию транзакции. При использовании такого режима становится невозможным использование определенных возможностей PostgreSQL, например таких как SET/RESET, LISTEN/NOTIFY, WITH HOLD CURSOR, PREPARE / DEALLOCATE, PRESERVE/DELETE ROWS, LOAD и UDF c состоянием сессии
1 |
|
Следующий в очереди файл конфигурации аутентификации пользователей userlist.txt
Для того что бы внести в этот файл настройки нам нужно предварительно получить дамп с реквизитами пользователей с помочью этих реквизитов будет выполняться аутентификация.
1 |
|
В результате получаем такой вывод:
1 |
|
Открываем файл userlist.txt (/etc/pgbouncer) и добавляем нужного нам пользователя:
1 |
|
Теперь запустим наш pgbouncer:
1 |
|
Выполняем проверку подключения:
1 |
|
Ну и для надежности можно заглянуть в логи:
1 |
|
1 |
|
Вот и все :) На этом настройка завершена. Всем добра :)