aboutsummaryrefslogtreecommitdiff
path: root/contrib/pg_resetxlog/README.pg_resetxlog
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/pg_resetxlog/README.pg_resetxlog')
-rw-r--r--contrib/pg_resetxlog/README.pg_resetxlog39
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/pg_resetxlog/README.pg_resetxlog b/contrib/pg_resetxlog/README.pg_resetxlog
new file mode 100644
index 00000000000..f9521ee0d63
--- /dev/null
+++ b/contrib/pg_resetxlog/README.pg_resetxlog
@@ -0,0 +1,39 @@
+pg_resetxlog is a program to clear the WAL transaction log (stored in
+$PGDATA/pg_xlog/), replacing whatever had been in it with just a dummy
+shutdown-checkpoint record. It also regenerates the pg_control file
+if necessary.
+
+THIS PROGRAM WILL DESTROY VALUABLE LOG DATA!!! Don't run it unless you
+really need it!!!
+
+pg_resetxlog is primarily intended for disaster recovery --- that is,
+if your pg_control and/or xlog are hosed badly enough that Postgres refuses
+to start up, this program will get you past that problem and let you get to
+your data files. But realize that without the xlog, your data files may be
+corrupt due to partially-applied transactions, incomplete index-file
+updates, etc. You should dump your data, check it for accuracy, then initdb
+and reload.
+
+A secondary purpose is to cope with xlog format changes without requiring
+initdb. To use pg_resetxlog for this purpose, just be sure that you have
+cleanly shut down your old postmaster (if you're not sure, see the contrib
+module pg_controldata and run it to be sure the DB state is SHUTDOWN).
+Then run pg_resetxlog, and finally install and start the new version of
+the database software.
+
+To run the program, make sure your postmaster is not running, then
+(as the Postgres admin user) do
+
+ pg_resetxlog $PGDATA
+
+As a safety measure, the target data directory must be specified on the
+command line, it cannot be defaulted.
+
+If pg_resetxlog complains that it can't reconstruct valid data for pg_control,
+you can force it to invent plausible data values with
+
+ pg_resetxlog -f $PGDATA
+
+If this turns out to be necessary then you *definitely* should plan on
+immediate dump, initdb, reload --- any modifications you do to the database
+after "pg_resetxlog -f" would be likely to corrupt things even worse.