Re: Replacing the corrupt "global" folder with older one

From: Zdenek Kotala <Zdenek(dot)Kotala(at)Sun(dot)COM>
To: chris(dot)jurado(at)primesoft(dot)ph
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Replacing the corrupt "global" folder with older one
Date: 2008-03-04 08:55:39
Message-ID: 47CD0E8B.702@sun.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

chris.jurado napsal(a):
> Sorry for sending this directly to the hackers mailing list. But, i think it did not belong in any other as it involves internals about the files in the data directory.
>
>
> PostgreSQL version: 8.1.2
> Operating system: Windows XP/2003
>
> The PostgreSQL service is not starting anymore. When I manually start it, it said something like it started but ended immediately because it had no work to do. I encountered this error before but a simple re-installation fixed it. This time, it didn't.
>
> I've tried running the service using a backup data folder w/c was 2 days ago, it runs. When I switch back to the current, I get the error above. So, I figured the current data must be corrupt. After examination of the data folder, the global folder is now not a folder but a file that is 8KB in size (I found this out by trying out the reset_xlog command and it said it could no longer find the global/xxx file). It could be the hard disk has a problem. I'm going to replace it soon.
>
> I searched the documentation about what the global folder contains and found out that these contain cluster-wide tables like the list of databases, etc.
>
> I wanted not to lose the latest transactions by restoring a backup. Now the question is this, is it ok to just copy the global folder from my backup 2 days ago, and replace the one in my current data folder? I'm very very sure no DDL statements were executed or no new databases/other objects were created since my last backup. Only DML statements were executed on the user's databases. Will I lose data if I do this?

Global tables also contain information about vacuuming, freeze xid and
oids. You could have problem for example with tuple visibility.

You can try it but backup current state first. And when it will work,
dump all database cluster and regenerate it from a scratch. And try to
use newer version of PostgreSQL (8.1.11 or better is 8.3).

Zdenek

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Zdenek Kotala 2008-03-04 09:11:47 How to handle error message in PG_CATCH
Previous Message Joshua D. Drake 2008-03-04 05:43:02 Re: pg_dump additional options for performance