Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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
http://blog-postgresql.verite.pro/
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.
Julien.
https://rjuju.github.io/
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)
Cordialement,
Sébastien.
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
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.
Cordialement,
Sébastien.
Hors ligne