postgres pgsql example constant postgresql block

postgresql - example - variables pgsql



PostgreSQL: encabezado de página inválido en bloque (4)

Estoy recibiendo un error

ERROR: invalid page header in block 411 of relation "t_value_time"

en mi base de datos PostgreSQL. Esto sigue sucediendo en diferentes máquinas. ¿Hay alguna forma de evitar que suceda, o al menos decirle a PSQL que ignore los datos en el bloque no válido y siga adelante?

Prefiero perder los datos del bloque y pedirle que lo omita, leyendo el resto de los datos. ¿Hay alguna manera de decirle a PSQL que salte este bloque?


¿El mismo bloque cada vez?

Por lo que he leído, la causa más común de los bloques inválidos es el hardware. Red Hat tiene una utilidad, pg_filedump , que da formato a "archivos de pila, índice y control de PostgreSQL en una forma legible para el usuario". No creo que admitan ninguna versión de PostgreSQL superior a 8.4.0, pero podría estar equivocado.

Desea probar que su hardware es bueno mediante el uso de un disco duro y completo, RAM y diagnósticos de NIC.


Estos son casi siempre problemas de hardware por cierto. Verificar y probar la memoria RAM, disco, CPU. Asegúrese de que su entorno sea bueno (una mala entrada de energía puede causar problemas y sobrecalentamiento). Esa es la mejor manera de prevenirlo. La mejor forma de solucionarlo es la recuperación puntual de una copia de seguridad base.


No hay una forma simple de hacerlo, pero es razonablemente fácil hacerlo simplemente editando el archivo de datos directamente (relfilenode de la entrada pg_class da el nombre del archivo).

Simplemente copie un bloque de otra parte del archivo sobre el bloque defectuoso. Lo ideal es sintetizar un bloque vacío o actualizar el que está sobrescribiendo para que no contenga tuplas válidas.

Una vez que tenga algo que no produzca ese error, voltee la mesa y vuelva a cargarla por seguridad.


ADVERTENCIA: ¡Perderás algunos datos!

Nos las arreglamos para superarlo (se estrelló DEV VM) mediante la emisión de:

database=# SET zero_damaged_pages = on; SET database=# VACUUM FULL damaged_table; WARNING: invalid page header in block xxx of relation base/yyy/zzz; zeroing out page [..] REINDEX TABLE damaged_table;

Arreglar a través de pwkg.ork .