Referencia: Topología de Réplica de Analítica
Referencia compuesta para OLTP de comercio electrónico en PostgreSQL 18.4 (GCP Cloud SQL) con cargas de trabajo de BI aisladas en una réplica física con retraso (retraso de aplicación recovery_min_apply_delay de 15 minutos). Metabase y dbt leen solo de la réplica; la principal sirve para el proceso de pago.
Topología
Principal (OLTP, r8g.4xlarge)
│
├── Réplica de standby activa (API de solo lectura, lag <5s)
│
└── Réplica con retraso (BI + dbt, lag de 15 min, disco más grande)| Consumidor | Destino | SLA de Frescura |
|---|---|---|
| API de Checkout | Principal | Lectura-tu-escritura |
| API de catálogo de productos | Réplica activa | < 10s de lag OK |
| Metabase | Réplica con retraso | Banner de 15 min |
| dbt nocturno | Réplica con retraso | Modelos T+1 |
Configuración
# postgresql.conf solo en la réplica con retraso
recovery_min_apply_delay = '15min'
hot_standby_feedback = on
max_standby_streaming_delay = '30s'-- En la principal: monitorizar la reproducción en ambas 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;Barreras de Protección de BI
-- Límites de roles en la réplica con retraso
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 apunta al host de la réplica con retraso
# La cadena de conexión de Metabase incluye ApplicationName para pg_stat_activity- No hay consultas maratónicas de CREATE TEMP TABLE en la réplica activa.
- dbt ejecuta
ANALYZEsolo en esquemas mart propiedad del rol de BI.
Historia de Incidente (Abreviada)
Black Friday: un analista ejecutó una consulta de join faltante en la réplica activa; el lag de reproducción amenazó la visualización del RPO de failover de OLTP. Solución: Se movió el SQL ad hoc a la réplica con retraso; se añadieron statement_timeout y documentación de enrutamiento.
Nota de Costo
La réplica con retraso es un tamaño mayor que la réplica activa (disco adicional para derrames de ordenación). Más barata que un data warehouse para marts curados de < 5 TB.
Relacionado
- Referencia: Topología SaaS Multi-inquilino - Base de OLTP
- ADR de Descarga de OLAP - cuándo abandonar Postgres
- Emergencia de Lag de Replicación - triaje de lag
- Dashboards de SLO - métricas de frescura
Versiones de Stack: Esta página fue escrita para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x, y PostGIS 3.5+.