sábado, 12 de julio de 2008

Generar un respaldo de una base de datos en PostgreSQL

Después de varios días que no he publicado nada, el día de hoy he decidido publicar este artículo que intentará explicar cómo se hace un respaldo de una base de datos en PostgreSQL.

La manera de hacer un respaldo en postgres es muy sencilla. Para realizar esto, necesitamos usar el comando pg_dump.

La siguiente línea muestra las opciones básicas para generar nuestro respaldo.

javoaxian@darthmaul:~$ pg_dump -U usuario -o -f archivo_con_el_respaldo.sql base_de_datos

La línea anterior usa las siguientes opciones:
  • -U usuario: Indica el dueño de la base de datos.
  • -o : Indica que deberá guardar los OID's.
  • -f archivo_con_el_respaldo.sql: Indica el archivo que contendrá el respaldo de la base de datos.
  • base_de_datos: Nombre de la base de datos.
El siguiente ejemplo muestra la generación de un respaldo por parte del usuario javoaxian, el cual es enviado al archivo respaldo.sql de la base de datos javoaxian.

javoaxian@darthmaul:~$ pg_dump -U javoaxian -o -f respaldo.sql javoaxian

Como puede observarse, es muy fácil crear nuestro respaldo. Esto es todo por el momento.

3 comentarios:

Lilian dijo...

Hola...! de casualidad sabes ¿como ejecutar el pg_dump desde PHP? Quiero hacer una funcion que mediante un boton me permita generar un respaldo de una bd postgres pero no lo consigo hacer.

javoaxian dijo...

Hola lilian, quiza lo que puedes hacer, es usar las funciones exec, system o shell_exec de PHP, estas funciones te permite usar comandos del sistema operativo, por tal motivo, podrías usar el comando pg_dump de postgres dentro de esta función.

Algo similar a esto:
exec("pg_dump -U usuario -o -f respaldo.sql base_de_datos");

Quiza debas escapar algunos caracteres. Espero que te sea de utilidad.

Pablo Vera dijo...

Yo encontre una pag realmente buena entre los comentarios de postgre es esta http://archives.postgresql.org/pgsql-php/2005-12/msg00023.php

Ahi podrás ver un script super completo para usar, solo debes copiar y pegar el codigo en una página vacia con extension php y veras como te funciona.
Si te da algun problema quisas sea por los permisos en la base de datos. Para eso crea una archivo $dbname.sql y le dar todos los permisos (777) y listo.