Skip to main content

Restaurer une BDD

Restaurer une sauvegarde

Nous allons créer un script de restauration afin d'éviter de répéter les commandes.

Dans le même dossier que pour le script de sauvegarde nous allons créer un script restore-database avec en paramètre le nom du fichier de sauvegarde a utiliser.

Création du script
sudo nano restore-database
Contenu du script
#!/bin/bash

# # # # # # # # # # # # # # # # #
# RESTORE DATABASE by gpatruno  #
# # # # # # # # # # # # # # # # #

# Récupération de l'emplacement du fichier de sauvegarde
read -p "Emplacement du fichier de sauvegarde : " BACKUPDIR
# Récupération du nom du fichier de sauvegarde
read -p "Nom du fichier de sauvegarde : " FILENAME

# définition des variables
SCRIPTNAME="${FILENAME/.gz/""}";
DB_USER=postgres
DB_NAME=dbname
DB_PASSWORD=dbpassword

# RESTORE
echo `date +%d-%m-%y`" "`date +%T`;

# Dézip de la sauvegarde
echo "Unzip $BACKUPDIR/$FILENAME";
gunzip -c $BACKUPDIR/$FILENAME > $SCRIPTNAME

# Déconnecter tous les utilisateurs
echo "Disconnect all users from the db";
/usr/bin/psql postgresql://${DB_USER}:${DB_PASSWORD}@localhost/${DB_NAME} -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '$DB_NAME' AND pid <> pg_backend_pid();"

# Supprimer l'ancienne database si elle existe
echo "DROP DATABASE $DATABASE";
/usr/bin/psql postgresql://${DB_USER}:${DB_PASSWORD}@localhost -c "DROP DATABASE \"$DB_NAME\";"

# Créer la nouvelle Base de données
echo "CREATE DATABASE $DB_NAME";
/usr/bin/psql postgresql://${DB_USER}:${DB_PASSWORD}@localhost -c "CREATE DATABASE \"$DB_NAME\";"

# Restauration de la nouvelle BDD
echo "RESTORE DATABASE $SCRIPTNAME";
/usr/bin/psql postgresql://${DB_USER}:${DB_PASSWORD}@localhost/${DB_NAME} -f $SCRIPTNAME

echo `date +%d-%m-%y`" "`date +%T`;
Donner le droit d'exécution
sudo chmod +x restore-database

Puis exécuter le script et remplir les paramètres demandé au fur-à-mesures de l'avancement.