Cómo programar un backup de una base de datos PostgreSQL en un servidor en Windows 10

En este artículo vamos a programar paso a paso, un backup lógico de todo el cluster de PostgreSQL, instalado en un Windows 10.
Nuestro backup se ejecutará todos los días a la misma hora y se mantendrán los backups de la última semana.

Paso 1. Configurar pgpass.conf

En el símbolo del sistema averiguamos la ruta APPDATA ejecutando lo siguiente:

echo %APPDATA%

Con el navegador de archivos nos desplazamos hacia esa ruta y comprobamos si existe una carpeta llamada postgresql.

Si no existe la creamos.

Dentro de la carpeta postgresql editamos el fichero pgpass.conf si existe, y si no, lo creamos.

Dentro del fichero pgpass.conf comprobamos que existe esta línea, o la añadimos:

localhost:5432:*:postgres:password

Lo que estamos haciendo es configurar el acceso a todas las bases de datos del servidor PostgreSQL corriendo en el puerto 5432 de nuestro Windows 10, con el usuario y contraseña indicado que debe de ser un superusuario.

Paso 2. Programar el script de backup

Vamos a crear una carpeta que contendrá nuestro script y todos los backups, en la ruta deseada como por ejemplo:

C:\bck\backup

Creamos ahora un fichero llamado dumpall_diario.bat, con el siguiente contenido:

@echo off
SET PG_BIN=”C:\Program Files\PostgreSQL\9.6\bin\pg_dumpall.exe”
SET PG_HOST=localhost
SET PG_PORT=5432
SET PG_DATABASE=postgres
SET PG_USER=postgres
SET PG_PASSWORD=password
SET PG_PATH=C:\bck\backup
SET FECHAHORA=%date:/=-%
SET PG_FILENAME=%PG_PATH%\%PG_DATABASE%-%FECHAHORA%.sql
%PG_BIN% –host=%PG_HOST% –port=%PG_PORT% –username=%PG_USER% –database=%PG_DATABASE% –file=%PG_FILENAME%

Ten en cuenta que en la variable PG_BIN cargamos la ruta completa hasta el ejecutable pg_dumpall y es muy probable que tengas que adaptarla a tu caso.

Según la definición de las variables FECHAHORA y PG_DATABASE, el nombre de nuestro fichero de backup será postgres-DD-MM-YYYY.sql.

Ya lo puedes ejecutar manualmente para comprobar que funciona correctamente.

Paso 3. Programar el script de borrado de backups obsoletos.

Vamos a programar ahora el script borra_dumpall.bat en el mismo directorio C:\bck\backup, con el siguiente contenido:

@echo off
forfiles /P c:\bck\backup /M *.sql /D -7 /C “cmd /c del /q @path”

Forfiles permite realizar acciones sobre un grupo de ficheros.

Con la opción /P le estamos diciendo la ruta donde se ubican los ficheros.
/M le indica la máscara, en nuestro caso los ficheros que nos interesan son los que tienen extensión .sql
/D -7, le indica que tome aquellos con más de 7 días de antigüedad.
/C le indica el comando a ejecutar con esos ficheros seleccionados, en nuestro caso, el comando del.

Paso 4. Crear las tareas programadas para el backup y el borrado.

Abrimos el Programador de Tareas de Windows ejecutando, en la línea de comandos, lo siguiente:

taskschd.msc

En Acciones pulsamos sobre la opción Crear tarea.

En la  pestaña Desencadenadores hacemos clic sobre Nuevo.

En la pestaña Acciones hacemos clic sobre Nueva.

Por último hacemos clic en Aceptar y repetimos los pasos para el script de borrado.

Si quieres profundizar en las distintas técnicas y herramientas te recomiendo mi curso Administración PostgreSQL: Técnicas de Backup y Recuperación.

Es un curso online de 10 horas de video que capacita para el diseño e implementación de políticas de backup en bases de datos PostgreSQL.

En total son 5 clases teóricas, 28 clases prácticas y 21 talleres avanzados donde se simulan escenarios reales de recuperación ante desastres que sin duda te convertirán en un experto en la materia.

Tendrás acceso de por vida al curso así como a las actualizaciones o ampliaciones que vaya incorporando posteriormente.