Replicação duplica dados para redundância e performance. Read replicas distribuem carga. Failover automático garante uptime.
Conceitos Principais
Master-Slave
Master: writes. Slaves: reads. Async replication (lag). Failover manual ou auto.
Streaming Replication
WAL (Write-Ahead Log) streaming. Continuo, low lag. PostgreSQL built-in.
Sync vs Async
Sync: sem data loss, slow writes. Async: fast writes, possível data loss. Hybrid: quorum.
Failover
Master down → promote slave. Manual: DBA. Auto: Patroni, repmgr. DNS update, app reconnect.
Passo a Passo
- Setup Streaming Replication: Master postgresql.conf: wal_level = replica, max_wal_senders = 3. Slave: standby.signal, primary_conninfo. Start slave.
- Verify Replication: Master: SELECT * FROM pg_stat_replication. Slave: SELECT pg_is_in_recovery(). Check lag: replay_lag.
- Read Replica Pattern: App config: writeDB = master, readDB = slave. Writes → master. Reads → slave. Load balancer para múltiplas replicas.
- Auto Failover: Install Patroni. etcd/consul for consensus. Patroni monitors master. Promotes slave on failure. Updates DNS/VIP.
- Monitor Lag: pg_stat_replication: replay_lag, write_lag. Alert se lag > 10s. Sync replication se crítico.
Boas Praticas
Recomendacoes
• Múltiplas replicas (N+2 redundancy)
• Auto failover (Patroni)
• Monitor replication lag
• Async para performance, sync para critical
• Test failover regularmente
• Connection pooling
Erros Comuns
Evite estes erros
• Single replica (not HA)
• Não monitorar lag
• Failover não testado
• Writes na replica
• Não atualizar app config em failover
Checklist
- Streaming replication configurada
- Replica verificada
- Read pattern implementado
- Auto failover ativo
- Lag monitorado
- Failover testado