Skip to content
juil 4 / David Regnier

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.
Laisser un commentaire


4 − 2 =