martes, 17 de febrero de 2015

Hacer un pg_dump aprovechando los cores de la máquina

Desde la versión 9.3, postgreSQL permite hacer dumps de la base de datos en forma paralela, aprovechando así el número de cores de la máquina.

En una forma rápida, podemos lanzar este proceso:

pg_dump -h $MAQUINA -U $USER -d $DATABASE -Fd -j `nproc` -f $DESTINO

Las variables son autorreferentes, con lo que la gracia de este comando se encuentra en la opción -Fd (obligatoria para que use diferentes cores), que realiza el dump en un directorio en lugar de un archivo; y la opción -j, que refiere al número de procesos que se lanzan simultáneamente. En este caso, hacemos uso de lo que devuelve nproc para levantar tantos procesos como núcleos.

Un pequeño script de backup de base de datos local (perfecto para meter en un cronjob del usuario postgres) sería:
#!/bin/bash
## This script will create a backup for each database listed in the DATABASES variable
## Use as postgres user or add the -U [username] to the pg_dump line

DATABASES="template1 db other_db"

CORES=`nproc`
TARGET_FOLDER=/var/backups

for DATABASE in $DATABASES; do
    mkdir -p $TARGET_FOLDER/$DATABASE
    pg_dump -d $DATABASE -Fd -j $CORES -f $TARGET_FOLDER/$DATABASE
done
Share to Facebook Share to Twitter Email This Share on Google Plus Share on LinkedIn

No hay comentarios:

Publicar un comentario