Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| tutoriaux:restaurer_depuis_les_fichiers_postgresql [2020/05/28 19:44] – créée max_bxl | tutoriaux:restaurer_depuis_les_fichiers_postgresql [2020/05/29 12:06] (Version actuelle) – dany | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | L' | + | ====== Situation ====== | 
| + | |||
| + | L' | ||
| + | |||
| + | Parce que : | ||
| + | |||
| + | * un upgrade Linux n'a pas mis à jour la base de postgresql mais à créer une nouvelle version, | ||
| + | * simplement vous avez un backup de votre disque mais pas de backup de la DB | ||
| Néanmoins, on a encore accès aux données sur le disque dur de l' | Néanmoins, on a encore accès aux données sur le disque dur de l' | ||
| + | |||
| + | |||
| 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. | 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 | + | On utilisera la version 9.6 et 12 , adaptez aux versions que vous avez | 
| + | |||
| + | ====== Préambule | ||
| Copier/ | Copier/ | ||
| À partir de maintenant, on travaillera sur la nouvelle installation (dans l' | À partir de maintenant, on travaillera sur la nouvelle installation (dans l' | ||
| - | Étape 1 : installer | + | ====== Installer | 
| + | |||
| Soit en la compilant, soit avec les packages de la distribution. | Soit en la compilant, soit avec les packages de la distribution. | ||
| Ligne 16: | Ligne 30: | ||
| Dans notre exemple, postgresql-9.6, | Dans notre exemple, postgresql-9.6, | ||
| - | Étape 2 : démarrer | + | ====== Démarrer | 
| + | |||
| - | Copier/ | ||
| - | Modifier | + | Copier/coller (nécessite les droits admin) le dossier /var/lib/ | 
| - | local | + | :IMPORTANT: On peut choisir un autre dossier. En choisissant d' | 
| - | host    all | + | |
| - | Modifier / | ||
| + | Modifiez / | ||
| + | <file txt pg_hba.conf> | ||
| + | |||
| + | local | ||
| + | host    all | ||
| + | </ | ||
| + | Modifiez / | ||
| + | <file txt postgresql.conf> | ||
| listen_addresses = ' | listen_addresses = ' | ||
| port = 4000 # (change requires restart) | port = 4000 # (change requires restart) | ||
| - | + | </ | |
| - | Copier/ | + | Copier/ | 
| Vérifier que tout appartient et est fait par l' | Vérifier que tout appartient et est fait par l' | ||
| + | <code bash> | ||
| + | POSTGRESBASE=/ | ||
| + | chown -R postgres $POSTGRESBASE # / | ||
| + | chmod -R o-rwx    $POSTGRESBASE #/ | ||
| + | </ | ||
| - | chown -R postgres / | ||
| - | chmod -R o-rwx / | ||
| - | Puis faire (attention, il faut avoir le chemin complet vers pg_ctl) | + | Puis faire : | 
| + | (attention, il faut avoir le chemin complet vers pg_ctl) | ||
| + | |||
| + | (attention, à partir de postgresql-12, | ||
| + | (!) Rappel / | ||
| + | < | ||
| / | / | ||
| + | </ | ||
| + | Une fois cela fait, avec la nouvelle version de postgresl (pour rappel, c'est la 12 pour cet exemple), en indiquant le port de la 9.6 faire : | ||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | Il faut se connecter sur le port de la version 9.6 , puis arrêter ce server | ||
| + | < | ||
| + | / | ||
| + | </ | ||
| - | Une fois cela fait, avec la nouvelle version | + | ====== Restaurer | 
| - | / | ||
| - | Puis arrêter le server 9.6 | + | Restaurez votre backup , | 
| - | / | + | <code bash> | 
| + | sudo -i -u postgres | ||
| + | psql < noalyss_backup.dmp | ||
| + | </code> | ||
| + | Les données , les utilisateurs et les mots de passe seront comme à l' | ||
| + | |||
| + | |||
| + | source : [[tutoriaux: | ||
| + | |||
| + | ====== Complément (version >= 12) ====== | ||
| + | |||
| + | :TO-READ: Cette étape est absolument optionnelle et ne fera qu' | ||
| + | |||
| + | À partir de la version 12 , on ne peut plus utiliser "with oids" qui était le défaut jusque là | ||
| + | |||
| + | Il va falloir faire un script pour les modifier, quand la 9.6 tourne, se connecter et faire **pour chaque base de données**, en tant que postgres : | ||
| + | |||
| + | <code sql> | ||
| + | postgres@dany: | ||
| + | postgres=# | ||
| + | |||
| + | postgres=# select 'alter table ' | ||
| + | from pg_namespace nsp | ||
| + | join pg_class tbl on nsp.oid | ||
| + | where tbl.relhasoids=' | ||
| + | postgres=# | ||
| + | postgres=# | ||
| + | </ | ||
| + | où db1 est le nom de la base de donnée numéro un, que l'on trouvera de la manière suivante : | ||
| + | < | ||
| + | postgres@dany: | ||
| + | postgres=# | ||
| + | </ | ||