pg_resetxlog
execute any data-modifying operations in the database before you dump,
as any such action is likely to make the corruption worse.
+
- The -o>, -x>, -e>,
- -m>, -O>,
- -c>
- and -l>
- options allow the next OID, next transaction ID, next transaction ID's
- epoch, next and oldest multitransaction ID, next multitransaction offset,
- oldest and newest transaction IDs for which the commit time can be retrieved,
- and WAL
- starting address values to be set manually. These are only needed when
- pg_resetxlog is unable to determine appropriate values
- by reading pg_control>. Safe values can be determined as
- follows:
+
+
Options
-
+
+
+ -f
- A safe value for the next transaction ID (-x>)
- can be determined by looking for the numerically largest
- file name in the directory pg_clog> under the data directory,
- adding one,
- and then multiplying by 1048576. Note that the file names are in
- hexadecimal. It is usually easiest to specify the option value in
- hexadecimal too. For example, if 0011> is the largest entry
- in pg_clog>, -x 0x1200000> will work (five
- trailing zeroes provide the proper multiplier).
+ Force pg_resetxlog to proceed even if it cannot determine
+ valid data for pg_control>, as explained above.
+
+
+ -n
- A safe value for the next multitransaction ID (first part of -m>)
- can be determined by looking for the numerically largest
- file name in the directory pg_multixact/offsets> under the
- data directory, adding one, and then multiplying by 65536.
- Conversely, a safe value for the oldest multitransaction ID (second part of
- -m>)
- can be determined by looking for the numerically smallest
- file name in the same directory and multiplying by 65536.
- As above, the file names are in hexadecimal, so the easiest way to do
- this is to specify the option value in hexadecimal and append four zeroes.
+ The -n> (no operation) option instructs
+ pg_resetxlog to print the values reconstructed from
+ 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 pg_resetxlog
+ to proceed for real.
+
+
+ -V
+ --version
+
Display version information, then exit.
+
+
+
+ -?
+ --help
+
+
+
+ The following options are only needed when
+ pg_resetxlog is unable to determine appropriate values
+ by reading pg_control>. Safe values can be determined as
+ described below. For values that take numeric arguments, hexadecimal
+ values can be specified by using the prefix 0x .
+
+
+
+
+ -c xid ,xid
- A safe value for the next multitransaction offset (-O>)
- can be determined by looking for the numerically largest
- file name in the directory pg_multixact/members> under the
- data directory, adding one, and then multiplying by 52352. As above,
- the file names are in hexadecimal. There is no simple recipe such as
- the ones above of appending zeroes.
+ Manually set the oldest and newest transaction IDs for which the commit
+ time can be retrieved.
-
-
A safe value for the oldest transaction ID for which the commit time can
- be retrieved (first part of -c> ) can be determined by looking
+ be retrieved (first part) can be determined by looking
for the numerically smallest file name in the directory
pg_commit_ts> under the data directory. Conversely, a safe
value for the newest transaction ID for which the commit time can be
- retrieved (second part of -c>) can be determined by looking for
- the numerically greatest file name in the same directory. As above, the
- file names are in hexadecimal.
+ retrieved (second part) can be determined by looking for the numerically
+ greatest file name in the same directory. The file names are in
+ hexadecimal.
+
+
+ -e xid_epoch
- The WAL starting address (-l>) should be
+ Manually set the next transaction ID's epoch.
+
+
+ The transaction ID epoch is not actually stored anywhere in the database
+ except in the field that is set by pg_resetxlog ,
+ so any value will work so far as the database itself is concerned.
+ You might need to adjust this value to ensure that replication
+ systems such as
Slony-I> and
+
Skytools> work correctly —
+ if so, an appropriate value should be obtainable from the state of
+ the downstream replicated database.
+
+
+
+
+
+ -l xlogfile
+
+ Manually set the WAL starting address.
+
+
+ The WAL starting address should be
larger than any WAL segment file name currently existing in
the directory pg_xlog> under the data directory.
These names are also in hexadecimal and have three parts. The first
+
+
+
+ -m mxid ,mxid
+
+ Manually set the next and oldest multitransaction ID.
+
+
+ A safe value for the next multitransaction ID (first part) can be
+ determined by looking for the numerically largest file name in the
+ directory pg_multixact/offsets> under the data directory,
+ adding one, and then multiplying by 65536 (0x10000). Conversely, a safe
+ value for the oldest multitransaction ID (second part of
+ -m>) can be determined by looking for the numerically smallest
+ file name in the same directory and multiplying by 65536. The file
+ names are in hexadecimal, so the easiest way to do this is to specify
+ the option value in hexadecimal and append four zeroes.
+
+
+
+
+ -o oid
+ Manually set the next OID.
+
+
There is no comparably easy way to determine a next OID that's beyond
the largest one in the database, but fortunately it is not critical to
get the next-OID setting right.
+
+
+ -O mxoff
- The transaction ID epoch is not actually stored anywhere in the database
- except in the field that is set by pg_resetxlog ,
- so any value will work so far as the database itself is concerned.
- You might need to adjust this value to ensure that replication
- systems such as
Slony-I> and
-
Skytools> work correctly —
- if so, an appropriate value should be obtainable from the state of
- the downstream replicated database.
+ Manually set the next multitransaction offset.
-
-
-
- The -n> (no operation) option instructs
- pg_resetxlog to print the values reconstructed from
- 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 pg_resetxlog
- to proceed for real.
-
+ A safe value can be determined by looking for the numerically largest
+ file name in the directory pg_multixact/members> under the
+ data directory, adding one, and then multiplying by 52352 (0xCC80).
+ The file names are in hexadecimal. There is no simple recipe such as
+ the ones for other options of appending zeroes.
+
+
+
- The -V> and --version> options print
- the
pg_resetxlog version and exit. The
- options -?> and --help> show supported arguments,
- and exit .
-
+ >
+ -x xid
+
+ Manually set the next transaction ID .
+
+ A safe value can be determined by looking for the numerically largest
+ file name in the directory pg_clog> under the data directory,
+ adding one,
+ and then multiplying by 1048576 (0x100000). Note that the file names are in
+ hexadecimal. It is usually easiest to specify the option value in
+ hexadecimal too. For example, if 0011> is the largest entry
+ in pg_clog>, -x 0x1200000> will work (five
+ trailing zeroes provide the proper multiplier).
+
+
+
+
+
+
See Also
+
+
+
+
+