PostgreSQL: Automatización de Backups

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.

6 thoughts on “PostgreSQL: Automatización de Backups

    1. 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.

Deja un comentario