Thread: Server format and recovery

Server format and recovery

From
"Márcio Aguiar Ribeiro"
Date:
Hello all,

I just spent 4 days trying to recover a postgres database from a
server disaster without success.

A "buggy" file just erased all the HD of the server. We were able to
recover almost all files, so I re-installed Ubuntu and Postgres 8.2.

After that, I thought I would be able to just copy my PGDATA folder
from the recovered files to the server and then run the postgres
server, but my pg_control file was not valid. So I executed
pg_resetxlog . When I attempted to run the server again I received the
following error:

"FATAL:  database files are incompatible with server
The database cluster was initialized with MAXALIGN 0, but the server
waas compiled with MAXALIGN 4." (translated from my language to
english by me)

Since this, I already tried several ways to recover the data. I
started a new DB with initdb and copied the base/ and global/ data to
the PGDATA, but there's no use.
I'm able to psql my database, but when try a "select * from pg_tables"
i receive:

"ERROR:  unexpected chunk size 1986 in chunk 0 for toast value 10319"

In other attempts I also received:

"array size exceeds the maximum allowed"

I out of ideas right now, so I'm asking your help.

Any suggestions?

Thanks!

--
Marcio Aguiar Ribeiro

Re: Server format and recovery

From
Shane Ambler
Date:
Márcio Aguiar Ribeiro wrote:
> recover almost all files, so I re-installed Ubuntu and Postgres 8.2.

> pg_resetxlog . When I attempted to run the server again I received the
> following error:
>
> "FATAL:  database files are incompatible with server
> The database cluster was initialized with MAXALIGN 0, but the server
> waas compiled with MAXALIGN 4." (translated from my language to
> english by me)

Basically the server you are running now is unable to read the data
files you have. This is to do with the way the postgresql binaries have
been compiled.

My first guess is that the new postgresql binaries are 64 bit but the
old install was 32 bit. (I don't actually know the conditions for the
MAXALIGN value)

Have you reinstalled the same version of ubuntu? (and postgresql) I am
assuming it is on the same hardware.

Did you get the same postgresql package or did you build from source?
If you built from source before you need to assign the same ./configure
options as you did previously.




--

Shane Ambler
pgSQL (at) Sheeky (dot) Biz

Get Sheeky @ http://Sheeky.Biz

Re: Server format and recovery

From
Tom Lane
Date:
Shane Ambler <pgsql@Sheeky.Biz> writes:
> M�rcio Aguiar Ribeiro wrote:
>> "FATAL:  database files are incompatible with server
>> The database cluster was initialized with MAXALIGN 0, but the server
>> waas compiled with MAXALIGN 4." (translated from my language to
>> english by me)

> My first guess is that the new postgresql binaries are 64 bit but the
> old install was 32 bit. (I don't actually know the conditions for the
> MAXALIGN value)

That's what I'm guessing too; see the previous report here:

http://archives.postgresql.org/pgsql-admin/2007-12/msg00254.php
http://archives.postgresql.org/pgsql-admin/2008-01/msg00023.php

The symptoms are a bit different (eg, large value instead of zero
for MAXALIGN) but that's not too surprising considering that 8.1
and 8.2 have different sets of fields in pg_control.

You'll need to get binaries that matched your originals and then
reinstall the database from your backup.

            regards, tom lane

Re: Server format and recovery

From
"Márcio Aguiar Ribeiro"
Date:
Thanks for the fast response!

The hardware was the same of the previous, but I'm not sure about
Ubuntu version.
As I got the whole old server backup, I know that the Postgres version
is 8.2 by looking at the PGVERSION file. Not sure if it is 8.2.5, but
I imagined that it wouldn't make much difference.

I installed the postgres via apt-get, and the installation structure
was the same of the previous one. I even tried to copy the whole
Postgres  installation from the backup, but when I try to start the
server with the postgres command, I receive an error from the OS
saying it was impossible to execute the binaries. Now I'm thinking
that a 64bit version was installed.

