Обсуждение: could not locate a valid checkpoint record
Hi all, We had a crash with our postgresql 7.4.5 and when we rebooted we have this message : [1-1] LOG: could not create IPv6 socket: Address family not supported by protocol [2-1] LOG: database system shutdown was interrupted at 2005-09-08 21:03:00 BST [3-1] LOG: could not open file "/var/lib/pgsql/data/pg_xlog/0000000000000000" (log file 0, segment 0): No such file or directory [4-1] LOG: invalid primary checkpoint record [5-1] LOG: could not open file "/var/lib/pgsql/data/pg_xlog/0000000000000000" (log file 0, segment 0): No such file or directory [6-1] LOG: invalid secondary checkpoint record [7-1] PANIC: could not locate a valid checkpoint record [2-1] LOG: startup process (PID 24513) was terminated by signal 6 [3-1] LOG: aborting startup due to startup process failure postgresql: Starting postgresql service: failed I tried ( after copying thes PGDATA dir obviously ) : pg_resetxlog /var/lib/pgsql/data/ -f After that postgreSQL starts but I realised that pg_database is empty ( it contains only template0 and template1 ) . If I type "psql myDB", with myDB being a database present before the crash, I have access to the psql shell but a "SELECT * from myDBtable" gives me the right table column name but empty !! myDB=# select * from myDBtable; id | use | data ----+-----+------ (0 rows) How can I get the data back? I still have all the PGDATA/base directory.
Dilipan Sebastiampillai <dilipan.sebastiampillai@framestore-cfc.com> writes: > I tried ( after copying thes PGDATA dir obviously ) : > pg_resetxlog /var/lib/pgsql/data/ -f > After that postgreSQL starts but I realised that pg_database is empty ( > it contains only template0 and template1 ) . It sounds like pg_resetxlog guessed at an XID counter that is too small and so all your data rows seem to be "in the future". You need to find out approximately where the XID counter had been. You can probably tell this by looking at the pg_clog directory; read the pg_resetxlog man page for details. I would suggest paying close attention to the other settable options for resetxlog, too --- if it got XID wrong then it likely got the others wrong as well. Once you get out of this I'd suggest a dump/initdb/restore to make sure your data is consistent; you may well have more problems than appear on the surface. Oh, and updating to the latest release of the 7.4 branch would be a good idea too ;-). There are some pretty serious known bugs in 7.4.5. regards, tom lane
thanks a lot Tom, it worked.<br /><br /> Dilipan<br /><br /><br /> Tom Lane wrote: <blockquote cite="mid10710.1126278473@sss.pgh.pa.us"type="cite"><pre wrap="">Dilipan Sebastiampillai <a class="moz-txt-link-rfc2396E" href="mailto:dilipan.sebastiampillai@framestore-cfc.com"><dilipan.sebastiampillai@framestore-cfc.com></a>writes: </pre><blockquotetype="cite"><pre wrap="">I tried ( after copying thes PGDATA dir obviously ) : pg_resetxlog /var/lib/pgsql/data/ -f </pre></blockquote><pre wrap=""> </pre><blockquote type="cite"><pre wrap="">Afterthat postgreSQL starts but I realised that pg_database is empty ( it contains only template0 and template1 ) . </pre></blockquote><pre wrap=""> It sounds like pg_resetxlog guessed at an XID counter that is too small and so all your data rows seem to be "in the future". You need to find out approximately where the XID counter had been. You can probably tell this by looking at the pg_clog directory; read the pg_resetxlog man page for details. I would suggest paying close attention to the other settable options for resetxlog, too --- if it got XID wrong then it likely got the others wrong as well. Once you get out of this I'd suggest a dump/initdb/restore to make sure your data is consistent; you may well have more problems than appear on the surface. Oh, and updating to the latest release of the 7.4 branch would be a good idea too ;-). There are some pretty serious known bugs in 7.4.5. regards, tom lane </pre></blockquote><br /><br /><pre class="moz-signature" cols="72">-- Dilipan Sebastiampillai Systems - DBA Framestore CFC 9 Noel Street London W1F 8GH tel : +44(0)20 7106 2907 <a class="moz-txt-link-freetext" href="http://www.framestore-cfc.com/">http://www.framestore-cfc.com/</a> </pre>