Backups de PostgreSQL que se prueban solos: pg_dump, cifrado y verificación automática con GitHub Actions
Описание и применение
Автоматизированный пайплайн для PostgreSQL, создающий, шифрующий и проверяя резервные копии с помощью GitHub Actions, гарантируя их восстановимость.
Задача
Garantizar que un backup de PostgreSQL sea restaurable antes de un desastre.
Результат
Backup diario de 4 KB cifrado, verificado con 5 filas restauradas, artefacto retenido 7 días; restauración de producción en 24 s tras DROP TABLE.
Рабочий процесс
- 1. deploy.yml: despliega API y ejecuta pruebas de humo, construye imagen Docker y dispara Deploy Hook si pasa.
- 2. backup.yml: ejecuta diariamente a las 02:00 UTC, genera dump con pg_dump, comprime, verifica, cifra con GPG, calcula checksum y sube como artefacto.
- 3. restore.yml: restaura backup en base temporal, cuenta filas, falla si hay corrupción o error de restauración.
- 4. backup.sh: script bash que ejecuta pg_dump con opciones de limpieza y sin privilegios, comprueba gzip, busca marca de dump completo, cifra si se dispone de BACKUP_ENCRYPTION_KEY, genera SHA-256 y limpia archivos parciales en error.
Доказательства
En este proyecto partimos de una pregunta sencilla: ¿cómo sabemos que un backup sirve antes de necesitarlo?
El script es el corazón del proyecto. Lo escribí en bash con set -Eeuo pipefail para que cualquier error detenga la ejecución.
Después de generar el backup, el workflow lo restaura en esa base efímera con el mismo restore.sh que usaríamos en un desastre real, y cuenta las filas de la tabla tasks.
En la ejecución de la demostración el backup tardó 44 segundos, pesó 4 KB cifrado y la verificación recuperó 5 filas.
- Дата записи: 2026-10-04T04:40:46.512Z