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.  

  