PgBouncer to niezła alternatywa dla pgpool’a. Jego głównym zadaniem jest odciążyć nieco naszego PostgreSQL’a zabijanego kolejnymi connect’ami. PgBouncer tworzy pulę połączeń do serwera bazy danych i wydajnie z niej korzysta. Dostępne są następujące tryby:
Session pooling -gdy klient się łączy, połączenie z serwerem zostanie przypisane do niego przez cały czas, po rozłączeniu wraca z powrotem do puli.
Transaction pooling – połączenie aktywne tylko podczas transakcji, po jej zakończeniu wraca.
Statement pooling – najbardziej agresywna metoda, połącznie wraca do puli natychmiast po wykonaniu kwerendy(generalnie nie polecana
)
Administracja PgBouncer‘em jest bardzo prosta i sprowadza się do kilku poleceń kiedy jesteśmy podłączeni do wirtualnej bazy PgBouncer‘a, ale o tym później.
Na początek zainstalujemy PgBouncer‘a, ściągamy źródła stąd: http://pgfoundry.org/projects/pgbouncer
Do prawidłowego zainstalowania w systemie potrzebujemy również libevent.
cd /usr/ports/devel/libevent
make
make install
Ok libevent siedzi na miejscu, teraz zróbmy sobie PgBouncer‘a:
Rozpakowujemy źródła i piszemy:
cd pgbouncer-1.2.3
./configure –with-libevent=/usr/local
gmake
gmake install
Teraz pora na przygotowanie plików konfiguracyjnych dla programu, potrzebne są 2, jeden plik dla PgBouncer‘a, drugi plik z userami i hasłami.
Prosta zawartość pierwszego z nich (/usr/local/etc/pgbouncer.ini):
[databases]
naszabaza = host=127.0.0.1 port=5432 dbname=naszabaza[pgbouncer]
listen_port = 6543
listen_addr = 127.0.0.1
auth_type = plain
auth_file = /usr/local/etc/users.txt
logfile = /var/log/pgbouncer.log
pidfile = /tmp/pgbouncer.pid
admin_users = uzytkownik
max_client_conn = 300
default_pool_size = 200
pool_mode = session
server_connect_timeout = 300
client_login_timeout = 300
Oraz drugiego (/usr/local/etc/users.txt):
“uzytkownik” “haslo_uzytkownika”
Uwierzytelnianie użytkowników:
- md5 – domyślnie stosowane
- crypt – czyli crypt
- plain – czysty tekst, czyli niezakodowane
- trust – zaufany – brak autentykacji, ale plik users.txt musi zawierać nazwę użytkownika
- any – j.w. plus nazwa użytkownika jest ignorowana, wymaga aby wszystkie bazy danych zostały skonfigurowane do logowania się jako konkretny użytkownik.
- Do kodowania haseł można wykorzystać np. Apache’owy htpasswd.
-
OK, mamy zainstalowanego PgBouncer‘a, czas go uruchomić, robimy to za pomocą następującej komendy (jako user, a nie root
: - /usr/local/bin/pgbouncer -d /usr/local/etc/pgbouncer.ini
- Konsola administracyjna:
psql -h 127.0.0.1 -p 6543 -U user pgbouncer
Po zalogowaniu poleceniem show help; zobaczymy liste dostępnych komend.
pgbouncer=# show help;
NOTICE: Console usage
DETAIL:
SHOW [HELP|CONFIG|DATABASES|FDS|POOLS|CLIENTS|SERVERS|SOCKETS|LISTS|VERSION]
SET key = arg
RELOAD
PAUSE
SUSPEND
RESUME
SHUTDOWN