Skip site navigation (1) Skip section navigation (2)

Re: [HACKERS] For Review: Allow WAL information to recover corrupted

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: yuanjia lee <yuanjia_pg(at)yahoo(dot)com>
Cc: PostgreSQL-patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [HACKERS] For Review: Allow WAL information to recover corrupted
Date: 2006-04-26 02:18:41
Message-ID: 200604260218.k3Q2Ifk02254@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-patches
Patch attached and applied, with documentation additions.  Thanks.

---------------------------------------------------------------------------

yuanjia lee wrote:
> 
> Hi All
> 
> I had added an option -r to pg_resetxlog to enable the tool can rebuild the corrupted pg_control file from the old xlog files. 
> 
> here is the patch. Sorry I had tried to attached it to the mail, but it failed, I dont know why, here is the link:http://www.geocities.com/yuanjia_pg/pg_resetxlog.diff.txt
> 
> There are also some changes in the logic of other options.
> Option -n: only print out the control values in the existing pg_control file, if the file is corrupted , inform the use to rebuild it first only.
> Option -f: if pg_control file is fine, then reset the xlog file; if pg_control is corrupted , then try to rebuild the control file from old xlog file, if it fails, then just guessing the value, then reset the xlog file.
> 
>  The algorithm of restoring the pg_control value from old xlog file:
>  1. Retrieve all of the active xlog files from xlog directory into a list by increasing order, according their timeline, log id, segment id. (Tom had informed me that we can not know which segment file is latest just by the name itself, so before adding the segment file to the list, it should be checked that it is an active segment file.)
> 2. Search the list to find the oldest xlog file of the latest time line. (Although it is better to let the user to select the time line which is used for rebuild the xlog file, but I think there is not so necessary. I had tried to use only the last file in the latest time line, but I found that in many cases, there are possible that the last checkpoint record and the previous checkpoint record are stored separately in different segment file, so I had to search from the oldest one.)
> 3. Search the records from the oldest xlog file of latest time line to the latest xlog file of latest time line, if the checkpoint record has been found, update the latest checkpoint and previous checkpoint. 
> 
> Some of the code is borrowed from Tom Lane xlogdump.c file.
> 
> Hope for your advice.
> 
> Best Regards
> Yuanjia Lee
> 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 

-- 
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

In response to

pgsql-hackers by date

Next:From: Teodor SigaevDate: 2006-04-26 14:23:20
Subject: GIN - Generalized Inverted iNdex. Try 2.
Previous:From: Andrew DunstanDate: 2006-04-26 01:37:14
Subject: Re: Installation on Duel-Core Pentium XP

pgsql-patches by date

Next:From: Dhanaraj MDate: 2006-04-26 08:53:32
Subject: Patch for BUG #2073: Can't drop sequence when created via SERIAL column
Previous:From: Bruce MomjianDate: 2006-04-25 20:47:42
Subject: Re: PL/PGSQL: Dynamic Record Introspection

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group