Replicación en streaming y WAL
Configure la replicación física en streaming basada en WAL, supervise el retraso y configure réplicas síncronas para escrituras sin pérdida de datos.
Replicación en streaming y WAL es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
¿Por qué replicar?
La replicación cumple varios objetivos a la vez:
- HA: sobrevivir a un fallo de la instancia principal
- Escalado de lecturas: descargar los SELECT en las réplicas
- Copia de seguridad / PITR: archivado continuo
- Distribución geográfica: réplicas cercanas a los usuarios
WAL: registro de escritura anticipada
Cada escritura se registra primero en el WAL. El WAL garantiza la durabilidad y es la base de la replicación: transmitir el WAL a una réplica → la réplica reproduce el WAL → la réplica queda actualizada.
Replicación física mediante streaming
Flujo WAL idéntico byte a byte desde la instancia principal hasta la réplica:
- La réplica es una copia binaria de la instancia principal
- Usa la misma versión de Postgres
- Se replica todo el clúster (todas las bases de datos y tablas)
- Es de solo lectura
Configuración: instancia principal
Configure la instancia principal en postgresql.conf:
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
-- pg_hba.conf: allow replication connections
host replication replicator 10.0.0.0/24 md5Configuración: réplica
Cree la copia de seguridad base e inicie con primary_conninfo:
pg_basebackup -h primary -D /var/lib/postgresql/data -U replicator -W -X stream -P
-- postgresql.conf on replica:
primary_conninfo = 'host=primary port=5432 user=replicator password=...'
-- Touch standby.signal file and start:
touch /var/lib/postgresql/data/standby.signalSíncrona frente a asíncrona
- Asíncrona (predeterminada): la instancia principal confirma sin esperar; la réplica puede quedar rezagada
- Síncrona: la instancia principal espera la confirmación de la réplica antes de COMMIT; no se pierden datos, pero es más lenta
-- Synchronous configuration on primary:
synchronous_commit = on
synchronous_standby_names = 'replica1, replica2'Retraso de replicación
Las réplicas asíncronas quedan por detrás de la instancia principal. Supervise:
SELECT client_addr, state, sent_lsn, write_lsn, replay_lsn,
pg_wal_lsn_diff(sent_lsn, replay_lsn) AS replay_lag_bytes
FROM pg_stat_replication;Ranuras de replicación
Las ranuras garantizan que la instancia principal conserve el WAL hasta que la réplica lo haya consumido:
SELECT pg_create_physical_replication_slot('replica1');
-- On replica:
primary_slot_name = 'replica1'Problema de las ranuras
Si una réplica se desconecta y nunca vuelve a conectarse, su ranura impide limpiar el WAL y el disco se llena. Elimine las ranuras que no utilice:
SELECT pg_drop_replication_slot('replica1');Réplicas en cascada
Una réplica puede transmitir a su vez el WAL a otras réplicas, lo que reduce la carga de la instancia principal.
Hot Standby
De forma predeterminada, las réplicas aceptan consultas de solo lectura (hot_standby = on). Las consultas de lectura de larga duración en la réplica pueden retrasar la reproducción del WAL; ajuste max_standby_streaming_delay.
Promoción
Para convertir una réplica en la nueva instancia principal:
pg_ctl promote -D /var/lib/postgresql/data
-- Or in SQL:
SELECT pg_promote();Resumen
La replicación mediante streaming = transmisión y reproducción del WAL.
- Física e idéntica a nivel binario
- Asíncrona de forma predeterminada; síncrona para no perder datos
- Las ranuras conservan el WAL, pero requieren atención
- La promoción convierte una réplica en la instancia principal
Comprobación rápida
¿Cuál es el principal riesgo de NO usar una ranura de replicación para una réplica mediante streaming?
Preguntas frecuentes
¿La lección «Replicación en streaming y WAL» es gratis?
Sí — el texto completo de «Replicación en streaming y WAL» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Replicación en streaming y WAL»?
Configure la replicación física en streaming basada en WAL, supervise el retraso y configure réplicas síncronas para escrituras sin pérdida de datos. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Replicación en streaming y WAL»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Replicación en streaming y WAL
- Replicación lógica para fragmentación
- Failover y elección del líder (Patroni, Stolon)
- Réplicas de lectura y enrutamiento de conexiones