Replication: streaming, logical, failover
⏱ 13 min·⭐ 55 XP
Pré-requisitos (0/1)0%
- ⬜🔌 Connection pooling: pgbouncer e a trap serverless(Database Deep — Postgres Internals)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Tipos comparados
| Aspecto | Streaming (physical) | Logical |
|---|---|---|
| Granularidade | Cluster inteiro | Tabela/schema selecionável |
| Major version | Deve bater | Cross-version OK |
| Latency | Muito baixa | Baixa (decode overhead) |
| Use case | Standby pra failover | CDC, ETL, multi-master |
| Failover fácil | ✅ | Extra setup |
| DDL replicado | ✅ auto | ❌ manual |
AspectoGranularidade
Streaming (physical)Cluster inteiro
LogicalTabela/schema selecionável
AspectoMajor version
Streaming (physical)Deve bater
LogicalCross-version OK
AspectoLatency
Streaming (physical)Muito baixa
LogicalBaixa (decode overhead)
AspectoUse case
Streaming (physical)Standby pra failover
LogicalCDC, ETL, multi-master
AspectoFailover fácil
Streaming (physical)✅
LogicalExtra setup
AspectoDDL replicado
Streaming (physical)✅ auto
Logical❌ manual
Escrita
Aplicação
Primárioúnico que aceita escrita
Transporte
Registro de escritaa mesma estrutura que garante durabilidade local
Réplicas
Réplica próxima
Réplica remotaem outra região
Os dois regimes
Assíncronoconfirma ao gravar local — rápido, pode perder
Síncronoespera a réplica — não perde, e paga a ida e volta
- → escreve
- → confirma já
- → confirma depois desta
- Compute
- Conceito de arquitetura
- Segurança e identidade
A decisão inteira cabe numa pergunta: você aceita perder as últimas transações confirmadas se o primário morrer agora? Se não aceita, paga a ida e volta em toda escrita — não existe terceira opção.
- 1 · A replicação reaproveita o registro de durabilidade. O banco já grava toda mudança num registro antes de aplicá-la. A réplica é apenas mais um leitor desse registro — não há mecanismo separado.
- 2 · Assíncrono é rápido e tem janela de perda. O primário confirma assim que grava localmente. Se ele morrer antes de a réplica receber, aquelas transações confirmadas desaparecem.
- 3 · Síncrono elimina a perda e cobra latência. A confirmação espera a réplica. Toda escrita passa a custar uma ida e volta de rede — e com réplica em outra região isso é dezenas de milissegundos por transação.
- 4 · Dá para escolher por transação. Nem tudo precisa da mesma garantia. Confirmação de pagamento pode ser síncrona e registro de auditoria assíncrono, no mesmo banco.
- 5 · Réplica serve leitura, e leitura fica atrasada. É o ganho de escala mais direto e a origem do "não vejo o que acabei de gravar". A janela é pequena e visível para o usuário.
- 6 · Promover réplica é decisão, não automatismo. Promover a réplica errada — atrasada — perde dado. E promover duas cria duas verdades. É por isso que a troca automática precisa de árbitro externo, e não de heurística local.
synchronous_commit options
- off: commit retorna imediatamente, WAL async — rápido mas pode perder tx em crash
- local: espera local WAL flush (default se async replica)
- remote_write: espera replica receber (não aplicar ainda)
- on / remote_flush: espera replica FLUSH pra disk
- remote_apply: espera replica APLICAR + query nela vê
Quiz rápido
Qual é a consequência prática de usar replicação assíncrona?
Failover com Patroni
💡
Patroni é o solution moderno: high availability + automatic failover pra Postgres. Usa etcd/Consul/ZooKeeper como DCS (Distributed Configuration Store). Detecta primary down, elege novo via consenso, promote replica, reconfigura replication. Opsmanuais: nuncA. stolon é alternativa similar.
Perguntas frequentes
❓ Qual a diferença entre replicação física e lógica?
A física copia o registro de escrita em bloco e produz réplica byte a byte, da instância inteira, na mesma versão maior. A lógica replica mudança por linha, permite selecionar tabelas e atravessa versões — o que a torna a ferramenta de migração com pouca indisponibilidade.
❓ Réplica de leitura garante disponibilidade?
Não por si: ela escala leitura. Disponibilidade exige promoção automática e roteamento — sem isso, quando o primário cai, alguém precisa promover à mão. Confundir os dois é a causa de descobrir no incidente que não havia troca automática.
❓ O que é defasagem de réplica e por que ela quebra a aplicação?
É o atraso entre escrita no primário e visibilidade na réplica. Ela quebra o fluxo de gravar e ler em seguida: o usuário salva e a tela lê da réplica, que ainda não recebeu. A solução é ler do primário depois de escrever, ou aceitar a defasagem de forma explícita.
Fixando
Quiz rápido
Qual é o efeito colateral de ler das réplicas que a aplicação precisa tratar?
Quiz rápido
O que uma solução de eleição automática de novo primário precisa evitar acima de tudo?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…