Sobes.tech
Middle+

Qual método de garantia de alta disponibilidade você escolheria para PostgreSQL?

sobes.tech IA

Resposta da IA

Para garantir a alta disponibilidade do PostgreSQL, eu escolheria a replicação lógica.

Esta abordagem moderna e flexível baseia-se na tecnologia Publish/Subscribe. O editor (Publisher) no servidor principal publica as alterações nas tabelas, e o assinante (Subscriber) na réplica as recebe e aplica.

  • Vantagens:

    • Flexibilidade: Pode replicar não toda a base, mas apenas tabelas ou esquemas específicos.
    • Diferentes versões do PostgreSQL: Permite a replicação entre clusters com diferentes versões principais do PostgreSQL.
    • Baixos custos adicionais: Geralmente tem menos impacto no desempenho do servidor principal em comparação com a replicação física.
    • Mais fácil de migrar: Conveniente para usar em particionamento horizontal ou migração de dados.
  • Desvantagens:

    • Não replica DDL (alterações na estrutura do esquema), exceto em alguns casos (por exemplo, adicionar colunas). Requer aplicar manualmente DDL nas réplicas.
    • Não replica sequências.
    • Requer maior atenção na gestão de conflitos.

Como alternativa, especialmente para cenários mais simples ou sincronização estrita de dados, pode-se considerar a replicação física por streaming (Streaming Replication). Ela copia as alterações ao nível do WAL (Write-Ahead Log), garantindo uma cópia exata do servidor principal.

  • Vantagens:

    • Configuração e uso simples.
    • Replica todas as alterações, incluindo DDL e sequências.
    • Mais confiável em termos de consistência de dados em caso de falha.
  • Desvantagens:

    • Menos flexível: Replica toda a base de dados.
    • Requer a mesma versão principal do PostgreSQL no mestre e nas réplicas.
    • Pode ter custos mais elevados no servidor principal, especialmente em replicação síncrona.

Para a troca automática (failover) e gestão do cluster em ambos os casos, são necessárias ferramentas adicionais como Patroni, Stolon ou pgBouncer combinadas com scripts. Essas ferramentas monitoram o estado dos nós, escolhem um novo mestre em caso de falha e reconfiguram as réplicas.

A escolha entre replicação lógica e física depende dos requisitos específicos do projeto, tamanho da base de dados, necessidade de replicar apenas parte dos dados e tolerância a divergências de versões. Na maioria dos cenários modernos, onde se requer flexibilidade e replicação ao nível de tabelas, a replicação lógica é preferível.