Automatizar backups de PostgreSql

Ya vimos cómo hacer un backup en PostgreSql. Ahora, para ahorrarnos tiempo y tener algo más de tranquilidad, vamos a ver cómo automatizar ese proceso.

Si por casualidad el primer pensamiento es poner las instrucciones para pg_dump en un script, lamento desilusionar. Tendríamos un pequeño problema, y es que el comando se quedará frenado pidiéndonos la contraseña del usuario que quiere hacer el backup.

Como siempre, tenemos una salida.

Nuestro nuevo mejor amigo en este caso será pgpass.

Pgpass es una variable de entorno.

Este archivo no se crea por defecto, y varía levemente el procedimiento si lo usamos en Linux o en Windows. En ambos casos, el archivo contendrá la misma información:

host:puerto:basededatos:usuario:contraseña

Windows

Para usarlo, debemos crear la carpeta postgresql dentro de c:\documents and settings\(usuario que correrá la tarea)\datos de programa.

Dentro de esa nueva carpeta, pondremos el archivo pgpass.conf.

Ahora si, dentro del archivo, podríamos tener los siguientes parámetros:

192.168.0.1:5432:mibase:miusuario:micontraseña

Linux

En mi ejemplo, el encargado de realizar el backup será nuestro querido root.

Para que funcione, siempre y cuando tengamos los privilegios, vamos dentro de la carpeta /root y creamos el archivo .pgpass.

Una forma rapida, y presuponiendo que estamos logueados como root, sería la siguiente.

echo "192.168.0.1:5432:mibase:miusuario:micontraseña" >> ~/.pgpass

Si todo salió bien, ya tenemos creado el archivo.

¿Y ahora?.

Bueno, ya tenemos resuelto el detalle de la contraseña. Ahora, simplemente, creamos un archivo que será el que vamos a programar para que se ejecute automáticamente y nos realice el backup.

Dentro de nuestro script pondremos el comando:

pg_dump -i -h 192.168.0.1 -p 5432 -U miusuario -F c -b -v -f "/home/damian/backups/mibase.backup" mibase

Ahora cuando el script necesite la contraseña para conectarse, la tomará del Pgpass… y asunto resuelto.