1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-13 07:41:39 +03:00

pg_resetxlog: add option to set oldest xid & use by pg_upgrade

Add pg_resetxlog -u option to set the oldest xid in pg_control.
Previously -x set this value be -2 billion less than the -x value.
However, this causes the server to immediately scan all relation's
relfrozenxid so it can advance pg_control's oldest xid to be inside the
autovacuum_freeze_max_age range, which is inefficient and might disrupt
diagnostic recovery.  pg_upgrade will use this option to better create
the new cluster to match the old cluster.

Reported-by: Jason Harvey, Floris Van Nee

Discussion: https://postgr.es/m/20190615183759.GB239428@rfd.leadboat.com, 87da83168c644fd9aae38f546cc70295@opammb0562.comp.optiver.com

Author: Bertrand Drouvot

Backpatch-through: 9.6
This commit is contained in:
Bruce Momjian
2021-07-26 22:38:15 -04:00
parent 24ba1a87e4
commit 74cf7d46a9
5 changed files with 85 additions and 32 deletions

View File

@ -297,6 +297,26 @@ PostgreSQL documentation
</listitem>
</varlistentry>
<varlistentry>
<term><option>-u <replaceable class="parameter">xid</replaceable></option></term>
<term><option>--oldest-transaction-id=<replaceable class="parameter">xid</replaceable></option></term>
<listitem>
<para>
Manually set the oldest unfrozen transaction ID.
</para>
<para>
A safe value can be determined by looking for the numerically smallest
file name in the directory <filename>pg_xact</filename> under the data directory
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 <filename>0007</filename> is the smallest entry
in <filename>pg_xact</filename>, <literal>-u 0x700000</literal> will work (five
trailing zeroes provide the proper multiplier).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-x <replaceable class="parameter">xid</replaceable></option></term>
<term><option>--next-transaction-id=<replaceable class="parameter">xid</replaceable></option></term>