Ahorre 15% en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código: Skills Comenzar
Secciones
Respaldo Servidores dedicados

Copia de seguridad y recuperación de bases de datos PostgreSQL: Una guía completa para usuarios de AlexHost

Por qué la estrategia de copia de seguridad de PostgreSQL es más importante de lo que crees

La pérdida de datos no es un riesgo hipotético — es una certeza operativa que todo administrador de bases de datos enfrentará en algún momento. Los fallos de hardware, las eliminaciones accidentales, las transacciones corruptas y los ataques de ransomware pueden llevar un entorno de producción a su punto de quiebre en cuestión de segundos. Para los usuarios de PostgreSQL, tener una estrategia de copia de seguridad robusta, probada y automatizada es la diferencia entre un incidente menor y un fracaso empresarial catastrófico.

AlexHost Dedicated Servers proporcionan una base ideal para alojar y proteger bases de datos PostgreSQL. Con almacenamiento NVMe SSD de nivel empresarial que ofrece un rendimiento de E/S excepcional, acceso root completo para control de configuración total, y protección DDoS integrada, AlexHost te proporciona el rendimiento de infraestructura y la postura de seguridad que las cargas de trabajo de bases de datos serias demandan.

Ya sea que estés ejecutando una plataforma de comercio electrónico de alto tráfico, una aplicación SaaS, una instalación de WordPress respaldada por una base de datos relacional, o un sistema empresarial personalizado, esta guía te lleva a través de cada método mayor de copia de seguridad y recuperación de PostgreSQL — desde volcados SQL simples hasta la Recuperación Point-in-Time (PITR) avanzada — todo optimizado para entornos de producción.

1. Comprensión de las opciones de copia de seguridad de PostgreSQL

PostgreSQL incluye varios mecanismos de copia de seguridad maduros y bien documentados. La elección del correcto depende del tamaño de su base de datos, objetivos de tiempo de recuperación (RTO), objetivos de punto de recuperación (RPO) y tolerancia de complejidad operativa.

MétodoMejor paraVentajasDesventajas
SQL Dump (pg_dump)Bases de datos pequeñas a medianasSimple, portátil, legible por humanosLento para bases de datos muy grandes
Custom Format DumpBases de datos medianas a grandesComprimido, restauración paralelaBinario, requiere pg_restore
File System SnapshotBases de datos muy grandesRápido, consistenteRequiere experiencia, la base de datos debe estar en reposo o ser compatible con snapshots
PITR (WAL Archiving)Sistemas de producción críticosRecuperación granular a un punto en el tiempoConfiguración y mantenimiento complejos

Comprender estos compromisos antes de comenzar es esencial. La mayoría de los entornos de producción se benefician de combinar al menos dos enfoques — por ejemplo, volcados de formato personalizado nocturno junto con archivado WAL continuo para capacidad de recuperación granular.

2. Requisitos previos y permisos de privilegios

Antes de ejecutar cualquier operación de copia de seguridad, confirme que los siguientes requisitos previos estén en su lugar:

Privilegios de usuario:

  • Debe ser un superusuario de PostgreSQL o el propietario de la base de datos de destino para realizar una copia de seguridad completa.
  • Para pg_dumpall, los privilegios de superusuario son obligatorios.

Verifique su versión de PostgreSQL:

psql --version

Compruebe el espacio en disco disponible antes de hacer una copia de seguridad:

df -h /var/lib/postgresql/

Asegúrese de que su destino de copia de seguridad tenga suficiente espacio libre — como mínimo 1.5× el tamaño de la base de datos que se está respaldando para tener en cuenta los archivos temporales y la sobrecarga de compresión.

Conéctese a su servidor a través de SSH:

ssh root@your-server-ip

Si está utilizando un plan de VPS Hosting, tendrá acceso SSH completo y la capacidad de instalar, configurar y administrar PostgreSQL sin restricciones.

3. Método 1 — SQL Dump con pg_dump

La utilidad pg_dump es la herramienta de copia de seguridad de PostgreSQL más utilizada. Produce una instantánea consistente de una única base de datos, incluso mientras la base de datos se está utilizando activamente. El resultado es un script SQL de texto plano que se puede revisar, editar y reproducir en cualquier instalación de PostgreSQL compatible.

Paso 1: Abre una Terminal y Accede a Tu Servidor

ssh root@your-alexhost-server-ip

Paso 2: Ejecuta el Comando pg_dump

pg_dump -U username -W -F p database_name > /backups/backup_file.sql

Desglose de parámetros:

