viernes, 12 de junio de 2009
Backup Simple en PostgreSQL usando pg_dump
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
martes, 19 de mayo de 2009
Trabajando con Netbeans 6.5.1 y Visual Web JSF - Parte 1
El ejemplo es un pequeño sistema de Bibliotecas en el cual se tiene mantenimiento de Libros, Autores y Usuarios, y se pueden realizar los prestamos de libros y algunas consultas basicas. Espero en el transcurso de cada semana o antes ir subiendo cada parte de esta guía.
PARTE I. CREANDO EL PROYECTO Y LA INTERFAZ
1. Crear el proyecto

Usamos las opciones segun las figuras:Tipo de Proyecto: Java Web -> Web application

Llamaremos al proyecto "VWBiblio":
Seleccionamos el Servidor de Aplicaciones: yo uso tomcat por lo comercial que es, por ejemplo hay muy pocos host que te den un servidor Glassfish, hay mas documentación y ayuda sobre tomcat; asi que por eso prefiero usarlo.
Seleccionamos el framework: VisualWeb JavaServer Faces
Le damos en "Finish" y ya tenemos creado nuestro proyecto.2. Creando la Pagina Principal (Menu y fragments)
La pagina por default se llama Page1.jsp, la renombramos(Ctrl+R) a FrmPrincipal (me gusta usar esa nomenclatura :o) ) y presionamos "Refactor"

Agrego una pagina del tipo Fragment para el menu y la llamare "FrmMenu",


Ajusto el ancho y largo del fragment (widht= ,height= )

Luego agrego un control del tipo "Tree", al colocarlo me pide editar el titulo y le pongo "MENU".

Agrego TreeNodes haciendo click derecho sobre el nodo padre y click en "Add Tree Node" hasta tener un menu como el de la figura.

Agrego otra pagina de tipo Fragment para la barra de Titulo y le pongo de nombre "Frmtitulo"
Luego configuro el ancho=800px y alto=75px.Agrego un control de tipo Label y cambio el texto a "Sistema de Bibliotecas"

Cambio el tamaño de la fuente del Label a 24px, eso lo hago modificando la propiedad "Style" del Label.

Cerramos guardando FrmMenu y FrmTitulo.
Ahora vamos a la pagina FrmPrincipal que sera la que contenga los fragments que hemos creado.
Agregamos un control del tipo "Page Fragment Box", aparece una venta donde se puede seleccionar el fragmento a agregar, automaticamente se seleccionara el fragment "FrmMenu.jspf" que es el Menu que creamos anteriormente, asi que solo hacemos click en el boton "Close"

Agregamos otro "Page Fragment Box" y en la ventana de seleccion escogemos "FrmTitulo.jspf", luego le damos en "Close" con lo cual tenemos los dos fragment en nuestra pagina principal. Los ubicamos usando el mouse de tal forma que nos quede como la figura siguiente.

3. Agregando las demas paginas y la navegacion del Menu.
Como ya tenemos nuestra pagina principal con titulo y Menu, ahora agregaremos las demas paginas de nuestro proyecto y la enlazaremos al Menu de navegacion que hemos creado.
Click derecho en "Web Pages" del proyecto y New -> "VisualWeb JSF Page".

Le cambio del nombre a FrmLibros y le doy click en el boton "Finish".
Del mismo modo agregamos las paginas FrmUsuarios, FrmPrestamo, FrmDeudores y FrmLibrosDisponibles.
Por lo que nuestra carpeta "WebPages" quedara como la figura siguiente:

Ahora abrimos la pagina "FrmLibros" y agregamos los fragments FrmMenu y FrmTitulo al igual que hicimos en la pagina principal "FrmPrincipal".
Tambien agregamos un control de tipo Label y le ponemos como texto "MANTENIMIENTO DE LIBROS". Con ello nos debera quedar una pagina como se muestra en la figura:
Ahora para añadirle la navegacion al menu: regresamos a la pagina de tipo Fragment "FrmMenu", alli seleccionamos el nodo Libros de nuestro Menu,
Luego vamos a la propiedad "url" y la cambiamos usando el boton del lado derecho "...", al aparecer la ventana seleccionamos la pagina "FrmLibros" y hacemoc click en el boton "Ok".

