Re: Base de datos corrupta

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Manuel Lamas <manuel3w(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Base de datos corrupta
Date: 2007-11-06 13:56:24
Message-ID: 20071106135624.GC2694@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Manuel Lamas escribió:

> Alvaro : Me estraña tu respuesta. Solo haciendo un simple SELECT *
> FROM mis_tablas puedo comprobar que la base de datos no esta corrupta
> ? Tengo tablas de 500 000 lineas, cambia algo a tu manera ? No existe
> ningún comando particular que escanea la base de datos y detecta los
> errores ?

La base de datos no se corrompe, excepto cuando hay
1) bugs
2) problemas de hardware.

Cuando hay (1), lo obvio es corregir el bug de manera que la corrupcion
no vuelva a presentarse. Por lo tanto no tiene sentido hacer una
herramienta para escanear (y reparar?) los posibles errores, porque cada
bug sera distinto y por lo tanto los errores son distintos; cuando esto
ha sucedido lo que se ha hecho es que se ha liberado una nueva version
de Postgres con el bug corregido.

Cuando hay (2), los problemas se manifiestan de formas aleatorias. Por
lo tanto es muy dificil hacer una herramienta que chequee la base de
datos de maneras utiles.

Los problemas que se presentan tipicamente en este caso son:
a) corrupcion de punteros TOAST
b) corrupcion de encabezados "varlena"
c) corrupcion total de paginas, incluyendo encabezados de pagina

Los tres problemas serian detectados al hacer un SELECT de todos los
campos de cada tabla, y reportados con un ERROR. Por lo tanto si haces
eso y no reporta nada, es porque la base de datos (muy probablemente) no
esta corrupta.

Hay otros problemas posibles, por ejemplo corrupcion interna de los
valores almacenados (por ejemplo que un valor "1" se convierta en un
"100"). Pero la probabilidad de que eso ocurra y que _no_ ocurra ni (a)
ni (b) ni (c) es muy muy remota.

Si el servidor de datos simplemente se cayo por un corte de energia y
luego volvio a levantarse sin ningun problema, la probabilidad de que
haya corrupcion de datos es bastante pequeña. (Hemos visto varios
reportes de servidores que se caen y luego tienen problemas al
levantarse debido a problemas de configuracion. Pero si se levanta OK y
luego sigue funcionando OK creo que no hay razones para temer).

--
Alvaro Herrera http://www.flickr.com/photos/alvherre/
You liked Linux a lot when he was just the gawky kid from down the block
mowing your lawn or shoveling the snow. But now that he wants to date
your daughter, you're not so sure he measures up. (Larry Greenemeier)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-11-06 13:57:09 Re: Base de datos corrupta
Previous Message Reynier Perez Mira 2007-11-06 13:22:25 Novato con PostgreSQL