A melhor solução de replicação PostgreSQL que minimiza os custos de rede

2

Estou estudando as soluções de replicação do PostgreSQL. Eu conheço duas variedades dessas soluções

  1. Nível baixo - que envolve o streaming de envio de log, recursos hot standby disponíveis no PostgreSQL 9.x
  2. Alto nível - Slony, Londiste que trabalham no nível de consulta SQL

Meu banco de dados não é muito ocupado e enorme (pelo menos agora). Mas eu quero evitar tempos de inatividade devido a falhas do Amazon EC2 (como o que aconteceu recentemente). Minha solução é manter um escravo em uma zona de disponibilidade diferente que permanecerá em sincronia com a minha instância do banco de dados mestre. Dessa forma, posso fazer failover quando o master for desativado. Um ponto a considerar é que isso exigirá a replicação contínua de dados do mestre para o escravo, que será o tráfego de rede nas zonas de disponibilidade do EC2. Não é grátis. Custa 1 centavo por GB agora, mas depois de ler alguns cálculos no livro de receitas do PostgreSQL, aprendi que os custos podem crescer muito, mesmo se o tráfego do banco de dados estiver baixo. Por exemplo, no capítulo "Backup físico e arquivamento contínuo" do "Cookbook de administração do PostgreSQL 9" I leia isto:

If archive_timeout is set to 30 seconds, we will generate a minimum of 2*60*24 = 2880 files per day, each 16 MB in size, so a total volume of 46 GB per day (minimum)

[e que eu assumo com tráfego mínimo no banco de dados]

Meu único requisito é que cada consulta SQL de gravação que é executada no servidor mestre seja reproduzida no servidor escravo. Se isso for feito no retorno de chamada do evento, isso será perfeito porque haverá transferência de dados entre o mestre e o escravo somente quando o banco de dados estiver sendo modificado e não a cada 30 segundos, mesmo que nenhuma alteração no banco de dados tenha ocorrido.

Por isso, acho que Londiste pode ser a solução para mim, mas não tenho 100% de certeza de que funciona dessa maneira.

O que você sugere?

    
por Jayesh 19.07.2012 / 07:23

2 respostas

2

Após uma semana de pesquisa, acredito que a configuração Streaming Log Shipping e Hot Standby das instâncias do PostgreSQL atende às minhas necessidades de replicação instantânea (janela mínima de perda de dados), mas também baixo tráfego de rede. Escrevi uma postagem de blog detalhada em como eu configuro.

Também pode haver outras soluções, usando ferramentas de terceiros como pgpool, mas eu não tive muito sucesso com elas.

    
por 26.07.2012 / 19:45
1

Dê uma olhada em pgpool . Estamos usando isso em produção no meu trabalho e até agora estamos muito satisfeitos. Obviamente você ainda deseja fazer backups, já que ele não protege você contra falhas de consulta SQL, mas faz a coisa de sincronização / replicação lindamente.

    
por 19.07.2012 / 08:44