ParámetroDescripción
-U usernameEl usuario de PostgreSQL que realiza la copia de seguridad
-WSolicitar contraseña de forma interactiva
-F pFormato de salida: p = texto SQL plano
database_nameEl nombre de la base de datos a respaldar
> /backups/backup_file.sqlRedirigir la salida a un archivo

Ejemplo práctico:

pg_dump -U postgres -W -F p my_production_db > /backups/my_production_db_$(date +%Y%m%d_%H%M%S).sql

> Consejo profesional: Añadir una marca de tiempo usando $(date +%Y%m%d_%H%M%S) al nombre del archivo de copia de seguridad garantiza que nunca sobrescribas accidentalmente una copia de seguridad anterior y crea un archivo cronológico natural.

Paso 3: Verifica el Archivo de Copia de Seguridad

ls -lh /backups/
head -50 /backups/my_production_db_*.sql

El archivo debe comenzar con comentarios de encabezado de PostgreSQL y declaraciones SET, confirmando que se creó un volcado válido.

4. Método 2 — Copia de seguridad de todas las bases de datos con pg_dumpall

Cuando necesitas hacer una copia de seguridad de todas las bases de datos en una instancia de PostgreSQL — incluyendo objetos globales como roles y tablespaces — pg_dumpall es la herramienta correcta.

pg_dumpall -U postgres -W > /backups/all_databases_$(date +%Y%m%d).sql

Este comando exporta:

  • Todas las bases de datos
  • Todos los roles (usuarios y grupos)
  • Todos los tablespaces
  • Toda la configuración global

Importante: El archivo de salida de pg_dumpall puede ser muy grande en servidores ocupados. Asegúrate de que tu partición de copia de seguridad tenga espacio adecuado y considera comprimir la salida inmediatamente:

pg_dumpall -U postgres | gzip > /backups/all_databases_$(date +%Y%m%d).sql.gz

5. Método 3 — Copias de seguridad en formato personalizado para bases de datos grandes

Para bases de datos de producción que superen algunos gigabytes, se recomienda encarecidamente el formato personalizado (-F c) sobre volcados SQL simples. Las copias de seguridad en formato personalizado son:

  • Comprimidas por defecto — reduciendo significativamente los requisitos de almacenamiento
  • Más rápidas de restaurar — compatible con operaciones de restauración paralela con la bandera -j
  • Restaurables selectivamente — permitiéndote restaurar tablas o esquemas individuales

Creación de una copia de seguridad en formato personalizado

pg_dump -U postgres -W -F c my_production_db > /backups/my_production_db_$(date +%Y%m%d).dump

Creación de una copia de seguridad en formato de directorio comprimido (compatible con paralelismo)

pg_dump -U postgres -W -F d -j 4 -f /backups/my_production_db_dir my_production_db
ParámetroDescripción
-F dFormato de directorio — un archivo por tabla
-j 4Usar 4 procesos de trabajo paralelos
-f /path/to/dirDirectorio de salida (no debe existir aún)

Este enfoque reduce drásticamente la duración de la copia de seguridad en servidores multinúcleo, lo que lo hace ideal para los entornos de servidor dedicado de alto rendimiento disponibles en AlexHost.

6. Restauración desde Volcados SQL

Restaurar una Base de Datos Única desde un Volcado SQL Simple

Primero, asegúrate de que la base de datos de destino existe. Si no existe, créala:

psql -U postgres -c "CREATE DATABASE my_restored_db;"

Luego restaura:

psql -U postgres -d my_restored_db -f /backups/my_production_db_backup.sql

Desglose de parámetros:

ParámetroDescripción
-U postgresSuperusuario de PostgreSQL
-d my_restored_dbBase de datos de destino para la restauración
-f /path/to/file.sqlRuta al archivo de volcado SQL

Monitorear el Progreso de Restauración

Para archivos SQL grandes, puedes monitorear el progreso usando pv:

pv /backups/my_production_db_backup.sql | psql -U postgres -d my_restored_db

7. Restauración desde volcados de formato personalizado

Los volcados de formato personalizado requieren la utilidad pg_restore en lugar de psql.

Restauración básica

pg_restore -U postgres -d my_restored_db /backups/my_production_db.dump

Restaurar y crear la base de datos automáticamente

Utiliza la bandera -C para indicar a pg_restore que cree la base de datos antes de rellenarla:

pg_restore -U postgres -C -d postgres /backups/my_production_db.dump

Restauración paralela para una recuperación más rápida

pg_restore -U postgres -d my_restored_db -j 4 /backups/my_production_db_dir/

