Atualmente, tenho um servidor master postgresql 9.4 contendo muitos bancos de dados no Ubuntu 14.04.
Tentei usar o Barman para configurar o backup, mas gostaria de configurar a réplica de streaming para que, quando o mestre cair, eu possa promover a réplica em espera para ser o novo mestre. Procurei repmgr, mas isso produzirá apenas um servidor de espera ativa somente leitura. Isso significa que devo usar a solução multimestre se quiser promover o modo de espera para aceitar a transação de gravação também?
Eu estou imaginando o sistema para ser
M1 (master) -------------via ???-------------- S1 (standby/another master)
| |
| |
|via Barman | via Barman
| |
B1 (backup server#1) B2 (backup server#2)
Idealmente, depois que o M1 cair, posso promover S1 para ser o novo mestre e aceitar transações de leitura/gravação, não apenas somente leitura. Assim que trouxermos de volta o M1, o M1 pode permanecer em modo de espera, mas transmitirá com o S1.
O postgres 9.4 BDR (replicação bidirecional) é uma boa solução para transmitir entre M1 e S1? Ou existe algum produto comercial que possa fazer isso?
Não sou um DBA e gostaria muito de suas opiniões.
Muito obrigado!
eu uso http://en.wikipedia.org/wiki/Corosync_%28project%29 e pacificador. talvez http://clusterlabs.org/wiki/PgSQL_Replicated_Cluster possa ajudá-lo.
Parece que você fez 2 perguntas:
Questão 1
Os recursos integrados do PostgreSQL são suficientes para obter um servidor de espera somente leitura baseado em WAL (também conhecido como secundário, também conhecido como escravo). No entanto, eles não são suficientes para obter a operação multimestre.
Este escravo R/O pode ser promovido a qualquer momento para um servidor R/W autônomo usando
pg_ctl
.(nota:
pg_ctl
a ferramenta pode estar oculta na configuração padrão do debian/ubuntu. Procure/usr/lib/postgresql/X.Y/bin
para vê-la)Quando é promovida, a replicação é interrompida e o escravo é desconectado do primário. Veja fragmentos relevantes no
promote
comando na documentação pg_ctl e documentos de failover .Questão 2
Não conheço o BDR (talvez seja uma boa solução), mas você REALMENTE precisa dos dois servidores no modo R/W? Caso contrário, recomendo fortemente o uso de replicação de streaming integrada (com streaming ou envio de log).
Para redirecionar o tráfego do primário para o standby, você precisa de alguma ferramenta externa que fará o procedimento de failover - usando um método de failover baseado em DNS ou baseado em IP ou outro. O próprio PostgreSQL não sabe como redirecionar o tráfego ou fazer qualquer coisa fora do escopo do banco de dados. As ferramentas populares são pgpool (na camada 7) ou Linux HA ou corosync e amigos (nas camadas inferiores).