Skytools, pgbouncer e plproxy

24
PostgreSQL para um bilhão de usuários Fernando Ike de Oliveira B2BR - Grupo TBA Setembro de 2008 / PGCon-BR 2008 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

description

Palestras sobre o Sytools, pgbouncer e plproxy. Ferramentas do skype para cluster em PostgreSQL

Transcript of Skytools, pgbouncer e plproxy

Page 1: Skytools, pgbouncer e plproxy

PostgreSQL para um bilhão de usuários

Fernando Ike de Oliveira

B2BR - Grupo TBA

Setembro de 2008 / PGCon-BR 2008

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 2: Skytools, pgbouncer e plproxy

Breve história...

2004 libera um conjunto de ferramentas para replicação,balanceamento de carga e alta-disponibilidade paraPostgreSQL.

Essas ferramentas são conhecidas como PL/Proxy,PgBouncer, Skytools.

A licença é BSD.

Instalação à partir do código-fonte ou pacotes *.deb *.rpm.

Oficialmente o Debian, Fedora tem pacotes binários.

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 3: Skytools, pgbouncer e plproxy

PL/Proxy

PL/Proxy é uma linguagem usada para chamadas remotase particionamento de banco de dados usando hash dosdados.

PL/Proxy permite criar funções de proxy usando hash paraespecificar destino (base de dados alvo).

PL/Proxy é comparável à um roteador de rede queencaminha a expressão SQL para o instância correta.

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 4: Skytools, pgbouncer e plproxy

PL/ProxyPrincípio de funcionamento PL/Proxy

Exemplo"SELECT (hashtext(’pgcon1’))%3" = 0"SELECT (hashtext(’pgcon2’))%3" = -1"SELECT (hashtext(’pgcon3’))%3" = -2"SELECT (hashtext(’pgcon4’))%3" = 0"SELECT (hashtext(’pgcon5’))%3" = 0"SELECT (hashtext(’pgcon6’))%3" = 2"SELECT (hashtext(’pgcon7’))%3" = -1"SELECT (hashtext(’pgcon8’))%3" = 0"SELECT (hashtext(’pgcon9’))%3" = 0"SELECT (hashtext(’pgcon10’))%3" = 0

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 5: Skytools, pgbouncer e plproxy

PL/Proxyidéias básicas possíveis

Como um barramento, para todos as servidoresPostgreSQL

Tabelas

Particionamento usando funções de Proxy

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 6: Skytools, pgbouncer e plproxy

PL/ProxyProblema

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 7: Skytools, pgbouncer e plproxy

PL/ProxyPrincípio do Proxy

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 8: Skytools, pgbouncer e plproxy

PL/ProxyParticionamento de dados

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 9: Skytools, pgbouncer e plproxy

PgBouncerUm serviço de pool para o PostgreSQL

Baixo consumo de recurso (2k por conexão)

Suporta reconfiguração sem reiniciar o serviço

Suporta reinício/atualização sem derrubar a conexãocliente

Suporta o protocolo v3 ou superior, somente => 7.4

O Parse SQL nao eh muito rápido e consome poucotempo de cpu

Tem uma interface console de gerenciamento

Tem estrutura sua (própria) estrutura de autenticação massimilar ao arquivo similar ao arquivo de senha pg_pwd doPostgreSQL.

Permite autenticação do tipo: trust, texto plano, crypt, md5.

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 10: Skytools, pgbouncer e plproxy

PgBouncerModos de pool

Sessão (session)

Transação (transaction)

Instrução (statement)

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 11: Skytools, pgbouncer e plproxy

PgBouncerSessão

Quando um cliente conecta, o PgBouncer retira umaconexão do pool e entrega para a aplicação

Ao o cliente desconectar, o PgBouncer re-aloca a conexãopara o pool. geralmente essa configuração érecomendada para aplicações legadas(Por não usarem deforma eficiente o pool)

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 12: Skytools, pgbouncer e plproxy

PgBouncerTransação

