Re: Invalid Page Header Error - Mailing list pgsql-general

From Richard Huxton
Subject Re: Invalid Page Header Error
Date
Msg-id 4AE6E5BF.4050501@archonet.com
Whole thread Raw
In response to Invalid Page Header Error  (Denis BUCHER <dbucherml@hsolutions.ch>)
Responses Re: Invalid Page Header Error
Re: Invalid Page Header Error
List pgsql-general
Denis BUCHER wrote:
> Hello,
>
> We had a server crash and when restarting postgres it works, except some
> "Invalid Page Header Error" :

Data corrupted on disk. Either:
1. You have bad hardware
2. You have disks lying about fsync
3. You have fsync turned off.

> I already try VACUUM / FULL / ANALYSE but same error
>
> Even when doing a pg_dumpall, we have this problem.

Yes - a disk-block ("page") on disk has invalid pointers ("header").

> I read a lot of formus, but never a clear solution, what could we do to
> solve this problem ? (Except from taking the previous backups ?)

If you can restore from a backup, do that.

> If we loose data it's not a problem, I just want to know how postgres
> can clean himself again...

You might well be able to dump tables individually, apart from the one
that's corrupted. You can usually select out rows apart from those that
are corrupted. There's no easy way to identify all corrupted rows
without reading them. There's no guarantee that rows might be corrupted
in a way you don't notice at first.

There's no tool to fix these problems, because there's no simple pattern
to them if you have hardware failure. Even if there was, you could never
trust the data without comparing it to a backup.

So - make sure your last backup restores OK. Check your hardware works.
Make sure you have fsync turned on and your disks are syncing when they
say they do.

--
  Richard Huxton
  Archonet Ltd

pgsql-general by date:

Previous
From: Merlin Moncure
Date:
Subject: Re: Is there any ways to pass an array as parameter in libpq?
Next
From: John DeSoi
Date:
Subject: Re: Implementing Frontend/Backend Protocol TCP/IP