2013/12/2 Daviramos Roussenq Fortunato <[email protected]>

> Olá Lista,
>
>   Sou novo por aqui, mas já trabalho a uns 5 anos com Postgresql, já
> pesquisei bastante sobre meu problema, mas ainda não consegui chega a uma
> solução. Vou tentar explicar brevemente o que preciso, e espero que os
> Colaboradores da Lista, possam contribuir meu caso.
>
>    Tenho uma Matriz + 4 Filiais, hoje o Banco roda apenas na Matriz e as
> filiais acessam a Matriz via Terminal Service. A filiais ficam em lugares
> distantes sem grande recursos de Internet.
>
>    Gostaria de instalar o Banco na Filiais que serviria para executar as
> consultas, e os Inserts fossem enviados para o Banco da Matriz, e o Banco
> da Matriz se atualizaria as filiais.
>
>     Não posso fazer isso na APLICAÇÃO, eu preciso que o próprio SGDB
> consiga tratar. Alguém teria uma dica?
>
>
A ferramenta pgPool-II faz exatamente isso que você pediu, é conhecido como
balanceamento de carga. Ela é um midleware que a sua aplicação irá conectar
e o pgPool-II irá conectar a servidores PostgreSQL e redirecionar seus
comandos. Ele é inteligente em identificar o que for atualização
(INSERT/UPDATE/DELTE/ALTER TABLE/etc.) e mandá-lo somente ao master, do que
é consulta (SELECT) e fazer um round-robin entre o master e slaves (ou
mandar só para slave também).

No seu caso você deveria ter as filias como slaves da matriz e, em cada
filial, uma (ou mais para HA) instância do pgPool-II, cada um conectado ao
slave da própria filial e ao master na matriz. A aplicação, por sua vez,
irá conectar-se na instância do pgPool-II.

Um problema que você terá, é relacionado a atualização desses slaves, já
que disse que a rede é "lenta". Por exemplo, se fizer um INSERT na matriz
(passando pelo pgPool-II) e, em seguida, tentar consultar esse registro (e
o pgPool-II redirecioná-lo ao slave), ele poderá ainda não estar presente
no mesmo. Nesse caso a solução seria usar replicação síncrona, que é
impensável para servidores distribuídos com conexão "lenta".

Outra solução é ir para uma replicação multi-master. Mas saiba que essa é
bem mais complexa (devido à necessidade de resolução de conflitos e para
manter o sincronismo) e provavelmente necessitará de alterar a aplicação.
Se você conseguir garantir que cada filial altere apenas dados dela mesma,
então será um pouco mais fácil.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a