Servidor mantém para o cliente a conexão somentedurante a transação. Quando PgBouncer notifica quetransação acabou, o servidor devolve a conexão para opool.

Essa opção não deve ser usada com servidor deaplicações que gerenciam pool (Jboss, por exemplo)

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 13: Skytools, pgbouncer e plproxy

PgBouncerInstrução (Statement)

Este é o modo usado usado com o PL/Proxy. Por ser maisagressivo, ele retornar o conexão para opool depois que aconsulta termina.

Transações muito longas com múltiplos Statements sãodesabilitados neste modo.

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 14: Skytools, pgbouncer e plproxy

SkytoolsO que é?

Skytools são um conjunto de scripts para gerenciar clusterde servidores PostgreSQL.

Desenvolvido em C e Python

Permitem usar para replicação assíncrona

Permitem replicar dados particionados nos servidores"slave(s)"

Possível extender usando as API do PgQ

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 15: Skytools, pgbouncer e plproxy

SkytoolsBasicamente...

Centralização de log gerenciamento de exceções.

Gerenciamento de conexões ao banco de dados

Gerenciamento de configuração

Gerenciamento de scrips...

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 16: Skytools, pgbouncer e plproxy

SkytoolsConteúdo

londiste

walmgr

serial_consumer

queue_mover

queue_splitter

table_dispatcher

cube_dispatcher

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 17: Skytools, pgbouncer e plproxy

SkytoolsLondsite é...

... um sistema de replicação

... Master/Slave(s) como tipo de replicação

... de replicação é assíncrona

... baseada fortemente nas idéias do no Slony-1.

... um replicador baseado em gatilhos

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 18: Skytools, pgbouncer e plproxy

SkytoolsWalmgr é...

... uma ferramenta para gerenciar replicação por WAL

... similar ao pg_standby (contrib)

... possível gerenciar replicação baseada em PITR (WarmStandby).

... escrito em python

... uma ferramenta de replicação que usa túnel SSH.

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 19: Skytools, pgbouncer e plproxy

Skytoolsqueue_mover e queue_splitter

AmbosUsa o PgQ como transporte dos dados

Move/copia os dados para os servidores Slave

Move/copia os dados em lote(batch)

O processamento é/são nos slave(s)

queue_mover

Usado para mover/copia os dados para OLTP, Web

queue_splitter

Usado para BI

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 20: Skytools, pgbouncer e plproxy

Skytoolscube_dispacher e table_dispacher

AmbosFerramentas para replicar dados em tabelas particionadas.

Usados para preparar os dados para outros servidores

cube_dispacher

Prepara os dados para banco de dados do tipo BI, OLAP,Cubo...

Não tem suporte para operações de remoção de registro

Caso haja duas versões do mesmo registro, ele irá enviarsomente a última versão.

table_dispacher

script para configuraro particionamento de uma ou maistabela.

possibilita particionar uma tabela por mês, por exemplo.

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 21: Skytools, pgbouncer e plproxy

Exemplo 1

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 22: Skytools, pgbouncer e plproxy

Exemplo 2

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 23: Skytools, pgbouncer e plproxy

Dúvidas

Links e Listas de discussão:https://developer.skype.com/SkypeGarage/DbProjects/SkypePostgresqlWhitepaper

https://developer.skype.com/SkypeGarage/DbProjects/PlProxy

http://pgfoundry.org/mailman/listinfo/plproxy-users

https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer

http://pgfoundry.org/mailman/listinfo/pgbouncer-general

https://developer.skype.com/SkypeGarage/DbProjects/SkyTools

http://pgfoundry.org/mailman/listinfo/skytools-users

http://joaocosme.wordpress.com/2008/07/03/comecando-com-o-plproxy/

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

Page 24: Skytools, pgbouncer e plproxy

Conclusão

Contatos:[email protected]

[email protected]

http://www.midstorm.org/~fike/weblog

PGCon Brasil 2008http://pgcon.postgresql.org.br

Imagens

Joao Comes http://joaocosme.wordpress.com

Fernando Ike de Oliveira Pgbouncer, plproxy, skytools