/sys/admin

Blog de/para sysadmins, devops y fans de GNU/Linux

Feb 17 15 16:06
Hacer Un Pg_dump Aprovechando Los Cores De La Máquina

Comments

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