Usar -j 4 con una copia de seguridad en formato de directorio puede reducir el tiempo de restauración hasta un 75% en un servidor de cuatro núcleos — una ventaja significativa para minimizar el tiempo de inactividad durante la recuperación ante desastres.

Restaurar solo una tabla específica

pg_restore -U postgres -d my_restored_db -t orders /backups/my_production_db.dump

Esta capacidad granular es una de las ventajas clave del formato personalizado sobre los volcados SQL simples.

8. Método 4 — Archivado Continuo y Recuperación a un Punto en el Tiempo (PITR)

PITR es el estándar de oro para implementaciones de PostgreSQL críticas. Te permite restaurar tu base de datos a cualquier momento específico — no solo la última copia de seguridad — reproduciendo segmentos Write-Ahead Log (WAL) en una copia de seguridad base. Esto es esencial para escenarios donde necesitas recuperarte de un error lógico (como un DROP TABLE) que ocurrió en una marca de tiempo conocida.

Paso 1: Habilitar Archivado WAL en postgresql.conf

Localiza y edita tu archivo de configuración de PostgreSQL:

nano /etc/postgresql/15/main/postgresql.conf

Añade o modifica las siguientes directivas:

# Enable WAL archiving
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'

Explicación de parámetros:

ParámetroValorDescripción
wal_levelreplicaHabilita suficiente detalle WAL para archivado
archive_modeonActiva el proceso de archivado
archive_command'cp %p /path/%f'Comando shell para copiar archivos WAL al archivo

Crea el directorio de archivo y establece permisos correctos:

mkdir -p /var/lib/postgresql/wal_archive
chown postgres:postgres /var/lib/postgresql/wal_archive
chmod 700 /var/lib/postgresql/wal_archive

Reinicia PostgreSQL para aplicar los cambios:

systemctl restart postgresql

Paso 2: Tomar una Copia de Seguridad Base con pg_basebackup

pg_basebackup -U postgres -D /backups/base_backup -Ft -z -P -Xs
ParámetroDescripción
-D /backups/base_backupDirectorio de destino para la copia de seguridad base
-FtSalida en formato Tar
-zComprimir con gzip
-PMostrar progreso
-XsTransmitir WAL durante la copia de seguridad

Paso 3: Restaurar a un Punto Específico en el Tiempo

Para restaurar desde una copia de seguridad base y archivos WAL:

  1. Detén PostgreSQL:
systemctl stop postgresql
  1. Limpia el directorio de datos existente:
rm -rf /var/lib/postgresql/15/main/*
  1. Extrae la copia de seguridad base:
tar -xzf /backups/base_backup/base.tar.gz -C /var/lib/postgresql/15/main/
  1. Crea un recovery.conf (PostgreSQL 11 y anteriores) o configura postgresql.conf y crea un archivo recovery.signal (PostgreSQL 12+):
# For PostgreSQL 12+
touch /var/lib/postgresql/15/main/recovery.signal

Añade a postgresql.conf:

restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
recovery_target_time = '2025-01-15 14:30:00'
recovery_target_action = 'promote'
  1. Establece la propiedad correcta e inicia PostgreSQL:
chown -R postgres:postgres /var/lib/postgresql/15/main/
systemctl start postgresql

PostgreSQL reproducirá segmentos WAL hasta la marca de tiempo especificada y luego se promoverá a un estado normal de lectura-escritura.

9. Automatización de Copias de Seguridad con Cron

Las copias de seguridad manuales no son confiables. Automatizar tu cronograma de copias de seguridad con cron garantiza consistencia y elimina el factor de error humano.

Crear un Script de Copia de Seguridad

nano /usr/local/bin/pg_backup.sh
#!/bin/bash

# PostgreSQL Automated Backup Script
BACKUP_DIR="/backups/postgresql"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
DB_USER="postgres"
DB_NAME="my_production_db"
RETENTION_DAYS=14

# Create backup directory if it doesn't exist
mkdir -p "$BACKUP_DIR"

# Perform the backup
pg_dump -U "$DB_USER" -F c "$DB_NAME" > "$BACKUP_DIR/${DB_NAME}_${TIMESTAMP}.dump"

# Remove backups older than retention period
find "$BACKUP_DIR" -name "*.dump" -mtime +"$RETENTION_DAYS" -delete

# Log completion
echo "[$TIMESTAMP] Backup of $DB_NAME completed successfully." >> /var/log/pg_backup.log

Haz el script ejecutable:

chmod +x /usr/local/bin/pg_backup.sh

Programar con Cron

crontab -e

Añade la siguiente línea para ejecutar una copia de seguridad cada noche a las 2:00 AM:

0 2 * * * /usr/local/bin/pg_backup.sh

Para copias de seguridad completas semanales más archivado WAL incremental diario, combina esto con la configuración PITR descrita en la sección anterior.

10. Asegurar y Almacenar Copias de Seguridad Fuera del Sitio

Una copia de seguridad almacenada en el mismo servidor que tu base de datos de producción no es una copia de seguridad real — es un único punto de fallo. Implementa las siguientes prácticas de seguridad y almacenamiento fuera del sitio:

Encriptar Copias de Seguridad Antes de la Transferencia

gpg --symmetric --cipher-algo AES256 /backups/my_production_db.dump

Transferir Copias de Seguridad a una Ubicación Remota con rsync

rsync -avz --progress /backups/postgresql/ user@remote-backup-server:/remote/backups/postgresql/

Usar pg_dump con SSH Pipe para Copia de Seguridad Remota Directa

pg_dump -U postgres my_production_db | gzip | ssh user@remote-server "cat > /backups/my_production_db_$(date +%Y%m%d).sql.gz"

Reglas de Firewall para PostgreSQL (UFW)

Restringe el acceso al puerto PostgreSQL solo a IPs de confianza:

ufw allow from 192.168.1.0/24 to any port 5432
ufw deny 5432
ufw enable

Para equipos que administran múltiples proyectos en diferentes niveles de alojamiento, los planes de Alojamiento Web Compartido de AlexHost también admiten herramientas de administración de bases de datos que pueden complementar tus flujos de trabajo de copia de seguridad para proyectos más pequeños.

11. Resumen de mejores prácticas

Implementar copias de seguridad de PostgreSQL correctamente requiere disciplina y un enfoque en capas. Sigue estas mejores prácticas para asegurar que tus datos siempre estén protegidos:

PrácticaRecomendación
Frecuencia de copias de seguridadMínimo diariamente; cada hora para bases de datos con muchas transacciones
Formatos de copia de seguridadUsa formato personalizado (-F c) para bases de datos > 1 GB
Política de retenciónMantén 14 copias diarias, 4 semanales y 3 mensuales
VerificaciónRestaura en un entorno de prueba mensualmente para validar la integridad
CifradoSiempre cifra las copias de seguridad antes de transferirlas fuera del sitio
Almacenamiento fuera del sitioMantén copias de seguridad en al menos una ubicación geográficamente separada
MonitoreoAlerta sobre fallos de trabajos de copia de seguridad por correo electrónico o sistema de monitoreo
PITR para producciónHabilita el archivado de WAL en todas las bases de datos críticas
DocumentaciónMantén un manual escrito para procedimientos de restauración

> Recordatorio crítico: Una copia de seguridad que nunca ha sido probada no es una copia de seguridad — es una suposición. Programa simulacros de restauración regulares y documenta los resultados.

Conclusión: Proteja sus datos PostgreSQL con confianza en AlexHost

PostgreSQL ofrece uno de los conjuntos de herramientas de copia de seguridad y recuperación más completos de cualquier sistema de base de datos de código abierto. Desde la simplicidad de pg_dump para instantáneas SQL rápidas hasta la precisión quirúrgica de PITR para recuperación granular a un punto en el tiempo, tiene todo lo que necesita para construir una estrategia de protección de datos a prueba de balas.

La clave es la ejecución: automatice sus copias de seguridad, verifíquelas regularmente, encriptelas antes de transferirlas y almacénelas fuera del sitio. Combinado con el rendimiento y la confiabilidad de Servidores Dedicados AlexHost — con almacenamiento NVMe, acceso root completo y protección DDoS de nivel empresarial — sus bases de datos PostgreSQL serán rápidas y resilientes.

Para equipos que necesitan infraestructura escalable sin la sobrecarga de administrar metal desnudo, Alojamiento VPS AlexHost ofrece una alternativa flexible y rentable con el mismo compromiso con el rendimiento y el tiempo de actividad. Y si necesita asegurar sus aplicaciones web respaldadas por bases de datos de extremo a extremo, emparejar su alojamiento con Certificados SSL AlexHost garantiza comunicación encriptada entre su capa de aplicación y sus usuarios.

Comience a implementar estas estrategias de copia de seguridad hoy. Su yo futuro — enfrentando un incidente a las 3 AM con una base de datos de producción corrupta — le agradecerá por ello.