Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 10/10/2018 18:08:23
- duple
- Membre
pg_clog : impossible lecture : Input/output error
Bonjour,
Je rencontre l'erreur suivant lors d'un dump sur une base de données particulière sur une table contenant des données binaire (ex: image, pdf,...) de type bytea.
Voici l'erreur en question:
pg_dump: Error message from server: ERROR: could not access status of transaction 256212738
DETAIL: Could not read from file "pg_clog/00F4" at offset 81920: Input/output error.
En regardant dans PGDATA/pg_clog le fichier 00F4 existe bien mais ne peut être lu.
Ex: un less pg_clog/00F4 renvoie l'erreur : read error
Environnement sous linux, version postgresql 9.3.5.
Sachant qu'il n'y a pas de sauvegarde dump à restaurer, est ce qu'il existe un moyen pour corriger le problème svp ?
Hors ligne
#2 11/10/2018 09:05:22
- duple
- Membre
Re : pg_clog : impossible lecture : Input/output error
Petite rectification : postgresql 9.4.5 mais non 9.3.5
Personne une solution ?
Hors ligne
#3 11/10/2018 09:33:15
- gleu
- Administrateur
Re : pg_clog : impossible lecture : Input/output error
Il n'y a pas de solution simple. Les fichiers CLOG contiennent les informations de statut des transactions. Sans eux, PostgreSQL ne sait pas quels lignes sont visibles et quels lignes sont invisibles. Le seul truc à tester est de renommer 00F4 puis de créer un fichier 00F4 de la bonne taille et rempli d'octets nuls. Vous devriez pouvoir faire un dump mais vous ne retrouverez pas toutes les données. Il est même tout à fait possible que le dump ne soit pas complètement restaurable en cas de violation de certaines contraintes.
Et du coup, il va falloir vérifier ce disque et probablement à coup sûr le remplacer.
Guillaume.
Hors ligne
#4 11/10/2018 10:39:50
- duple
- Membre
Re : pg_clog : impossible lecture : Input/output error
gleu > Merci pour ta réponse Guillaume.
En parcourant une à une les enregistrement de la table en question, on connait maintenant la ligne (1 champs dans cette ligne) qui pose problème.
Si je fais un DELETE de cette ligne et que je lance ensuite un VACUUM FULL sur la table, est ce que cela pourrait résoudre le problème ?
Hors ligne
#5 11/10/2018 11:38:10
- gleu
- Administrateur
Re : pg_clog : impossible lecture : Input/output error
Vous ne pourrez pas faire un DELETE de la ligne et un VACUUM FULL ne changera rien à ma connaissance. Dans ce cas, le mieux est de sauvegarder toute la base, sauf la table problématique, puis sauvegarder la table avec un COPY (SELECT... WHERE filtrant la ligne qui pose problème). Comme ça, vous aurez un dump propre. Il serait bien de tester que vous pouvez restaurer ce dump. Puis remplacement du disque, création d'une instance PostgreSQL et restauration du dump.
Guillaume.
Hors ligne
#6 11/10/2018 12:23:00
- duple
- Membre
Re : pg_clog : impossible lecture : Input/output error
Je ne peux même pas faire un select * from table_corrompu where id <> id_corrompu ni un select * from table_corrompu where id > id_corrompu.
Il doit faire un fullscan le truc et çà pête.
donc la seule solution est elle remplacer 00f4 évoquait plus haut ? Comment cré t-on ce fichier de remplacement ?
Hors ligne
#7 11/10/2018 12:30:01
- duple
- Membre
Re : pg_clog : impossible lecture : Input/output error
ah une autre idée faire un select en specifiant carrément la clé, donc de prendre le max(id) et select where id in (id_corrompu+1, id_corrompu+2, .. max(id)) je teste
Hors ligne
#8 11/10/2018 12:49:46
- duple
- Membre
Re : pg_clog : impossible lecture : Input/output error
Ca ne le fait pas il existe egalement d'autre id corrompu.
Je reprend : donc la seule solution est elle remplacer 00f4 évoquait plus haut ? Comment cré t-on ce fichier de remplacement ?
Hors ligne
#9 11/10/2018 22:19:36
- gleu
- Administrateur
Re : pg_clog : impossible lecture : Input/output error
Je n'en vois pas d'autres mais c'est difficile à dire sans accéder à la machine et y passer un peu de temps. Pour créer ce fichier, je vois bien cette commande :
dd if=/dev/zero of=00F4 count=1 bs=8192
Faites d'abord une copie intégrale de vos fichiers PostgreSQL (donc le PGDATA et les tablespaces).
Guillaume.
Hors ligne
#10 12/10/2018 15:59:00
- duple
- Membre
Re : pg_clog : impossible lecture : Input/output error
Merci , en fin de compte on a restauré la table sans les lignes corrompues.
Merci à tous
Hors ligne
Pages : 1