🐘 Respaldos con Estilo: ¡PostgreSQL no llora, hace backups!



🐐 Respaldos con Estilo: ¡PostgreSQL no llora, hace backups!

¿Apoco no te ha pasado, plebes desarrolladores, que de repente andas bien quitado de la pena, programando sabroso, y de la nada: ¡pum! se cae la base de datos! 😱
Y ahí andas tú, como si fueras el Comandante Ramiro, buscando a los perdidos: pg_dump, pg_restore, y todos los santos comandos que ni los mismos dioses de PostgreSQL entienden.

¡Ya estuvo bueno de eso!
Hoy les vengo a presentar un proyecto que está más chilo que una carne asada en la playa de Altata: psql-backup, una librería PHP bien perrona para hacer respaldos y restauraciones de PostgreSQL sin hacerte bolas con la terminal.


🗭 Tabla de Contenidos

  1. ¿Qué es psql-backup?
  2. Características principales
  3. Instalación vía Composer
  4. ¿Cómo se usa?
  5. Detalles técnicos
  6. Descarga y restauración
  7. Licencia

📦 ¿Qué es psql-backup?

Es una librería PHP escrita por julio101290 (alias: "el que respalda y no se raja") que permite realizar respaldos y restauraciones de bases de datos PostgreSQL, todo desde PHP. También incluye detección automática de si tienes o no el comando pg_dump instalado. Si no lo tienes, pues no pasa nada: ¡el respaldo se hace a puro PHP!


✨ Características principales

  • Respaldo usando pg_dump (si está disponible)
  • Modo alternativo 100% PHP (sin necesidad del binario)
  • Compresión ZIP opcional solo para PostgreSQL
  • Clase PostgreSQLBackup lista para usar
  • Compatible con proyectos CodeIgniter 4
  • Soporte multibase de datos: MariaDB y PostgreSQL

⚙️ Instalación vía Composer

Agrega el paquete a tu proyecto:

composer require julio101290/psql-backup

Luego importa la clase donde la vayas a usar:

use PostgresqlBackupManager\PostgreSQLBackup;

🚀 ¿Cómo se usa?

Fácil como el ceviche sinaloense. Aquí un ejemplo para respaldar:


\$pdo = new PDO("pgsql:host=localhost;port=5432;dbname=tu_basedatos", "usuario", "contrasena");
\$backup = new PostgreSQLBackup(\$pdo);

\$backup->backup("/ruta/a/backup.sql", true); // true para usar ZIP

Y para restaurar:

\$backup->restore("/ruta/a/backup.zip");

📃 Detalles técnicos

  • El archivo ZIP contiene el .sql plano.
  • Se descomprime automáticamente al restaurar.
  • Las sentencias SQL se separan de forma segura por punto y coma.
  • Control de transacciones usando beginTransaction y commit.

📥 Descarga y Restauración

Incluye un método en CodeIgniter para que descargues el respaldo, y si es PostgreSQL, lo ofrece en .zip. Ejemplo:


public function downloadBackup(\$uuid) {
  // Obtener info desde la BD
  \$dataBackup = \$this->backups->select("SQLFile,created_at")
                   ->where("uuid", \$uuid)->first();

  \$sqlPath = \$dataBackup["SQLFile"];

  if (pathinfo(\$sqlPath, PATHINFO_EXTENSION) === 'zip') {
    return $this->response
                ->download(\$sqlPath, null)
                ->setFileName("backup.zip");
  }

  return $this->response
              ->download(\$sqlPath, null)
              ->setFileName("backup.sql");
}

📄 Licencia

Este paquete está bajo licencia MIT. Puedes hacerle lo que gustes: clonarlo, modificarlo, hacerle una carnita asada, o incluso presumirlo en el café Internet.

¡Contribuciones bienvenidas! Si encuentras errores o quieres agregar funciones nuevas, jálate con un pull request.


✨ Final Feliz

En Sinaloa hacemos bien las cosas, y este paquete es prueba de ello. ¡Haz tus respaldos como todo un profesional y deja de sufrir como mariachi sin tequila!

¡Saluditos de parte del buen julio101920!

Comentarios

Entradas populares