En pocas palabras
Gestor de backups y recuperación de servidores PostgreSQL, incluido point-in-time recovery.
Qué problema resuelve
Copias difíciles de catalogar, verificar y restaurar de forma operativa.
Cuándo utilizarlo
PostgreSQL con objetivos de recuperación definidos. Ejemplo: restaurar hasta antes de una operación errónea.
De la idea a la práctica
Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.
En el Radar compartido: Trial (valoración de la edición aportada).
Cómo funciona
Coordina copias físicas y archivado de WAL para reconstruir el estado del servidor hasta un instante disponible. Mantiene un catálogo y políticas de retención.
Ejemplo de uso
Conservar una copia base y la secuencia WAL necesaria. Restaurar en un servidor aislado hasta el momento anterior al incidente y verificar integridad y datos esperados.
Arquitectura
Barman se instala en un servidor dedicado (o contenedor) separado de PostgreSQL y mantiene, por cada servidor protegido, dos flujos:
| Flujo | Qué copia | Cómo se obtiene |
|---|---|---|
| Backup base | Copia física completa del directorio de datos | pg_basebackup (backup_method = postgres) o rsync por SSH |
| WAL | Registro de transacciones posterior a la copia | archive_command con barman-wal-archive o streaming con pg_receivewal |
Una copia base sin los WAL siguientes solo restaura ese instante. Con ambos se puede reconstruir el servidor en cualquier momento entre la copia más antigua conservada y el último WAL recibido (point-in-time recovery, PITR).
Métodos de backup
| Método | Ventajas | Consideraciones |
|---|---|---|
postgres (streaming) |
Sin SSH; usa el protocolo de replicación; soporta backups incrementales con PostgreSQL 17 | Requiere un usuario con rol REPLICATION |
rsync (SSH) |
Copias diferenciales a nivel de archivo, deduplicación con reuse_backup = link |
Requiere acceso SSH al servidor de base de datos |
| barman-cloud | Envía copias y WAL directamente a S3, GCS o Azure Blob | Sin servidor Barman; catálogo en el bucket |
Configuración de un servidor
# /etc/barman.d/pg-originacion.conf
[pg-originacion]
description = "PostgreSQL de originación"
conninfo = host=10.0.0.12 user=barman dbname=postgres
streaming_conninfo = host=10.0.0.12 user=streaming_barman
backup_method = postgres
streaming_archiver = on
slot_name = barman
create_slot = auto
retention_policy = RECOVERY WINDOW OF 30 DAYS
minimum_redundancy = 2
compression = gzip
El replication slot garantiza que PostgreSQL no recicle WAL que Barman aún no ha recibido. Vigila su retraso: si Barman deja de leer, el disco del servidor de base de datos se llena.
Comandos esenciales
barman check pg-originacion # verifica conexión, WAL, slot y espacio
barman backup pg-originacion --wait # copia base y espera el último WAL necesario
barman list-backups pg-originacion
barman show-backup pg-originacion latest
# Recuperar en un servidor aislado al instante previo a un borrado accidental
barman recover pg-originacion latest /var/lib/postgresql/17/main \
--remote-ssh-command "ssh postgres@10.0.0.50" \
--target-time "2026-10-17 09:41:00+00" \
--target-action promote
barman cron (programado cada minuto) gestiona el archivado de WAL y la aplicación de la política de retención.
Políticas de retención
RECOVERY WINDOW OF 30 DAYS: conserva lo necesario para recuperar cualquier instante de los últimos 30 días.REDUNDANCY 3: conserva las tres copias base más recientes.minimum_redundancy: número mínimo de copias que nunca se borran, aunque caduquen.
Define la ventana a partir del RPO (pérdida de datos tolerable) y de requisitos regulatorios, no del espacio disponible.
Barman frente a otras opciones
| Opción | Encaja cuando |
|---|---|
| Barman | PostgreSQL autogestionado en VMs, varios servidores, catálogo central |
| pgBackRest | Bases muy grandes, paralelismo y backups incrementales a nivel de bloque |
| CloudNativePG + barman-cloud | PostgreSQL en Kubernetes con copias a almacenamiento de objetos |
| Servicio gestionado (Cloud SQL, RDS) | El proveedor ya ofrece PITR; Barman solo para una copia adicional fuera de la nube |
Antipatrones frecuentes
- Copias en el mismo host o en la misma cuenta de nube que la base de datos: un incidente o un atacante se lleva ambas.
- No probar la restauración: el primer intento real ocurre durante el incidente.
- Ignorar
barman checken la monitorización: el archivado de WAL falla en silencio durante días.
Criterios de implementación
Monitorizar archivado, capacidad y errores; cifrar y separar permisos de las copias. Ensayar recuperación y compatibilidad de versiones antes de depender del procedimiento.
Continúa en las fuentes
Documentación oficial para verificar detalles y explorar más.