Bonjour,
Avant tout, voici les infos de version de notre environnement :
PostgreSQL : 8.4
Taille de la base : 250 Go
Serveur Red Hat 5.3
Autre un information : Je n'y connais quasiment rien à l'administration PostgreSQL. Ceux qui ont fait notre install sont partis depuis bien longtemps et n'ont pas laissé beaucoup de doc. Donc on se débrouille avec les moyens du bord, comme on dit.
Le problème : impossibilité de démarrer la base. Message obtenu :
L'historique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 FATAL: database files are incompatible with server DETAIL: The database cluster was initialized with PG_CONTROL_VERSION 822, but the server was compiled with PG_CONTROL_VERSION 843. HINT: It looks like you need to initdb.
Suite à un problème de saturation sur le serveur de base de données, j'ai perdu la connexion à la base.
Pour libérer de la place, j'ai supprimé des fichiers dans $PGDATA/pg_log.
Cela n'a pas suffi, je ne pouvais toujours pas me connecter à la base (bon, à cet endroit, j'aurais dû tenter de démarrer la base, et j'aurais sans doute évité les ennuis suivants).
J'ai déplacé les fichiers $PGDATA/pg_xlog à un autre endroit (et c'est là que normalement, tout le monde se dit : "Quel boulet..." Je sais.)
Suite à cela, impossible de redémarrer la base. Message :
Je remets les logs dans $PGDATA/pg_xlog , je redémarre la base, même message.
Code : Sélectionner tout - Visualiser dans une fenêtre à part LOG: logger shutting down
Ni une, ni deux, je lance la commande :
Impossibilité de redémarrer la base, message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part pg_resetxlog -f /app/marjorie/pgsql/data # (encore une grosse connerie sans doute)
J'arrête là le massacre et je vous demande de l'aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 FATAL: database files are incompatible with server DETAIL: The database cluster was initialized with PG_CONTROL_VERSION 822, but the server was compiled with PG_CONTROL_VERSION 843. HINT: It looks like you need to initdb.
Merci d'avance
Jibc
EDIT : j'ajoute les précisions suivantes :
Apparemment, la version des binaires est 8.2.13 et non 8.4.
Par contre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ initdb --version initdb (PostgreSQL) 8.2.13 $ pg_ctl --version pg_ctl (PostgreSQL) 8.2.13 $ pg_resetxlog --version pg_resetxlog (PostgreSQL) 8.2.13
Comment sortir de cette différence de version entre les fichiers ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ cat /app/pgsql/data/PG_VERSION 8.4
EDIT2 :
Je n'avais pas fait attention, mais les binaires qui sont dans /usr/bin/ sont en 8.2 mais ceux qui sont dans /app/pgsql/bin sont en 8.4 :
Par défaut, évidemment, quand on appelle un binaire en chemin relatif, il prend celui de /usr/bin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ /app/marjorie/pgsql/bin/pg_ctl --version pg_ctl (PostgreSQL) 8.4.5
Or, lorsque j'ai appelé pg_resetxlog, je n'ai pas utilisé le chemin absolu. Il a donc pris la version 8.2 et je lui ai indiqué un chemin PGDATA en version 8.4.
Pensez-vous qu'il suffit de relancer la commande pg_resetxlog en utilisant bien la bonne version cette fois ?
EDIT3 :
Bon, j'ai pris mon courage à 2 mais et j'ai lancé le pg_resetxlog en version 8.4...
Et là c'est bon, le redémarrage de la base a fonctionné. C'est tout bon.
Partager