[Pgsql-ayuda] error

Alvaro Herrera alvherre@dcc.uchile.cl
Wed, 10 Sep 2003 22:05:43 -0400


On Thu, Sep 11, 2003 at 12:48:18AM +0100, Felipe Fernandez wrote:

> Alvaro Herrera wrote:
> 
> >On Wed, Sep 10, 2003 at 11:21:00PM +0100, Felipe Fernandez wrote:

> >>2003-09-10 23:21:44 [761]    FATAL 2:  read of clog file 1752, offset 
> >>73728 failed: Success

> >Has probado badblocks y memtest86?  Si es así, con qué resultados? 

Y bien?

> >Cuál es el rango de archivos que hay en PGDATA/pg_clog ? 
> >
> 06BB-06D8

Bastante dispar del archivo que te esta pidiendo.  Yo diria que hubo
corrupción del XLog... cosa bastante seria!  Probablemente causada por
memoria o discos malos.

06D8 = 0000110 11011000
06BB = 0000110 10111011
1752 = 0010111 01010010

No sabría sacar ninguna conclusión, pero bastaría que en un momento dado
fallaran dos bits para que esto sea posible...  Si tienes corrupto xlog
los datos no son tremendamente confiables.  Mejor recupera el respaldo y
trata de reingresar la información que se perdió, si es vital.

> >Sospecho que vas a tener que quedarte con los backups de ayer.  Una
> >posible alternativa para recuperar al menos parcialmente los datos de
> >hoy, seria crear el archivo de clog que te esta pidiendo, llenandolo con
> >ceros.
> 
> ¿como lo creo?

dd if=/dev/zero of=archivo-final count=1 bs=tamaño

donde "tamaño" es el tamaño de uno de esos archivos (deberían ser todos
iguales)  (mira el manual de dd)

También prueba llenando el archivo con 0x55 (esto es más dificil, no hay
una fuente de 0x55 como hay de 0x00 en /dev/zero), debería entregar algo
distinto.

(Sospecho que otra alternativa sería buscando el 1752 y reemplazándolo
por otra cosa dentro del XLog, pero me imagino que debe haber muchas
ocurrencias y no debe ser fácil dar con la correcta)

Obviamente no hay garantías...

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"El destino baraja y nosotros jugamos" (A. Schopenhauer)