Este es el Post #16 del Topic: Guía Práctica de PostgreSQL
SUGERENCIA:
Si has utilizado la base de datos dbadmision en ejercicios previos es mejor volver a crearla.Descargar Script: DBAdmision.sql
El proceso de creación de backups en postgres se realiza por medio de pg_dump, y la automatización para su ejecución se puede lograr por medio de herramientas como las que se incluye en PGADMIN haciendo uso de los jobs, steps y schedules o mediante el sistema operativo, como veremos en este ejemplo.
1- CREACIÓN DE SCRIPT
Script para Linux: pg_backup.sh
#!/bin/bash
#————-Por: Beastieux—————- PG_BIN=’/opt/PostgresPlus/8.4SS/bin/pg_dump’ PG_HOST=’localhost’ PG_PORT=’5432′ PG_DATABASE=’dbadmision’ PG_USER=’postgres’ export PGPASSWORD=’postgres’ PG_PATH=’/var/PGBACKUP’ FECHAYHORA=$(date +»%d-%m-%Y-%H-%M-%S») PG_FILENAME=»${PG_PATH}/${PG_DATABASE}-${FECHAYHORA}.backup» ${PG_BIN} -i -h ${PG_HOST} -p ${PG_PORT} -U ${PG_USER} -F c -b -v -f ${PG_FILENAME} ${PG_DATABASE}
Estableciendo Permisos para ejecutar el Script:
# chmod +x pg_backup.sh
Cambiando de propietario del script y directorios donde se guardarán los backups, el propietario debe ser el usuario postgres.
# chown postgres:postgres pg_backup.sh --Script # chown -R postgres:postgres /var/PGBACKUP' --Directorio de Backups
Script para Windows: pg_backup.bat
@echo off ::————-Por: Beastieux—————- SET PG_BIN=C:PostgresPlus8.3R2ASpostgresstudiopg_dump.exe SET PG_HOST=localhost SET PG_PORT=5432 SET PG_DATABASE=dbadmision SET PG_USER=postgres SET PGPASSWORD=postgres SET PG_PATH=C:PGBACKUP SET FECHAYHORA=%date:/=-%-%time:~0,8% SET FECHAYHORA=%FECHAYHORA::=-% SET FECHAYHORA=%FECHAYHORA: =0% SET PG_FILENAME=%PG_PATH%%PG_DATABASE%-%FECHAYHORA%.backup %PG_BIN% -i -h %PG_HOST% -p %PG_PORT% -U %PG_USER% -F c -b -v -f %PG_FILENAME% %PG_DATABASE%
*Se debe establecer permisos de ejecución del script y derechos del usuario postgres sobre los directorios donde se almacenarán los backups y sobre el script.
2- AUTOMATIZACIÓN:
Automatización en linux: Por medio de crones.
# crontab -e
0 0 * 12 * /home/usuario/pg_backup.sh
<<Guardar>> CTRL + O
<<Salir>> CRTL + X
Este script ejecuta pg_backup.sh del siguiente modo:
0: Minutos (00)
0: Horas (00)
*:Dias del mes (todos)
12 Mes (Diciembre)
- Dias de la semana (L,M,M,J,V,S,D)
Por lo tanto se ejecutará todos los dias de la semana durante el mes de Diciembre a las 00hh:00mm (Media Noche).
Automatización en Windows: Con taskschd – CONTROL SCHEDTASK o AT
SOBRE LAS VARIABLES DEL SCRIPT:
PG_BIN=Ubicacion de pg_dump, es el binario que realizará los backups
PG_HOST=dirección del host
PG_PORT=puerto del servidor
PG_DATABASE=nombre de la base de datos
PG_USER=nombre del usuario
PGPASSWORD=Contraseña del servidor: Es una variable especial registrado en el sistema , el nombre de esta variable debe permanecer inmutable en el sistema operativo.
buen dia. Tenes idea como hacer que se almacenen backups por x cantidad de dias y que luego se vayan pisando??
Buenas, ¿Como puedo controlar el código de salida? ,.. para saber si es 0 o 1 y controlar si se ha hecho bien el backup.
Saludos
esto funciona para linux? porque me da este error
/bin/bash^M: bad interpreter: No such file or directory
Si, debería funcionar perfectamente en linux si has ingresado los datos correctos para tu servidor.
revisa el script, he notado que al publicarlo en el blog se han desconfigurado las comillas
intenta corrigiendo las comillas, reemplaza ’ por ‘, y ” por «.
Saludos.