Ceci est une ancienne révision du document !
L'ordinateur a planté, et l'on n'a pas pu/ne peut plus faire de sauvegarde depuis l'interface noalyss.
Néanmoins, on a encore accès aux données sur le disque dur de l'ordinateur qui a planté (et donc à notre base de donnée postgresql).
On prendra un exemple où l'on doit restaurer une base de données construite avec postgresql-9.6 et remise dans une installation à jour avec postgresql-12.
Étape 0 : sauvegarder la base de données Copier/coller l'intégralité du dossier /var/lib/version/main/ (où “version” sera un numéro de version, dans notre exemple /var/lib/postgresql/9.6/main/ ) de l'ordinateur planté sur un support de sauvegarde (disque-dur/clé USB).
À partir de maintenant, on travaillera sur la nouvelle installation (dans l'exemple, postgresql-12).
Étape 1 : installer l'ancienne version de postgresql
Soit en la compilant, soit avec les packages de la distribution.
Dans notre exemple, postgresql-9.6, à partir des conseils que l'on trouvera : ici.
Étape 2 : démarrer l'ancienne version de postgresql en prenant en compte les données “historique”
Copier/coller (nécessite les droits admin) le dossier /var/lib/postgresql/9.6/main que l'on a sauvegardé dans le même dossier sur la nouvelle installation. Si le dossier n'existe pas, c'est que l'installation de postgresql ne s'est pas bien faite.
Modifier /etc/postgresql/9.6/main/pg_hba.conf de sorte que :
local all all peer host all all 127.0.0.1/32 trust
Modifier /etc/postgresql/9.6/main/postgresql.conf de sorte que :
listen_addresses = 'localhost' # what IP address(es) to listen on; port = 4000 # (change requires restart)
Copier/coller (nécessite les droits admin) /etc/postgresql/9.6/main/pg_hba.conf et /etc/postgresql/9.6/main/postgresql.conf dans /var/lib/postgresql/9.6/main
Vérifier que tout appartient et est fait par l'utilisateur postgres
chown -R postgres /var/lib/postgresql/9.6/main chmod -R o-rwx /var/lib/postgresql/9.6/main
Puis faire (attention, il faut avoir le chemin complet vers pg_ctl)
/usr/lib/postgresql/9.6/bin/pg_ctl start –pgdata /var/lib/9.6/main/ -o “–port=4000”
Une fois cela fait, avec la nouvelle version de postgresl (pour rappel, c'est la 12 pour cet exemple) faire :
/usr/lib/postgresql/12/bin/pg_dumpall > full-backup.dmp
Puis arrêter le server 9.6 /usr/lib/postgresql/9.6/bin/pg_ctl stop –pgdata /var/lib/9.6/main/ -o “–port=4000”