unexpected chunk number 1953460082 (expected 52) for toast value 478112 in pg_toast_377028

From: Calabaza <calalinux(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: unexpected chunk number 1953460082 (expected 52) for toast value 478112 in pg_toast_377028
Date: 2011-10-15 16:35:30
Message-ID: CADA3Qfyg6dt5kEwr9CUkjHXpEgiw+soCJpHzdY7JjarwTQaO6w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenos días, amigos,
espero puedan darme algunas indicaciones con el siguiente

Problema:
No puedo realizar una copia de seguridad de una DB que se utiliza
para guardar ficheros BLOB (fotografias de marcaciones de usuarios).

La causa:
Días antes del problema, la partición en donde reside el directorio DATA
se ha llenado, por lo que ha dejado de funcionar.

Log de ese día:

2011-09-07 17:21:17 PYTERROR: could not extend relation base/17133/377032:
No queda espacio en el dispositivo
2011-09-07 17:21:17 PYTHINT: Check free disk space.
2011-09-07 17:21:17 PYTCONTEXT: SQL statement "insert into
mi_tabla (campo_id, campo1) values ( $1 , $2)"
PL/pgSQL function "ins_mi_tabla" line 2 at SQL statement
2011-09-07 17:21:17 PYTSTATEMENT: select * FROM ins_mi_tabla($1,$2)

2011-09-07 17:21:21 PYTLOG: could not write temporary statistics
file "pg_stat_tmp/pgstat.tmp": No queda espacio en el dispositivo
2011-09-07 17:21:21 PYTLOG: could not write temporary statistics file "pg_sta

Lo realizado:
a) Intento de realizar copia de seguridad, el que dio el siguiente error:

2011-09-17 14:15:38 PYTERROR: unexpected chunk number 1953460082 (expected 52)
for toast value 478112 in pg_toast_377028
2011-09-17 14:15:38 PYTSTATEMENT: COPY mi_tabla (campo_id, campo1) TO stdout;

b) Detuve el servicio
c) Reubicación del directorio data (Copiado) a una partición
diferente con más espacio libre.
d) Cambio de path en el postgresql.conf e Inicio del servidor.

Resultados / Sugerencias de Búsquedas en Internet:
[0]. http://archives.postgresql.org/pgsql-admin/2008-09/msg00287.php

Si bien, mi Inglés no es tan bueno, creo entender que el trabajo
aquí realizado fue:
a) Identificar el registro dañado
b) Dumpear el schema de la DB
c) Dumpear los datos de todas las tablas a excepción de la que está defectuosa
d) Obtener los registros previos y posteriores al "defectuoso" e insertarlos
en otra BD.

[2]. http://serverfault.com/questions/152442/pg-dump-error-message-from-server-error-missing-chunk-number-0-for-toast-value
Según este link, indica que debe borrarse el registro "defectuoso".

[3]. http://postgresql.1045698.n5.nabble.com/BUG-5929-ERROR-found-toasted-toast-chunk-for-toast-value-260340218-in-pg-toast-260339342-td3704493.html

Y aquí hay varias observaciones, de las cuales he verificado los parámetros:
fsync y full_page_writes estan comentados en el postgresql.conf,
lo que, según el link, indica que estan en ON.

La versión completa del postgresql: Select version();
"PostgreSQL 8.4.1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC)
3.4.6 20060404 (Red Hat 3.4.6-10), 32-bit"

Datos del server:
openSUSE 11.1
Linux linux-mh 2.6.27.29-0.1-pae #1 SMP 2009-08-15 17:53:59 +0200
i686 i686 i386 GNU/Linux

Pregunta:
¿Que sugieren que pueda hacer para volver a un estado correcto la BD
para poder realizar un backup completo, preferentemente sin
hacer el recorrido registro a registro sugerido
en los links [0] y [1] asumiendo que se pueden descartar
los registros defectuosos?

Desde ya muchas gracias por su tiempo.

--
§~^Calabaza^~§ from Barrio Obrero, Asunción, Paraguay
http://calablogbaza.blogspot.com/

http://es.wikipedia.org/wiki/Top-posting
http://es.wikipedia.org/wiki/Netiquette

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2011-10-15 19:51:58 Re: unexpected chunk number 1953460082 (expected 52) for toast value 478112 in pg_toast_377028
Previous Message Sergio Sánchez Rivas 2011-10-15 03:24:23 Re: In Memoriam: Falleció Dennis Ritchie