Automatización y recuperación de respaldos PostgreSQL mediante GitHub Actions
Description and use
Automated PostgreSQL backup with GitHub Actions, GPG encryption, and deployment of BackupManager on Render.
Problem
La generación manual de copias de seguridad de bases de datos provoca olvidos, archivos desactualizados, pérdida de archivos y exposición de información sensible.
Outcome
Se logró automatizar la creación, cifrado y almacenamiento de respaldos de PostgreSQL, reduciendo riesgos de pérdida y exposición de datos, y se estableció un proceso de verificación de restauración.
Workflow
- Configurar secretos DATABASE_URL y BACKUP_PASSPHRASE en GitHub Actions.
- Crear archivo .github/workflows/postgresql-backup.yml con pasos para instalar cliente PostgreSQL y gnupg.
- Generar respaldo con pg_dump en formato custom.
- Cifrar el respaldo con GPG usando AES256 y la contraseña del secreto.
- Eliminar archivo sin cifrar para no dejar datos sensibles en el runner.
- (En producción) subir el archivo cifrado a un almacenamiento persistente y aplicar política de retención.
- Monitorear ejecuciones en la pestaña Actions y configurar alertas si fallan.
- Para restaurar: descifrar con GPG, luego usar pg_restore con opciones --no-owner y --no-acl.
- Verificar la restauración ejecutando consultas de conteo y comparando estructuras de tablas.
Evidence
Para conectarse a PostgreSQL se necesita una cadena de conexión que contiene información sensible, como el usuario y la contraseña.
El siguiente ejemplo genera un respaldo diario y lo cifra utilizando GPG:
Para restaurar el respaldo, primero se debe descifrar utilizando la contraseña correspondiente.
- Record date: 2026-10-17T02:41:10.775Z