Debemos hacer lo mismo para las otros nodos del Menu y cambiar su propiedad "url" segun la pagina que corresponda.
Con ello si ejecutamos nuestra aplicacion (presionando F6) tendremos ya nuestro aplicativo web con un menu con el que podemos navegar entre las diferentes opciones.
Esto todo por ahora, la siguiente parte sera hacer el primer mantenimiento, para lo que usaremos PostgreSQL enlazado a nuestro proyecto VisualWeb JSF. Bye
lunes, 27 de abril de 2009
Administrando PostgreSQL
1. psql (http://psql.sourceforge.net). Esta herramienta en modo texto o consola se instala predeterminadamente cuando instalamos el servidor PostgreSQL, es básicamente un programa interactivo para ejecutar comandos SQL en nuestro servidor, aunque no tiene un interfaz gráfico amigable es una poderosa herramienta par administrar de forma interactiva nuestro servidor de base de datos.
2. pgAdmin III (http://www.pgadmin.org/ ) El administrador gráfico por defecto para PostgreSQL, es bueno y nos permite hacer muchas de las tareas de administración y consulta a nuestra base de datos de forma gráfica, es totalmente gratuita y se instala siempre que instalamos PostgreSQL en un entorno Windows. Algunas cosas que no tiene y con lo que seria en si una poderosa herramienta son: un diseñador de consultas al estilo E/R, un depurador de funciones , aunque en este punto encontré que si es posible hacerlo pero hay que recompilar el servidor y la herramienta con algunos parches para que se pueda realizar dicha función, mas información al respecto en http://www.pgadmin.org/docs/1.8/debugger.html. También sería fenomenal si se pudiera exportar a otros formatos como html, xml, xls, etc. ya que solo soporta exportación de los datos consultados a CSV (texto separado por comas).
3. pg_dump. La herramienta predeterminada para hacer copias de seguridad de nuestras bases de datos en PostreSQL, lo malo ( si se le puede llamar asi) es que es en modo texto o consola y es totalmente interactiva, no pudiéndose programar tareas, pero usándolo en combinación con algún otro programa adicional como cron en unix/linux/freebsd se puede hacer muchas cosas interesantes. Pero en definitiva es imprescindible para cualquier administrador de base de datos PostgreSQL.
4. pg_top (http://ptop.projects.postgresql.org/). Interesante programa para poder monitorear el estado de las conexiones, que esta haciendo cada una y algunas cosas mas de nuestro servidor PostgreSQL en ambientes linux. Podríamos compararlo en funcionalidad con el SQLProfiler de MSSQL. Esta herramienta esta hecha al estilo de la interfaz del comando top de Linux. PgAdminIII puede también darnos este tipo de información pero solo si tenemos instalado PGAdmin en el mismo equipo que el servidor. Pero en definitiva la considero también como una herramienta imprescindible para un DBA de PostgreSQL que se respete :o) .
5, SQL Manager for PostgreSQL (http://sqlmanager.net/en/products/postgresql/manager). Poderosa herramienta de administración, consulta y manipulación de datos para PostgreSQL. Permite consultar, modificar, eliminar datos, administrar usuarios y permisos, depurar funciones, exportar a muchos formatos, diseñador de consultas, etc, etc, etc. Todo con excelentes interfaces y asistentes gráficos que hacen que la tarea de administración del servidor sea realmente un trabajo mucho mas sencillo. Yo he probado algunos otros mas y siempre llego a la conclusión de que esta herramienta es la mejor. Lo malo, es que es de pago, pero aun así podemos usarla con dos opciones una es un demo por 30 días con todas las opciones y la otra es una versión “Lite” libre de pago pero con limitaciones en algunas funcionalidades. Aun así si se tiene la posibilidad de comprarla sera una excelente compra.
6, Arinet Automatic Postgresql BackupScript (http://autopgsqlbakup.sourceforge.net/) Mas que un programa es un script basado en pg_dump para poder realizar las tareas de backup de nuestra base de datos de una forma mucho mas sencilla y con mejores opciones. Se debe trabajar también con cron en Unix/Linux/FreeBSD ya que el script esta hecho en bash. Pero para mi caso particular me ha servido bastante en el momento de administrar el backup de mi información. En el sig. link hay un pequeño manual de como ponerlo a trabajar en Linux: http://linux2.arinet.org/index.php?option=com_content&task=view&id=125&Itemid=35
Bueno es todo por ahora, si se de alguna otra herramienta por ahí se los haré saber en un próximo post. Bye

