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.