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

From: Lazaro Rubén García Martinez <lgarciam(at)vnz(dot)uci(dot)cu>
To: Calabaza <calalinux(at)gmail(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: unexpected chunk number 1953460082 (expected 52) for toast value 478112 in pg_toast_377028
Date: 2011-10-16 03:22:24
Message-ID: 294D3D02D5E18D42827B2ECFEADEB6881E3A0A76A0@mx-interno.vnz.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Nunca he tenido un problema como ese porque llevo poco tiempo trabajando y aprendiendo sobre PostgreSQL, pero si te pudiera dar algunas recomendaciones al respecto:

1. Siempre que trabajes con objetos largos (blobs) asegúrate de tener instalado el módulo lo, para evitar la acumulación innecesaria de datos almacenados sobre la tabla pg_largeobject.

2. Igualmente instala el módulo vaccumlo para que realices un vacuum de este tipo sobre la BD periódicamente.

La documentación sobre estos módulos se encuentra disponible en la documentación oficial del gestor.

3. Puedes instalar alguna herramienta de monitorización como Nagios y configurarla para que te alerte sobre el espacio que va ocupando tu BD, y con ello seas capaz de saber si tus discos están al llenarse.

Saludos.

-----Mensaje original-----
De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Calabaza
Enviado el: sábado, 15 de octubre de 2011 12:36
Para: pgsql-es-ayuda
Asunto: [pgsql-es-ayuda] unexpected chunk number 1953460082 (expected 52) for toast value 478112 in pg_toast_377028

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
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message José Fermín Francisco Ferreras 2011-10-17 12:25:52 RE: [pgsql-es-ayuda] In Memoriam: Falleció Dennis Ritchie
Previous Message Alvaro Herrera 2011-10-15 19:51:58 Re: unexpected chunk number 1953460082 (expected 52) for toast value 478112 in pg_toast_377028