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: