Script de sauvegarde PostgreSQL avec rotation des fichiers
Comment sauvegarder vos bases de données PostgreSQL et gérer la rotation des fichiers sous Linux
Prérequis:
- PostgreSQL 8.+
 - Serveur CentOS release 5.5 (Final)
 
Détail du processus:
- Pour chaque base de données
- Le script estime si la base de données a besoin d’un « vacuum » ou « vacuum full analyze »
- Exécute un « dump » sur la base et l’archive à la volée
- Le script estime si la base de données a besoin d’être réindexée
- Quand toutes les bases de données ont été traitées
- Le programme supprime les fichiers plus vieux que 30 jours
#!/bin/bash
case $DEBUG in
  1) set -x
     ;;
  *)
     ;;
esac
DUMPDIR=/data/pgsql/backups
mkdir -p $DUMPDIR
for dbname in `/usr/bin/psql -l | grep postgres | cut -d'|' -f1`
do
	if [ "`date +%d`" = "17" ]
	then
		echo "`date` : vacuum full analyze"
		/usr/bin/psql $dbname -c "vacuum full analyze;"
	else
		echo "`date` : vacuum"
        /usr/bin/psql $dbname -c "vacuum;"
	fi	
	date=`date '+%Y-%m-%d'`
	srcdb=$dbname@localhost
	dump=${DUMPDIR}/dump_${srcdb}_$date.sql.gz
	/usr/bin/pg_dump -U postgres -d -i -C -D $dbname | gzip > $dump
done
if [ "`date +%u`" = "7" ]
then
	/usr/bin/reindexdb -a
fi
find ${DUMPDIR}/ -name 'dump_*.sql.gz' -mtime +30 -exec rm -f {} \; -print
Vous devez adapter le script en fonction de vos répertoires:
Voir la variable « DUMPDIR » ainsi que les chemins de psql, reindexdb et pg_dump.
La dernière commande va supprimer les fichiers plus vieux que 30 jours.
Voir la variable « DUMPDIR » ainsi que les chemins de psql, reindexdb et pg_dump.
La dernière commande va supprimer les fichiers plus vieux que 30 jours.

