PostgreSQL | sauvegardes automatisées

Automatiser et gérer les sauvegardes de PostgreSQL

Problématique

Lorsqu'on possède une base PostgreSQL installée sur une machine, il peut être utile (et recommandé) d'effectuer des sauvegardes régulièrement.

PostgreSQL fournit un ensemble d'outils pour effectuer ces opérations. Cependant, il s'agit d'outils bruts. Il manque quelques opérations de gestion et d'organisation des sauvegardes.

Solution

Rien ne vaut un petit script UNIX afin de parfaire, de faciliter et d'automatiser les sauvegardes, grâce aux outils vacuumdb, pg_dump et psql.

Le script est téléchargeable ici.

Configuration

Ouvrir lescipt et définir le serveur et l'utilisateur (variables SERVER_IP et USER) et éventuellement le répertoire de sauvegarde (BACKUP_DIR).

Vérifier les chemin des binaires psql, pg_dump et vacuumdb.

Puis enregistrer et vérifier que le script soit bien exécutable.

Usage

On peut utiliser 3 options :

  • -a : sauvegarde de toutes les bases de données

  • -d + base de données : sauvegarde d'une base de données spécifique

  • -r + durée : durée de rétention (en jours)

    Sans cette option, la durée de rétention est fixée à 30 jours.

Exemples

Sauvegarde de toutes les bases avec une durée de rétention de 45 jours :

pgsql_dump.sh -r 45 -a

Sauvegarde de la base mabase avec une durée de rétention de 25 jours :

pgsql_dump.sh -r 25 -d mabase

Sauvegarde de la base mabase avec une durée de rétention de 25 jours et de la base tabase avec une durée de rétention de 35 jours :

pgsql_dump.sh -r 25 -d mabase pgsql_dump.sh -r 35 -d tabase

Automatisation

Il ne reste plus qu'à l'exécuter régulièrement avec cron.