Backup de bases de datos en PostgreSql

Un tema, para nada olvidable, es el de los backups.

Lo siguiente, es la descripción de cómo podemos lograr un dump nuestro PostgreSql desde la línea de comandos.

pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f "/home/damian/backups/mibase.backup" mibase

Ahora bien, empezemos a ver qué estamos haciendo y con que nos estamos encontrando.

En primer lugar, cuando querramos ejecutar este comando, nos va a pedir la contraseña para el usuario con el cual lo estamos queriendo ejecutar (usuario postgres en este caso). Entonces, ingresamos la contraseña, Enter, y comienza el proceso.

Prestemos atención al comando completo:

pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f "/home/damian/backups/mibase.backup" mibase

Veamos qué significan cada uno de los parametros que estamos indicando.

  • pg_dump es el comando en si mismo.
  • -i le indica que ignore la versión (entre el comando y la base de datos).
  • -h localhost especifica el host del motor de base de datos (localhost en este caso).
  • -p 5432 es la indicación del puerto donde corre el servicio.
  • -U postgres es para indicarle que usaremos el usuario postgres.
  • -F indica el formato de salida.
  • c es la elección del formato (comprime en este caso).
  • -b indica que vuelque los LO (large objects).
  • -v verbose.
  • -f es el archivo de salida.
  • /home/damian/backups/mibase.backup es el nombre para el archivo de salida (con path).
  • mibase es el nombre de la base a backupear.

De mas está aclarar, que siempre debemos recurrir a la fuente, así que nada mejor que visitar la documentación oficial.

A manera de yapa, si en lugar de utilizar Linux, aplicamos el ejemplo en Windows, habrá que hacerle los siguientes arreglos al comando:

C:\Archivos de programa\PostgreSQL\8.3\bin\pg_dump.exe -i -h localhost -p 5432 -U postgres -F c -b -v -f "C:\mibase.backup" mibase

Nótese que fue necesario indicar el path completo al binario.

Tweet about this on TwitterShare on Google+Email this to someoneDigg thisShare on TumblrBuffer this pageShare on FacebookShare on LinkedIn

4 pensamientos en “Backup de bases de datos en PostgreSql

  1. Darling

    Hola! muchas gracias! me funciona bien, pero ahora necesito hacer un respaldo de mi base de datos desde una pagina web con php, me puedes decir si es posible y la forma de hacerlo? me urge saber! de antemano, muchas gracias!

  2. Damián Autor

    Es posible hacerlo.
    Dependerá del escenario en el que te encuentres y de la configuración del servidor.
    Bien podrías invocar desde Php una llamada a la consola (usando system) y generar el dump y luego descargarlo.
    Hay otras opciones algo más resueltas. Si te das una vuelta por Php Classes vas a ver varias soluciones para el mismo tema.

  3. Darling

    Hola, descargue una clase de phpClasses pero me da errores o no la comprendo bien. Segun he investigado deberia poder ejecutar el pg_dump con exec o system pero no me da ningun resultado, no da error pero tampoco hace el backup, No se que mas hacer! gracias por responder! Feliz dia!

  4. Damián Autor

    Mi respuesta anterior debió ser más explicativa en cuanto al uso de llamadas desde Php a un comando del sistema operativo.
    Como ya comenté en el post sobre automatización de backups de PostgreSql, la llamada al comando pg_dump solicita siempre la contraseña del usuario que se quiere utilizar para el backup. Una forma de saltearse ese paso, es creando el archivo pgpass para el usuario que va a correr el comando.
    Al estar invocando dicho comando desde un entorno web, una posibilidad sería que tengas el archivo pgpass para el usuario que ejecuta el web server (esto lo comento como teoría, ya que ni lo he probado y tengo mis reservas al respecto).
    Las clases que supongo viste, lo que hacen es emular a pg_dump, pero haciendo uso de la metadata de la base de datos, listando los distintos objetos, obteniendo las estructuras y elementos de cada uno y leyendo los datos de cada tabla.
    Habría que ver en particular qué clase probaste y que error te devuelve para poder obtener tu backup.
    Saludos.

Los comentarios están cerrados.