Réplicas entre Regiones
Las réplicas entre regiones proporcionan una copia "cálida" de solo lectura en otra geografía. Son casi siempre asíncronas; acepta la latencia de replicación como tu RPO entre regiones a menos que inviertas en arquitecturas síncronas especializadas.
Receta
Réplica secundaria asíncrona en eu-west, primaria en us-east para lecturas de recuperación ante desastres y candidata a promoción.
# La réplica en eu-west tiene como objetivo la primaria en us-east en primary_conninfo
# Usa TLS y una ruta de red de replicación dedicada-- En la primaria: monitorizar la réplica secundaria entre regiones
SELECT application_name, client_addr,
pg_wal_lsn_diff(sent_lsn, replay_lsn) AS bytes_behind,
replay_lag
FROM pg_stat_replication
WHERE client_addr << '10.1.%'; -- Ejemplo de CIDR de eu-westCuándo usar esto: Residencia regulatoria, escalado de lectura regional o promoción de recuperación ante desastres cuando se pierde la región primaria.
Ejemplo de Trabajo
Despliega una réplica física entre regiones con slot y SLO de latencia:
# eu-west: copia de seguridad base desde la primaria de us-east
pg_basebackup -h primary.us-east.db.internal -U replicator \
-D /var/lib/postgresql/18/main -Fp -Xs -P -R \
-C -S eu_west_dr_slot-- primary_conninfo en eu-west incluye sslmode=verify-full
-- Consulta de alerta de latencia (ejecutar en la primaria)
SELECT application_name,
pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS dr_lag_bytes
FROM pg_stat_replication
WHERE application_name = 'eu_west_dr';# Opcional: eu-west sirve informes de solo lectura a través del frontend de réplica de HAProxy
# Las escrituras todavía se enrutan solo a us-east hasta que se declare el DRLo que esto demuestra:
- El enlace entre regiones añade latencia de red de ida y vuelta (RTT) a la latencia de reproducción.
- El slot físico en la primaria retiene WAL para la réplica de DR durante las interrupciones.
- La réplica de DR es de solo lectura hasta que se ejecuta el manual de promoción.
Análisis Profundo
Presupuesto de Latencia
| Enlace | RTT Típico | Latencia de reproducción adicional |
|---|---|---|
| Entre Zonas de Disponibilidad (AZ) | < 2 ms | Mínima |
| Entre regiones en el mismo continente | 20-80 ms | Segundos bajo carga |
| Intercontinental | 100-250 ms | Segundos a minutos |
Establece el RPO de nivel 1 entre regiones en la latencia p99 medida más el respaldo de archivo.
Esquema del Manual de Promoción
- Declarar desastre (ver Manual de DR y Comunicaciones)
- Detener escrituras en la región primaria (si está parcialmente activa)
- Verificar si la latencia de la réplica de DR es aceptable o aceptar la ventana de pérdida de datos
pg_ctl promoteen DR o failover de Patroni en el ámbito de DR- Repuntar DNS / HAProxy / PgBouncer a la región de DR
- Reconstruir la replicación de vuelta a la región primaria cuando se recupere
Entre Regiones en Cascada
Un centro en us-east alimenta múltiples regiones (ver Réplicas en Cascada) para reducir la dispersión de la primaria.
Trampas Comunes
- Tratar la réplica de DR como Alta Disponibilidad (HA) - La partición de la red ancha causa una gran latencia; no es un failover de sub-minuto. Solución: Patroni en la misma región para HA; entre regiones para DR.
- Replicación síncrona entre regiones - La latencia de confirmación es inaceptable para la mayoría de las aplicaciones. Solución: Asíncrona con RPO documentado.
- Sin slot en la réplica de DR - Un breve corte de red en la región pierde WAL para siempre. Solución:
eu_west_dr_slotpermanente. - Lecturas en réplica de DR obsoleta - Los usuarios ven datos antiguos. Solución: Enrutar solo analíticas a DR; documentar la latencia en la UI si es necesario.
- Promoción sin etcd en DR - El estado de Patroni confundido. Solución: Ámbito de DCS separado por región o manual de promoción manual.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Replicación lógica a DR | Desfase de versión importante, subconjunto | Clonación de bytes completa del clúster |
| Restauración de copia de seguridad solo en DR | Nivel 2 sensible al costo | Se necesita réplica "cálida" de Nivel 0 |
| Aurora Global Database | Nativo de AWS global | Requisito de Patroni auto-alojado |
Preguntas Frecuentes
¿Cuánta latencia de DR está bien?
Lo que diga el RPO del nivel. Mide la latencia p99 de replay_lag y los bytes de retraso durante la carga máxima.
¿Puede la réplica de DR aceptar escrituras?
Solo después de la promoción. Hasta entonces, solo lecturas (o ninguna si no está lista para servir datos obsoletos).
¿Patroni multiregión?
Patrón común: clúster de Patroni independiente por región; réplica entre regiones fuera de Patroni o como miembro sin failover.
¿Residencia de datos?
La región de DR debe cumplir con la jurisdicción legal; la replicación copia los datos primarios a través de la frontera.
¿Control de costos?
Clase de instancia más pequeña en DR; escalar durante el día de juego o incidente. El almacenamiento debe ajustarse al conjunto de datos completo.
Relacionado
- Conceptos Básicos de DR - Niveles RPO/RTO
- Conceptos Básicos de Replicación de Streaming - configuración de réplica secundaria
- Réplicas en Cascada - hub-and-spoke
- PITR en la Nube - copia de seguridad administrada entre regiones
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+.