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 :
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.
L'historique :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
LOG: logger shutting down
Je remets les logs dans $PGDATA/pg_xlog , je redémarre la base, même message.
Ni une, ni deux, je lance la commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
pg_resetxlog -f /app/marjorie/pgsql/data # (encore une grosse connerie sans doute)
Impossibilité de redémarrer la base, message :

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.
J'arrête là le massacre et je vous demande de l'aide.

Merci d'avance

Jibc

EDIT : j'ajoute les précisions suivantes :
Apparemment, la version des binaires est 8.2.13 et non 8.4.
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
Par contre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ cat /app/pgsql/data/PG_VERSION
8.4
Comment sortir de cette différence de version entre les fichiers ?

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 :
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
Par défaut, évidemment, quand on appelle un binaire en chemin relatif, il prend celui de /usr/bin.
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.