quinta-feira, 30 de julho de 2015

PgBouncer


PgBouncer? O que é? Pra que serve?

O bouncer é um agrupador de conexões para o PostgreSQL.
Qualquer aplicação de destino pode ser ligado ao pgbouncer como se fosse um servidor PostgreSQL , e pgbouncer vai criar uma ligação ao servidor real , ou vai reutilizar uma das suas ligações existentes.

Além disso, ele tem três diferentes modos de pool:

pool por sessão (Session pooling)

    Método mais educado ou gentil. Quando o cliente se conecta, a conexão com o servidor será atribuída a ele enquanto dure toda a conexão do cliente. Quando o cliente se desconectar, a conexão do servidor será colocada de volta como disponível no pool. Este é o método padrão.

pool por transação (Transaction pooling)

    A conexão com o servidor é atribuída ao cliente apenas durante uma transação. Quando o PgBouncer percebe que transação acabou, a conexão do servidor será colocada de volta como disponível no pool.

Pool por declaração ou comando (Statement pooling)

    Método mais agressivo. A conexão com o servidor será colocada de volta como disponível ao pool imediatamente após o fim da consulta. Transações com várias instruções não são permitidas neste modo.

Vantagem de se utilizar o pgBouncer?

Em ambientes com muitas conexões e muitos usuários ele ajuda a reduzir o impacto de performance causado pela abertura de novas conexões.

1) Instalação exemplo no CentOS:

# yum install pgbouncer

Ou Compilando

# wget http://pgfoundry.org/frs/download.php/3393/pgbouncer-1.5.4.tar.gz
# tar -zxvf pgbouncer-1.5.4.tar.gz
# cd pgbouncer-1.5.4
# ./configure
# make
# make install


2) Para o funcionamento ele precisa de dois arquivos um é pgbouncer.ini para configuração e um outro para os usuarios eu normalmente uso o nome pgbouncer-users.txt

2.1) pgbouncer.ini Exemplo:

[databases]
Minha_Database = host=127.0.0.1 port=5432 dbname=Minha_Database
Minha_Database1 = host=127.0.0.1 port=5432 dbname=Minha_Database1
Minha_Database2 = host=127.0.0.1 port=5432 dbname=Minha_Database2

[pgbouncer]
listen_port = 6432
listen_addr = 127.0.0.1
auth_type = md5
auth_file = pgbouncer-users.txt
logfile = pgbouncer.log
pidfile = pgbouncer.pid
admin_users = dba



2.2) pgbouncer-users.txt Exemplo:

"usuario1" "senha_usuario1"
"usuario2" "senha_usuario2"
"usuario3" "senha_usuario3"
"usuario4" "senha_usuario4"



3) Executando o pgbouncer:

# pgbouncer -d pgbouncer.ini

4) Para testar se esta conectando ao banco via pgbouncer use a porta que o pgbouncer esta escutando "listen_port"

# psql -U usuario1 -p 6432 -d Minha_Database

Se conectou quer dizer que o pgbouncer esta funcionando, bom ele ainda tem varias outras funcionalidades e comandos internos que podem ser executados para isso você pode ler o manual do pgbouncer clicando AQUI.

Existem outras ferramentas que fazem a mesma tarefa que pgbouncer um exemplo é o Pgpool mais em minha opinião o pgbouncer em questão de facilidade e reaproveitamento de conexões é o melhor pelo menos até o momento.

Nenhum comentário:

Postar um comentário