I'll try to investigate this a little further and keep up with you.

Thanks for the help!

On Fri, Apr 25, 2008 at 11:51 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Shane Ambler <pgsql@Sheeky.Biz> writes:
>
> > Márcio Aguiar Ribeiro wrote:
>  >> "FATAL:  database files are incompatible with server
>  >> The database cluster was initialized with MAXALIGN 0, but the server
>  >> waas compiled with MAXALIGN 4." (translated from my language to
>  >> english by me)
>
>
> > My first guess is that the new postgresql binaries are 64 bit but the
>  > old install was 32 bit. (I don't actually know the conditions for the
>  > MAXALIGN value)
>
>  That's what I'm guessing too; see the previous report here:
>
>  http://archives.postgresql.org/pgsql-admin/2007-12/msg00254.php
>  http://archives.postgresql.org/pgsql-admin/2008-01/msg00023.php
>
>  The symptoms are a bit different (eg, large value instead of zero
>  for MAXALIGN) but that's not too surprising considering that 8.1
>  and 8.2 have different sets of fields in pg_control.
>
>  You'll need to get binaries that matched your originals and then
>  reinstall the database from your backup.
>
>                         regards, tom lane
>



--
Marcio Aguiar Ribeiro

Re: Server format and recovery

From
"Márcio Aguiar Ribeiro"
Date:
The problem was that! I reinstalled the OS using the 64bit version and
copied the postgres data dir and it worked!

Thank you!

On Fri, Apr 25, 2008 at 12:39 PM, Márcio Aguiar Ribeiro
<aguiar.marcio@gmail.com> wrote:
> Thanks for the fast response!
>
>  The hardware was the same of the previous, but I'm not sure about
>  Ubuntu version.
>  As I got the whole old server backup, I know that the Postgres version
>  is 8.2 by looking at the PGVERSION file. Not sure if it is 8.2.5, but
>  I imagined that it wouldn't make much difference.
>
>  I installed the postgres via apt-get, and the installation structure
>  was the same of the previous one. I even tried to copy the whole
>  Postgres  installation from the backup, but when I try to start the
>  server with the postgres command, I receive an error from the OS
>  saying it was impossible to execute the binaries. Now I'm thinking
>  that a 64bit version was installed.
>
>  I'll try to investigate this a little further and keep up with you.
>
>  Thanks for the help!
>
>
>
>  On Fri, Apr 25, 2008 at 11:51 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>  > Shane Ambler <pgsql@Sheeky.Biz> writes:
>  >
>  > > Márcio Aguiar Ribeiro wrote:
>  >  >> "FATAL:  database files are incompatible with server
>  >  >> The database cluster was initialized with MAXALIGN 0, but the server
>  >  >> waas compiled with MAXALIGN 4." (translated from my language to
>  >  >> english by me)
>  >
>  >
>  > > My first guess is that the new postgresql binaries are 64 bit but the
>  >  > old install was 32 bit. (I don't actually know the conditions for the
>  >  > MAXALIGN value)
>  >
>  >  That's what I'm guessing too; see the previous report here:
>  >
>  >  http://archives.postgresql.org/pgsql-admin/2007-12/msg00254.php
>  >  http://archives.postgresql.org/pgsql-admin/2008-01/msg00023.php
>  >
>  >  The symptoms are a bit different (eg, large value instead of zero
>  >  for MAXALIGN) but that's not too surprising considering that 8.1
>  >  and 8.2 have different sets of fields in pg_control.
>  >
>  >  You'll need to get binaries that matched your originals and then
>  >  reinstall the database from your backup.
>  >
>  >                         regards, tom lane
>  >
>
>
>
>  --
>  Marcio Aguiar Ribeiro
>



--
Marcio Aguiar Ribeiro
Rio de Janeiro/RJ, Brasil