pg_dump es una herramienta de línea de comandos que viene con PostgreSQL y te permite exportar una base de datos a un archivo de backup. Este archivo puede contener solo la estructura, solo los datos, o ambos.
La principal ventaja de pg_dump es que te deja mover datos entre servidores, restaurar la base después de un fallo o simplemente guardar un archivo para almacenamiento a largo plazo. Ojo, esta utilidad está más pensada para backups lógicos (usando consultas SQL) que para copiar físicamente los archivos de la base de datos.
Sintaxis básica del comando pg_dump
Para crear una copia de seguridad con pg_dump, solo tienes que ejecutar este comando en la terminal:
pg_dump -U username -d database_name -f backup_file.sql
Vamos a ver qué significa cada parte del comando:
-U username— indica el nombre de usuario de PostgreSQL que se usa para conectarse a la base de datos.-d database_name— especifica el nombre de la base de datos de la que quieres hacer el backup.-f backup_file.sql— define dónde se guarda el archivo de backup. Puede ser una ruta completa o relativa.
Ejemplo: imagina que tienes una base de datos llamada university y quieres hacer un backup en el archivo university_backup.sql. El comando sería así:
pg_dump -U postgres -d university -f university_backup.sql
En este caso, PostgreSQL te pedirá la contraseña del usuario postgres para poder acceder a los datos.
Consejo: si trabajas en un servidor local y no quieres meter la contraseña cada vez, configura el archivo .pgpass. Échale un ojo a la documentación oficial de PostgreSQL para más detalles.
Parámetros y cómo usarlos
La utilidad pg_dump es súper flexible y puedes configurarla para hacer backups con diferentes opciones:
- Backup solo de la estructura de la base de datos
Si solo quieres guardar la estructura de la base (por ejemplo, para montarla en otro servidor), usa el flag --schema-only. Ejemplo:
pg_dump -U postgres -d university --schema-only -f university_schema.sql
Esto te crea un script SQL con solo los comandos CREATE TABLE, CREATE INDEX, etc., pero sin datos.
- Backup solo de los datos
A veces solo necesitas guardar los datos, sin la estructura. En ese caso, usa el flag --data-only:
pg_dump -U postgres -d university --data-only -f university_data.sql
El archivo resultante tendrá comandos INSERT INTO para restaurar tus datos.
- Comprimir el backup
El archivo de backup puede ser bastante grande, sobre todo si tu base tiene muchas tablas y datos. Para reducir el tamaño, usa el parámetro --compress:
pg_dump -U postgres -d university -f university_backup.sql --compress=6
El nivel de compresión va de 0 (sin comprimir) a 9 (máxima compresión). Ten en cuenta que cuanto más alto el nivel, más tarda en hacerse el backup.
- Exportar en formato binario
Si quieres restaurar más rápido, puedes guardar el backup en formato binario en vez de un script SQL de texto:
pg_dump -U postgres -d university -Fc -f university_backup.dump
La opción -Fc indica el formato Custom, que puedes restaurar usando la utilidad pg_restore.
Ejemplos de creación de backups
Backup completo de la base de datos
Supón que tienes una base de datos company y quieres hacer un backup completo, con estructura y datos:
pg_dump -U postgres -d company -f company_backup.sql
Backup de una sola tabla
Si solo necesitas guardar una tabla de la base, usa el parámetro -t:
pg_dump -U postgres -d company -t employees -f employees_backup.sql
Este archivo tendrá la estructura y los datos solo de la tabla employees.
Backup de varias tablas
Para hacer backup de varias tablas, añade varios parámetros -t:
pg_dump -U postgres -d company -t employees -t departments -f selected_tables_backup.sql
Backup comprimido
Para ahorrar espacio, usa el flag --compress o crea el archivo directamente en formato comprimido:
pg_dump -U postgres -d company -Fc -f company_backup_compressed.dump
Consejos útiles
Revisa el tamaño del archivo de backup. Si el backup es demasiado pequeño, puede que haya habido un error. Usa el parámetro --verbose para ver más detalles del proceso.
Automatiza el proceso. Usa cron o pg_cron para programar backups regulares. No te olvides de rotar los backups antiguos para no llenar el disco.
Verifica que los backups sean correctos. Prueba restaurar los backups en un servidor de pruebas para asegurarte de que todo va bien.
Errores con los que te puedes topar
Error de autenticación. Si no pones el usuario correcto o te olvidas la contraseña, pg_dump te dará un error. Asegúrate de tener bien configurado el archivo .pgpass para autorizarte automáticamente.
Error de conexión. Si el servidor PostgreSQL no está arrancado o pusiste mal el nombre de la base, la utilidad no podrá hacer el backup. Revisa el nombre de la base y el estado del servidor.
Problema de permisos. El usuario con el que ejecutas pg_dump tiene que tener permisos para leer la estructura y los datos de la base. Usa un rol de administrador si puedes.
GO TO FULL VERSION