Le principe de sauvegarde est de générer un dump SQL qui permettra de recréer votre base de données à l’identique à celle sauvegardée sur un serveur.
PostgreSQL™ propose pour cela le programme utilitaire pg_dump(1) que nous allons détailler.
pg_dump
L’usage basique de pgdump est le suivant :
pg_dump base_de_donnees > fichier_de_sortie
Sauvegarde hebdomadaire postgresql
Nous allons créer un script permettant faire la sauvegarde de votre base ainsi que la rotation des sauvegardes sur 10 jours.
Les backup seront stockés dans le dossier /backup/database/postgresql/
#Création du répertoire dédié aux sauvegardes de la base de données en donnant les droits à postgres : mkdir -p /backup/database/postgresql/ chown -R postgres:postgres /backup/database/postgresql/
On génère ensuite une sauvegarde de la base de données avec l’utilisateur jaliosuser :
pg_dump -F c -b -v -f "/backup/database/postgresql/NOM_DE_LA_DB-$(date +"%Y-%m-%d-%H-%M-%S").dump" NOM_DE_LA_DB
Sauvegarde quotidienne postgresql
Nous allons créer un script permettant faire la sauvegarde de votre base données quotidiennement.
On édite le fichier /etc/cron.daily/postgresql-Nom_BDD_db-backup dans le quel on ajoute les éléments suivants :
vim /etc/cron.daily/postgresql-Nom_BDD_db-backup #!/bin/bash # Backup quotidien su -c "pg_dump -F c -b -v -f /backup/database/postgresql/NOM_DE_LA_DB-$(date +"%Y-%m-%d-%H-%M-%S").dump NOM_DE_LA_DB" postgres # Suppression des backups de plus de 10 jours su -c "find /backup/database/postgresql/ -type f -mtime +10 -delete" postgres
Ensuite, on modifie les droits d’accès au fichier :
chmod +x /etc/cron.daily/postgresql-Nom_BDD_db-backup
NB: Vos modifications et mise en place de sauvegarde sont automatiquement prises en compte.