Alejandría

Busca en Alejandría

Herramientas

Barman

Gestor de backups y recuperación de servidores PostgreSQL, incluido point-in-time recovery.

01

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.

02

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 check en 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.