Testé sur debian Jessie et PostgreSQL 9.4
Le moyen le plus sûr pour sauvegarder une base de donnée est d’effectuer régulièrement des dumps avec la commande pg_dump.
Néanmoins, il est possible d’accéder aux données d’une base à partir des fichiers contenus dans le dossier /var/lib/postgres/9.4/main
Restaurer une base de donnée depuis les fichiers
Prérequis :
– Avoir une copie du dossier /var/lib/postgres/9.4/main
Dans l’idéal, démarrer un OS identique à la version hôte de la base à restaurer. Cela dit, cela à bien fonctionner pour restaurer des données de PostgreSQL initialement installé sur debian 8 Jessie sur une debian 9 Stretch.
# Installer postgresql-9.4 et les dependances de votre base de données.
su
apt-get install postgresql-9.4
apt-get install postgis
apt-get install postgresql-9.4-postgis-2.3
# Stopper PostgreSQL
service postgresql stop
Modifier le fichier de configuration pour pointer vers votre sauvegarde : dupliquer la ligne data_directory, commenter la version originale et modifier le chemin vers votre dossier à restaurer.
nano /etc/postgresql/9.4/main/postgresql.conf
Vous obtenez
# data_directory = '/var/lib/postgresql/9.4/main' # use data in another directory
data_directory = '/media/backups/var/lib/postgresql/9.4/main'
Changer le propriétaire et les droits de votre dossier à restaurer et lancer PostegreSQL
chown postgres /media/backups/var/lib/postgresql/9.4/main
chmod 700 /media/backups/var/lib/postgresql/9.4/main
service postgresql start
Connectez-vous en tant qu’utilisation
postgres
et lister les bases de données accessibles.
su postgres
psql -l # lister les bases disponibles ainsi que leurs attributs
Normalement, vous devriez voir vos bases de données à restaurer. Il ne reste plus qu’a faire un dump propre des bases afin de pouvoir les remonter sur un autre serveur fonctionnel.
pg_dump -Fc nom_bdd > database.bak # dump en .bak
pg_dump nom_bdd > database.sql # dump en fichier texte .sql