Holas, bueno este post no es totalmente de mi autoria, pero lo he traducido y lo pongo en mi Blog por si alguien mas lo necesita, hago algunos aportes chiquititos al articulo original, para que se entienda bien en un entorno CentOs 5 y PostgreSQL 8.3
La entrada original en ingles esta en http://www.cyberciti.biz/tips/howto-backup-postgresql-databases.html
PostgreSQL es una de las bases de datos open-source mas robustas que existen. Como muchos otros RDBMS este brinda herramientas para realizar tareas de backup de la data.
Paso# 1: Ingresar al sistema como usuario postgres.
Digite el siguiente comando:
$ su postgres
Obtener la lista(s) de la(s) base de datos a sacar backup:
$ psql -l
Paso# 2: Hacer el backup usando pg_dump
Pg_dump es un utilitario para hacer backups de una base de datos PostgreSQL. Solo se puede hacer backup de una sola base de datos a la vez. Sintaxis general:
pg_dump basededatos > archivodestino
Ejemplo: Hacer backup a una base de datos llamada ventas
Escriba los siguientes comandos
$ pg_dump ventas > ventas.dump.out
Para restaurar la base de datos ventas:
$ psql -d ventas -f ventas.dump.out
O
$ createdb ventas
$ psql ventas
Sin embargo, en un ambiente de produccion siempre necesitaremos comprimir el backup de la base de datos:
$ pg_dump ventas | gzip -c > ventas.dump.out.gz
Para restaurar la base de datos usamos el siguiente comando:
$ gunzip ventas.dump.out.gz
$ psql -d ventas -f ventas.dump.out
Paso# 3: Automatizar el proceso
A continuación veremos un script en bash para realizar dicha tarea automaticamente, y luego los comandos necesarios para ponerlo en el gestor de tareas cron del linux.
Creamos el archivo backup.sh
$ nano backup.sh
Y alli escribimos el codigo siguiente:
#!/bin/bash
DIR=/backup/psql
F=$(date +%Y-%m-%0e)
export PGUSER=postgres
export PGPASSWORD=tupassword
[ ! $DIR ] && mkdir -p $DIR || :
LIST=$(psql -l | awk '{ print $1}' | grep -vE '^-|^Listado|^Nombre|template[0|1]')
#LIST="ventas produccion almacen"
for d in $LIST
do
pg_dump $d | gzip -c > $DIR/$d$F.out.gz
done
unset PGUSER
unset PGPASSWORD
Salimos guardando con Ctrl-X.
Yo reemplazo la variable LIST con los nombres de mis bases que quiero sacar backup, el comando que saca los nombres de las bases de datos en el script no me funciona del todo bien, pero la idea es esa :o).
Luego damos permisos de ejecucion al archivo backup.sh
$ chmod 755 backup.sh
Ingresamos la tarea en el cron.
$crontab -e
Configuro para que todos los dias a la 1am se realice el backup, por lo que escribo (para editar deben usar comandos de vi)
00 01 * * * /var/lib/pgsql/backup.sh
Paso #4:Backup completo de todo el gestor de base de datos.
Otra opcion es usar el comando pg_dumpall. como su nombre lo dice genera un backup de TODA la base de datos, guardando los datos de todo el gestor como usuarios, grupos y privilegios. Se puede usar el comando de la sig. forma:
$ pg_dumpall > all.dbs.out
O
$ pg_dumpall | gzip -c > todo.dbs.out.gz
Para restaurar el backup usamos el siguiente comando:
$ psql -f todo.dbs.out postgres
Suscribirse a:
Enviar comentarios (Atom)
Este comentario ha sido eliminado por el autor.
ResponderEliminarOla.
ResponderEliminarMe ha gusado tu mucho lo que escribiste. Pero no se en donde escribo el pg_dump
Podrias ayudarme a hacer paso a paso el backup.
Por favor. Lo necesito. Gracias.
Soy estudiante
Anonimo..... la información del autor está más clara que el Agua.
ResponderEliminarSaludos al Autor, muy buena info.
Hola. como podría restaurar una base de datos postgres desde Visua Foxpro 9
ResponderEliminarGracias....
Hola ya probe tu codigo y funciona sin embargo me gustaria saber si de casualidad tienes un ejemplo que se ejeute desde un servidor por ejemplo jsp
ResponderEliminarMuchas gracias
Att:
caroljohanar@gmail.com
Salu2
Me sirvió mucho, no del todo pero muy bien explicado,..
ResponderEliminarHola quisiera saber como puedo respaldar una base de datos en postgres pero programada en Netbeans .
ResponderEliminarPorfavor necesito ayuda ya que es un trabajo de la Universiad