C jak configure

Październik 29, 2008

PgBouncer – PostgreSQL connection pooler

Filed under: konfiguracja — erendil @ 4:32 pm
Tags: , , ,

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

Theme: Rubric. Blog na WordPress.com.

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.