PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/12/2017 10:27:31

tclipha
Membre

Réutiliser un tablespace existant après réinstallation de PostgreSQL

Bonjour,
je suis sous ubuntu 16.04.3
j'avais installé PostgreSQL 9.5 qui exploitait des tablespaces placés sur une partition différente de la partition système.

J'ai dut réinstaller mon OS et donc reformater la partition système, mais la partition qui contenait les tablespaces de la DB sont intactes.
J'ai réinstallé PostgreSQL 9.5 et ai essayé de recréer un tablespace avec le chemin du tablespace déjà existant, mais cela ne lui plaît pas.

Existe t'il un moyen de déclarer dans cette nouvelle installation de PostgreSQL un tablespace qui existe déjà et contient les données de la DB précédente ?

D'avance merci de votre aide

Hors ligne

#2 06/12/2017 16:15:54

dverite
Membre

Re : Réutiliser un tablespace existant après réinstallation de PostgreSQL

Si on parle de CREATE TABLESPACE, non ce n'est pas possible parce que la liste et les structures des tables sont dans d'autres tables (du schéma pg_catalog) et il n'y  a pas d'auto-découverte possible des tables et autres objets dans un tablespace pris isolément.

Par ailleurs, quand l'instance d'avant a été arrêtée, les données dans ce tablespace en étaient à un certain avancement de transaction   qui est lié à cette instance et ne correspond plus à rien dans la nouvelle instance.

En clair un tablespace pris isolément est inutilisable, autant que des fichiers de données qu'on aurait pris directement de $PGDATA.


@DanielVerite

Hors ligne

#3 06/12/2017 16:22:41

rjuju
Administrateur

Re : Réutiliser un tablespace existant après réinstallation de PostgreSQL

Non cela n'est pas possible, il faut restaurer une sauvegarde pour récupérer les données.

Hors ligne

#4 06/12/2017 16:42:12

tclipha
Membre

Re : Réutiliser un tablespace existant après réinstallation de PostgreSQL

merci à vous deux pour ces infos.

Hors ligne

#5 06/12/2017 16:51:19

ruizsebastien
Membre

Re : Réutiliser un tablespace existant après réinstallation de PostgreSQL

Et si en cas d'urgence et pas de sauvegarde on essayait de jouer aux apprentis sorciers :
- on replace les fichiers aux endroits d'origines
- on créé les liens symboliques dans pg_tblspc avec un nom d'oid pour le nom du lien
- on insert dans la table pg_tablespace les informations qui correspondent à iod, spcname

et faire la même chose pour les autres objets.

non ? bien sûr ce serait trop facile...

Dernière modification par ruizsebastien (06/12/2017 16:52:19)

Hors ligne

#6 06/12/2017 16:59:07

Marc Cousin
Membre

Re : Réutiliser un tablespace existant après réinstallation de PostgreSQL

Ça risque d'être horriblement douloureux, plusieurs jours plus tard, quand les corruptions vont devenir évidentes smile

Plus sérieusement, il n'y a pas l'information de visibilité dans les tables, juste les id de transaction de création et destruction des enregistrements. L'info manquante est dans la clog. Si les deux sont incohérents, les données vues sont incohérentes.


Marc.

Hors ligne

#7 06/12/2017 17:20:45

ruizsebastien
Membre

Re : Réutiliser un tablespace existant après réinstallation de PostgreSQL

oui j'avoue que c'est particulièrement crado ;-)
le salut viendra d'une bonne sauvegarde, il n' y a pas de doute.

Hors ligne

Pied de page des forums