Postgresql – sauvegarder vos bases de données (Linux)

juillet 9, 2014 12:47 Publié par Laissez vos commentaires

Sauvegarde basique

Pour sauvegarder l’intégralité de vos bases de données Postgresql sous Linux, vous pouvez utiliser la commande pg_dump 1

Placez vous dans le dossier de sauvegarder puis exécutez l’instruction :

postgres@DW:/DB/imports$ pg_dumpall > backup.sql

Pour restaurer cette sauvegarde

pg_dumpall < datawarehouse.sql

Sauvegarde avec rotation hebdomadaire

Nous allons à présent créer un script permettant une rotation des sauvegardes sur 7 jours. Les backup seront stockés dans le dossier /DB/backup
Nous allons ensuite créer le script permettant de sauvegarder toutes les bases dans des dossiers correspondant au jours de la semaine.

nano /DB/backup/pg_backup.sh

#!/bin/bash
backupdir='/DB/backup';
day=`date +%u`;
mkdir -p $backupdir/$day;

echo "PostgreSQL Backup for $HOSTNAME";
echo "================================="
echo `date`;
for database in `/usr/bin/psql -U postgres -lt | awk 'print $1' | grep -vE '\||^$|template0'`;
    do
    printf "Exporting $database...";
    /usr/bin/pg_dump -U postgres -c $database | gzip -c > $backupdir/$day/$database.sql.gz;
    /bin/chmod 600 $backupdir/$day/$database.sql.gz;
    printf "done\n";
done
echo `date`;
echo;
exit 0;

Rendons possible l’exécution de ce script:

chmod +x pg_backup.sh

Testons avec l'utilisateur postgres :

su postgres
./pg_backup.sh
PostgreSQL Backup for EG-DW
=================================
mercredi 9 juillet 2014, 15:00:06 (UTC+0200)
Exporting basetest...done
Exporting postgres...done
Exporting template1...done
mercredi 9 juillet 2014, 15:00:07 (UTC+0200)

Les bases sont sauvegardées dans le dossier "3" correspondant au Mercredi (dossier /DB/backup/3).
Il faut alors paramétrer une tache planifiée afin d'automatiser l'exécution de ce script quotidiennement :

crontab-e

ajouter la ligne suivante à la fin du fichier

00 01 * * * /DB/backup/pg_backup.sh

Le script se lancera tous les jours à 1 heure.
Plus de précisions sur l'utilisation du crontab dans le tuto suivant :

Linux - Utilisation des taches planifiées avec crontab

Notes:

  1. Cette commande n’est pas une requête, ne pas l’executer sous psql.

Classés dans :

Cet article a été écrit par admin

Laisser un commentaire