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 08/09/2013 17:14:42

lemjid
Membre

BUG Postgresql9.1.6

Bonjour,

Je me rend compte quand j'ai voulu j'ai voulu créer des extension (postgis+dblink) sur une nouvelle base créée sous postgres d'un message:
"ERROR: could not read block 43 in file "base/xxx/yyy" : read only 0 of xxx bytes" de plus je ne peux même pas faire un vacuum full su cette base ni sur la base (postgres). Pour les autres base je peut faire vacuum full mais pas celui ci. Sur internet ils parlent de bug et ils disent de faire une restauration chaose que j'ai faite après un "initdb" en vain.

Pour le bug je ne crois pas car j'ai fait la même opération sur un environnement identique (version linux 'redhat6' et postgesql) je ne sais pas si qq à eu une même galère et qui pourra  m'aider.

Merci d'avance

Hors ligne

#2 08/09/2013 18:48:36

rjuju
Administrateur

Re : BUG Postgresql9.1.6

Bonjour,

cela ressemble plutôt à un problème matériel sur le serveur. Avez-vous eu des soucis disques, ou quelque chose dans la sortie de dmesg ?

Vous pouvez essayer de voir à quoi correspond ce fichier avec la requête suivante :

SELECT * FROM pg_class where relfilenode = yyy, en étant connecté sur la base en question (SELECT * FROM pg_class WHERE oid = xxx pour trouver la bonne base si vous n'en êtes pas sur).


Vous pouvez également voir la taille de ce fichier ou autre problème directement sur le système de fichier du serveur.

Sinon, le serveur en question a été complètement réinitialisé avec un initdb ? Puis restauré ?

Hors ligne

#3 08/09/2013 22:54:36

lemjid
Membre

Re : BUG Postgresql9.1.6

Bonjour, merci rjuju!

Comme indiqué plus haut j'ai supprimer et recréer le cluster postgres via initdb et restaurer les données via pg_basebackup. Pour plus de précision c'est une VM qui ecrit sur du raid 5, 3 disques (pas bien je sais mais je ne suis pas décideur) bref. L'OS redhat6. je na sais pas s'il faut faire un dmesg ou un "tw_cli" moi aussi je me penche sur un pbm matériel mais j'aimerai investir tout les pistes concernant le SGBDR postgres. car la partie système 
n'est pas ma responsabilité pourtant ça m’intéresse fortement.
Pour dmesg j'avoue que je ne sais pas tout lire mais si tu pourras m'aiguiller quel information devrai je chercher ça m'aidera énormément.
merci d'avance

Hors ligne

#4 08/09/2013 23:54:34

rjuju
Administrateur

Re : BUG Postgresql9.1.6

Le problème vient peut-être de la méthode de restauration. La méthode "pg_basebackup" va créer une instance de 0, un initdb est donc inutile. Le pg_basebackup ne devrait pas pouvoir se lancer si le répertoire indiqué par -D n'est pas vide. L'instance démarrée pointe-t-elle bien sur le bon répertoire pg_data ?


Comme ce serveur est restauré à partir d'un autre serveur, il est également possible que ce soit le serveur source qui souffre d'une défaillance. As-tu noté des erreurs dans les journaux applicatifs de postgres (ceux du serveur maître) lors de cette étape ?

Concernant la sortie de dmesg, les messages affichés en cas de problème peuvent être assez variés, mais sont normalement facilement reconnaissable par rapports aux informations "normales". Un "dmesg -l err,crit,alert,emerg" ou "dmesg |grep -i err" (selon l'os) est déjà un bon point de départ.

Hors ligne

#5 08/09/2013 23:55:14

gleu
Administrateur

Re : BUG Postgresql9.1.6

Votre dernier message est pour le moins étonnant. On ne restaure pas de données avec un pg_basebackup. Ça ne sert à rien de faire un initdb, si c'est pour utiliser une sauvegarde faite avec pg_basebackup. Etc.

En tout cas, votre message d'erreur fait penser à un problème matériel. Donc il faudrait récupérer une sauvegarde (faite avec pg_dump ou pg_basebackup) et essayer de la restaurer sur un autre serveur (avec psql ou pg_restore, ou une simple copie).


Guillaume.

Hors ligne

#6 09/09/2013 09:34:44

lemjid
Membre

Re : BUG Postgresql9.1.6

Bonjour Guillaume,

T'as raison car j'ai oublier (désolé) de préciser que c'est une architecture HA (streaming replication) avec deux machines master/slave. Donc j'ai fait pg_basebackup pour restaurer les données sur l'un des nœuds.
En revanche peux tu (ou julien) me dire ce que je dois chercher dans la sortie de la commande "dmesg"?
Bien à vous

Hors ligne

Pied de page des forums