Postgresql – sauvegarder vos bases de données (Linux)
juillet 9, 2014 12:47 Laissez vos commentairesSauvegarde 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:
- Cette commande n’est pas une requête, ne pas l’executer sous psql. ↩
Classés dans :Postgresql
Cet article a été écrit par admin