Re: pg_resetxlog to clear backup start/end locations. - Mailing list pgsql-hackers
From | Kyotaro HORIGUCHI |
---|---|
Subject | Re: pg_resetxlog to clear backup start/end locations. |
Date | |
Msg-id | 20140627.122911.07964379.horiguchi.kyotaro@lab.ntt.co.jp Whole thread Raw |
In response to | Re: pg_resetxlog to clear backup start/end locations. (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>) |
Responses |
Re: pg_resetxlog to clear backup start/end locations.
|
List | pgsql-hackers |
Hello, I have finished the patches for all of 9.x. > I dont' touch what '-n' option shows and rewrite documents for > the option a bit. And '-n' won't show the changes of backup > location. -8.4: does not have backup locations in ControlFileData. 9.0-9.1: resetxlog_backuploc_9_0-9.1.patch: Add clearance of backupStartPoint. 9.2: resetxlog_backuploc_9_2.patch: Add clearance of backupStart/EndPoint and backupEndRequired 9.3: resetxlog_backuploc_9_3.patch: Ditto. (format of XLogRecPtr changed) 9.4-master: resetxlog_backuploc_9_4-master.patch: Add clearance of backupPoints. help message and html doc changed. With these patches, pg_resetxlog saves the stuck after recovery failure with wrongly placed backup label. regards, -- Kyotaro Horiguchi NTT Open Source Software Center diff --git a/doc/src/sgml/ref/pg_resetxlog.sgml b/doc/src/sgml/ref/pg_resetxlog.sgml index 34b0606..b543f04 100644 --- a/doc/src/sgml/ref/pg_resetxlog.sgml +++ b/doc/src/sgml/ref/pg_resetxlog.sgml @@ -175,12 +175,14 @@ PostgreSQL documentation </para> <para> + The <option>-n</> (no operation) option instructs <command>pg_resetxlog</command> to print the values reconstructedfrom - <filename>pg_control</> and values about to be changed, and then exit - without modifying anything. This is mainly a debugging tool, but can be - useful as a sanity check before allowing <command>pg_resetxlog</command> - to proceed for real. + + <filename>pg_control</> and significant values about to be changed, and + then exit without modifying anything. This is mainly a debugging tool, but + can be useful as a sanity check before allowing + <command>pg_resetxlog</command> to proceed for real. </para> <para> diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index 915a1ed..9a80775 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -354,6 +354,10 @@ main(int argc, char *argv[]) if (minXlogSegNo > newXlogSegNo) newXlogSegNo = minXlogSegNo; + ControlFile.backupStartPoint = InvalidXLogRecPtr; + ControlFile.backupEndPoint = InvalidXLogRecPtr; + ControlFile.backupEndRequired = false; + /* * If we had to guess anything, and -f was not given, just print the * guessed values and exit. Also printif -n is given. @@ -1083,7 +1087,7 @@ usage(void) printf(_(" -f force update to be done\n")); printf(_(" -l XLOGFILE force minimum WAL starting location for new transaction log\n")); printf(_(" -m MXID,MXID set next andoldest multitransaction ID\n")); - printf(_(" -n no update, just show what would be done (for testing)\n")); + printf(_(" -n no update, just show significant changes which would be done\n (for testing)\n")); printf(_(" -o OID set next OID\n")); printf(_(" -O OFFSET set next multitransactionoffset\n")); printf(_(" -V, --version output version information, then exit\n")); diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index 38d03a3..e25ad64 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -350,6 +350,10 @@ main(int argc, char *argv[]) if (minXlogSegNo > newXlogSegNo) newXlogSegNo = minXlogSegNo; + ControlFile.backupStartPoint = InvalidXLogRecPtr; + ControlFile.backupEndPoint = InvalidXLogRecPtr; + ControlFile.backupEndRequired = false; + /* * If we had to guess anything, and -f was not given, just print the * guessed values and exit. Also printif -n is given. diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index 92d98fc..dd1930c 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -341,6 +341,12 @@ main(int argc, char *argv[]) newXlogSeg = minXlogSeg; } + ControlFile.backupStartPoint.xlogid = 0; + ControlFile.backupStartPoint.xrecoff = 0; + ControlFile.backupEndPoint.xlogid = 0; + ControlFile.backupEndPoint.xrecoff = 0; + ControlFile.backupEndRequired = false; + /* * If we had to guess anything, and -f was not given, just print the * guessed values and exit. Also printif -n is given. diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index a120c6f..8ca1e2b 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -341,6 +341,9 @@ main(int argc, char *argv[]) newXlogSeg = minXlogSeg; } + ControlFile.backupStartPoint.xlogid = 0; + ControlFile.backupStartPoint.xrecoff = 0; + /* * If we had to guess anything, and -f was not given, just print the * guessed values and exit. Also printif -n is given.
pgsql-hackers by date: