lunes, 16 de mayo de 2011

como hacer Backup Automatico en Postgres

Una de las necesidades al trabajar con una base de datos postgres, es como ejecutar de forma automática las copias de seguridad de la base de datos. a Continuación indico unos pasos que pueden seguir para lograr este objetivo.

1. Crear un archivo .Bat en el cual se escribirán las sentencias que nos ayudarán a generar nuestra copia automatica. Las sentencias para esto a continuación las describo.

@echo off
color 30
rem
rem Ejemplo de manejo de la fecha y hora actual - v2008-03-15
rem
rem Juego de caracteres ISO-8859-1 (Latin 1)
chcp 28591 > NUL


setlocal


set FECHA_ACTUAL=%DATE%
set HORA_ACTUAL=%TIME%


set ANO=%FECHA_ACTUAL:~6,4%
set MES=%FECHA_ACTUAL:~3,2%
set DIA=%FECHA_ACTUAL:~0,2%


set HORA=%HORA_ACTUAL:~0,2%
set MINUTOS=%HORA_ACTUAL:~3,2%
set SEGUNDOS=%HORA_ACTUAL:~6,2%
set CENTESIMAS=%HORA_ACTUAL:~9,2%


rem Si la hora tiene un sólo dígito, reemplazamos el espacio inicial por cero
set HORA=%HORA: =%
if %HORA% LSS 10 set HORA=0%HORA%


rem echo Fecha: %FECHA_ACTUAL%
rem echo Hora: %HORA_ACTUAL%


echo.
rem echo Día: %DIA%
rem echo Mes: %MES%
rem echo Año: %ANO%
echo.
rem echo Hora: %HORA%
rem echo Minutos: %MINUTOS%
rem echo Segundos: %SEGUNDOS%
rem echo Centésimas: %CENTESIMAS%
echo.


set ARCHIVO=C:\CarpetaCopias\NOMBRE_BD%ANO%%MES%%DIA%%HORA%%MINUTOS%%SEGUNDOS%.backup
pg_dump.exe --host 127.0.0.1 --port 5432 --username postgres --format custom --blobs --verbose --file "%ARCHIVO%" "NOMBRE_BD"


endlocal
echo.

-------------------------
DONDE


NOMBRE_BD: Es el nombre de la base de datos a la cual se le esta haciendo la copia de seguridad. y en este caso lo estamos utilizando para nombrar el archivo de la copia.
C:\CarpetaCopias: Esta corresponde a la ruta donde guardaremos nuestra copia de seguridad.
host 127.0.0.1: Corresponde a la dirección IP donde esta nuestra base de datos, se debe modificar esta información y a su ves, usuario y contraseña según sea el caso.




2. Este archivo .Bat debe ser guardado en la ruta:
C:\Archivos de programa\PostgreSQL\8.4\bin
Esta ruta contiene los programas que se ejecutan para efectuar tareas automaticas en la base de datos, ejemplo pg_dump.exe es una de ellas.

3. Crear una tarea Programada en windows, que ejecute este archivo .bat y definir en este el tiempo de ejecución, la frecuencia, etc.

Listo, Espero les sirva.