Referência: Topologia de Réplica de Análise
Referência composta para OLTP de e-commerce em PostgreSQL 18.4 (GCP Cloud SQL) com cargas de trabalho de BI isoladas em uma réplica física atrasada (atraso de aplicação recovery_min_apply_delay de 15 minutos). Metabase e dbt leem apenas da réplica; o primário atende ao checkout.
Topologia
Primário (OLTP, r8g.4xlarge)
│
├── Réplica de standby quente (API somente leitura, lag <5s)
│
└── Réplica atrasada (BI + dbt, lag de 15 min, disco maior)| Consumidor | Destino | SLA de Frescor |
|---|---|---|
| API de Checkout | Primário | Read-your-writes |
| API de catálogo de produtos | Réplica quente | < 10s de lag OK |
| Metabase | Réplica atrasada | Banner de 15 min |
| dbt noturno | Réplica atrasada | Modelos T+1 |
Configuração
# postgresql.conf apenas na réplica atrasada
recovery_min_apply_delay = '15min'
hot_standby_feedback = on
max_standby_streaming_delay = '30s'-- No primário: monitorar a replicação em ambas as réplicas
SELECT application_name, state,
pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS lag_bytes,
replay_lag
FROM pg_stat_replication;Guardrails de BI
-- Limites de role na réplica atrasada
ALTER ROLE bi_reader SET statement_timeout = '10min';
ALTER ROLE bi_reader SET work_mem = '64MB';
REVOKE INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public FROM bi_reader;# dbt profiles.yml aponta para o host da réplica atrasada
# String de conexão do Metabase inclui ApplicationName para pg_stat_activity- Sem consultas maratonas
CREATE TEMP TABLEna réplica quente. - dbt executa
ANALYZEapenas em esquemasmartpertencentes à role de BI.
Histórico de Incidente (Abreviado)
Black Friday: analista executou consulta de join ausente na réplica quente; o lag de replicação ameaçou o RPO de exibição de failover do OLTP. Correção: Moveu SQL ad hoc para a réplica atrasada; adicionou statement_timeout e documentação de roteamento.
Nota de Custo
Réplica atrasada um tamanho maior que a réplica quente (disco extra para derramamentos de ordenação). Mais barato que um data warehouse para marts curados de < 5 TB.
Relacionado
- Referência: SaaS Multilocatário - Linha de base OLTP
- Descarga de OLAP ADR - quando sair do Postgres
- Emergência de Lag de Replicação - triagem de lag
- Dashboards de SLO - métricas de frescor
Versões da Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x, e PostGIS 3.5+.