Re: Postrgres data restoration problem - Mailing list pgsql-admin

From Jim Cochrane
Subject Re: Postrgres data restoration problem
Date
Msg-id 200312080130.hB81Uq631577@jupiter.milkyway.org
Whole thread Raw
In response to Re: Postrgres data restoration problem  (Sai Hertz And Control Systems <sank89@sancharnet.in>)
List pgsql-admin
Thanks, V Kashyap, for your help.

> Dear Jim Cochrane,
>
> >I'm looking for help restoring old postgres databases on a linux system
> >after a reinstall of Redhat (including posgresql).  It's the same version
> >of redhat and of postgres I was using before the resinstall, but I've not
> >been able to get the database server to see the old databases.
> >
> Here we are trying to help
>
> >The old data is stored in the standard postgres format.  (No,
> >unfortunately, I did not have a backup.)  The postgres data is located
> >on my system under /var/lib/pgsql.  So I tried both creating a
> >symbolic link - setting up /var/lib/pgsql/data as a symbolic link to
> >/oldpgsqlpath/data, and, when that didn't work, I just copied the old data
> >directory to /var/lib/pgsql (that is, it ended up residing in
> >/var/lib/pgsql/data), which didn't work either:
> >
> I presume while you were doing the all above said
> 1. PostgreSQL was stoped while cp etc

I think so, but am not certain it was stopped; if it wasn't, it may have
caused a problem, as your question implies.

> 2. The new cluster has been  initialise initdb  i..e the original
> database and not the copied direcrory namely /var/lib/pgsql

I didn't run initdb.  However, let me include the response I sent to
Thierry (who, I think, only responded to me and not the list).  I included
this in another reply I just sent, but so you don't have to look for it
I'll include it here, too.  I think the results I got after trying his
suggestion indicates that the database has gotten corrupted, but perhaps
I've overlooked something that could fix it.  Here's the response to
Thierry:


> I have just simple questions :
> 1) After Redhat and Postgres reinstall, did you run initdb ? Don't do it.

I'm pretty sure I didn't run initdb by hand, but it may have been run by
the startup script in /etc/rc?.d.

> 2) What is the value of $PGDATA ?

The database server was being started by the /etc/init.d/postgresql (linked
into the appropriate /etc/rc?.d directory) and I believe it was setting
PGDATA to either /var/lib/pgsql or /var/lib/pgsql/data.  (The old database
files are in /home/pgsql/data.)

> 3) Have you try to set : export PGDATA=/oldpgsqlpath/data and pg_ctl start ?
>
> >From my point of view, after reinstalling Redhat and PG, be sure that the
> filesystem /oldpgsqlpath is mounted, export PGDATA=/oldpgsqlpath/data, pg_ctl
> start.
> psql dbname
> \d  => you should see your tables.

Using your example, I just essentially did the same thing (as the postgres
user):

cd /oldpgsqlpath/data
pg_ctl  -D $PWD start >/tmp/pgr 2>&1

However the server failed to start up, giving the following error messages:

postmaster successfully started
DEBUG:  database system was shut down at 2003-12-07 14:55:22 MST
DEBUG:  open of /home/pgsql/data/pg_xlog/0000000000000000 (log file 0, segment 0) failed: No such file or directory
DEBUG:  invalid primary checkpoint record
DEBUG:  open of /home/pgsql/data/pg_xlog/0000000000000000 (log file 0, segment 0) failed: No such file or directory
DEBUG:  invalid secondary checkpoint record
FATAL 2:  unable to locate a valid checkpoint record
DEBUG:  startup process (pid 31411) exited with exit code 2
DEBUG:  aborting startup due to startup process failure

> Otherwise, something has been broken in /oldpgsqlpath/data.

It looks like that is the case - that, perhaps, the metadata is corrupted.

I suspect that this is not recoverable.  Is that the case?


[END RESPONSE]

> If this help kindly shoot back for more
> For next time keep a backup
Yep.

Thanks,
Jim

pgsql-admin by date:

Previous
From: Jim Cochrane
Date:
Subject: Re: Postrgres data restoration problem
Next
From: Tom Lane
Date:
Subject: Re: Postrgres data restoration problem