mirror of https://github.com/postgres/postgres
recovery.conf settings are now set in postgresql.conf (or other GUC sources). Currently, all the affected settings are PGC_POSTMASTER; this could be refined in the future case by case. Recovery is now initiated by a file recovery.signal. Standby mode is initiated by a file standby.signal. The standby_mode setting is gone. If a recovery.conf file is found, an error is issued. The trigger_file setting has been renamed to promote_trigger_file as part of the move. The documentation chapter "Recovery Configuration" has been integrated into "Server Configuration". pg_basebackup -R now appends settings to postgresql.auto.conf and creates a standby.signal file. Author: Fujii Masao <masao.fujii@gmail.com> Author: Simon Riggs <simon@2ndquadrant.com> Author: Abhijit Menon-Sen <ams@2ndquadrant.com> Author: Sergei Kornilov <sk@zsrv.org> Discussion: https://www.postgresql.org/message-id/flat/607741529606767@web3g.yandex.ru/pull/34/head
parent
ab69ea9fee
commit
2dedf4d9a8
@ -1,510 +0,0 @@ |
|||||||
<!-- doc/src/sgml/recovery-config.sgml --> |
|
||||||
|
|
||||||
<chapter id="recovery-config"> |
|
||||||
<title>Recovery Configuration</title> |
|
||||||
|
|
||||||
<indexterm> |
|
||||||
<primary>configuration</primary> |
|
||||||
<secondary>of recovery</secondary> |
|
||||||
<tertiary>of a standby server</tertiary> |
|
||||||
</indexterm> |
|
||||||
|
|
||||||
<para> |
|
||||||
This chapter describes the settings available in the |
|
||||||
<filename>recovery.conf</filename><indexterm><primary>recovery.conf</primary></indexterm> |
|
||||||
file. They apply only for the duration of the |
|
||||||
recovery. They must be reset for any subsequent recovery you wish to |
|
||||||
perform. They cannot be changed once recovery has begun. |
|
||||||
</para> |
|
||||||
|
|
||||||
<para> |
|
||||||
Settings in <filename>recovery.conf</filename> are specified in the format |
|
||||||
<literal>name = 'value'</literal>. One parameter is specified per line. |
|
||||||
Hash marks (<literal>#</literal>) designate the rest of the |
|
||||||
line as a comment. To embed a single quote in a parameter |
|
||||||
value, write two quotes (<literal>''</literal>). |
|
||||||
</para> |
|
||||||
|
|
||||||
<para> |
|
||||||
A sample file, <filename>share/recovery.conf.sample</filename>, |
|
||||||
is provided in the installation's <filename>share/</filename> directory. |
|
||||||
</para> |
|
||||||
|
|
||||||
<sect1 id="archive-recovery-settings"> |
|
||||||
|
|
||||||
<title>Archive Recovery Settings</title> |
|
||||||
<variablelist> |
|
||||||
|
|
||||||
<varlistentry id="restore-command" xreflabel="restore_command"> |
|
||||||
<term><varname>restore_command</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>restore_command</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
The local shell command to execute to retrieve an archived segment of |
|
||||||
the WAL file series. This parameter is required for archive recovery, |
|
||||||
but optional for streaming replication. |
|
||||||
Any <literal>%f</literal> in the string is |
|
||||||
replaced by the name of the file to retrieve from the archive, |
|
||||||
and any <literal>%p</literal> is replaced by the copy destination path name |
|
||||||
on the server. |
|
||||||
(The path name is relative to the current working directory, |
|
||||||
i.e., the cluster's data directory.) |
|
||||||
Any <literal>%r</literal> is replaced by the name of the file containing the |
|
||||||
last valid restart point. That is the earliest file that must be kept |
|
||||||
to allow a restore to be restartable, so this information can be used |
|
||||||
to truncate the archive to just the minimum required to support |
|
||||||
restarting from the current restore. <literal>%r</literal> is typically only |
|
||||||
used by warm-standby configurations |
|
||||||
(see <xref linkend="warm-standby"/>). |
|
||||||
Write <literal>%%</literal> to embed an actual <literal>%</literal> character. |
|
||||||
</para> |
|
||||||
|
|
||||||
<para> |
|
||||||
It is important for the command to return a zero exit status |
|
||||||
only if it succeeds. The command <emphasis>will</emphasis> be asked for file |
|
||||||
names that are not present in the archive; it must return nonzero |
|
||||||
when so asked. Examples: |
|
||||||
<programlisting> |
|
||||||
restore_command = 'cp /mnt/server/archivedir/%f "%p"' |
|
||||||
restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows |
|
||||||
</programlisting> |
|
||||||
An exception is that if the command was terminated by a signal (other |
|
||||||
than <systemitem>SIGTERM</systemitem>, which is used as part of a |
|
||||||
database server shutdown) or an error by the shell (such as command |
|
||||||
not found), then recovery will abort and the server will not start up. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="archive-cleanup-command" xreflabel="archive_cleanup_command"> |
|
||||||
<term><varname>archive_cleanup_command</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>archive_cleanup_command</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
This optional parameter specifies a shell command that will be executed |
|
||||||
at every restartpoint. The purpose of |
|
||||||
<varname>archive_cleanup_command</varname> is to provide a mechanism for |
|
||||||
cleaning up old archived WAL files that are no longer needed by the |
|
||||||
standby server. |
|
||||||
Any <literal>%r</literal> is replaced by the name of the file containing the |
|
||||||
last valid restart point. |
|
||||||
That is the earliest file that must be <emphasis>kept</emphasis> to allow a |
|
||||||
restore to be restartable, and so all files earlier than <literal>%r</literal> |
|
||||||
may be safely removed. |
|
||||||
This information can be used to truncate the archive to just the |
|
||||||
minimum required to support restart from the current restore. |
|
||||||
The <xref linkend="pgarchivecleanup"/> module |
|
||||||
is often used in <varname>archive_cleanup_command</varname> for |
|
||||||
single-standby configurations, for example: |
|
||||||
<programlisting>archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'</programlisting> |
|
||||||
Note however that if multiple standby servers are restoring from the |
|
||||||
same archive directory, you will need to ensure that you do not delete |
|
||||||
WAL files until they are no longer needed by any of the servers. |
|
||||||
<varname>archive_cleanup_command</varname> would typically be used in a |
|
||||||
warm-standby configuration (see <xref linkend="warm-standby"/>). |
|
||||||
Write <literal>%%</literal> to embed an actual <literal>%</literal> character in the |
|
||||||
command. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
If the command returns a nonzero exit status then a warning log |
|
||||||
message will be written. An exception is that if the command was |
|
||||||
terminated by a signal or an error by the shell (such as command not |
|
||||||
found), a fatal error will be raised. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="recovery-end-command" xreflabel="recovery_end_command"> |
|
||||||
<term><varname>recovery_end_command</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_end_command</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
This parameter specifies a shell command that will be executed once only |
|
||||||
at the end of recovery. This parameter is optional. The purpose of the |
|
||||||
<varname>recovery_end_command</varname> is to provide a mechanism for cleanup |
|
||||||
following replication or recovery. |
|
||||||
Any <literal>%r</literal> is replaced by the name of the file containing the |
|
||||||
last valid restart point, like in <xref linkend="archive-cleanup-command"/>. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
If the command returns a nonzero exit status then a warning log |
|
||||||
message will be written and the database will proceed to start up |
|
||||||
anyway. An exception is that if the command was terminated by a |
|
||||||
signal or an error by the shell (such as command not found), the |
|
||||||
database will not proceed with startup. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
</variablelist> |
|
||||||
|
|
||||||
</sect1> |
|
||||||
|
|
||||||
<sect1 id="recovery-target-settings"> |
|
||||||
|
|
||||||
<title>Recovery Target Settings</title> |
|
||||||
|
|
||||||
<para> |
|
||||||
By default, recovery will recover to the end of the WAL log. The |
|
||||||
following parameters can be used to specify an earlier stopping point. |
|
||||||
At most one of <varname>recovery_target</varname>, |
|
||||||
<varname>recovery_target_lsn</varname>, <varname>recovery_target_name</varname>, |
|
||||||
<varname>recovery_target_time</varname>, or <varname>recovery_target_xid</varname> |
|
||||||
can be used; if more than one of these is specified in the configuration |
|
||||||
file, the last entry will be used. |
|
||||||
</para> |
|
||||||
|
|
||||||
<variablelist> |
|
||||||
<varlistentry id="recovery-target" xreflabel="recovery_target"> |
|
||||||
<term><varname>recovery_target</varname><literal> = 'immediate'</literal> |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_target</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
This parameter specifies that recovery should end as soon as a |
|
||||||
consistent state is reached, i.e. as early as possible. When restoring |
|
||||||
from an online backup, this means the point where taking the backup |
|
||||||
ended. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
Technically, this is a string parameter, but <literal>'immediate'</literal> |
|
||||||
is currently the only allowed value. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="recovery-target-name" xreflabel="recovery_target_name"> |
|
||||||
<term><varname>recovery_target_name</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_target_name</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
This parameter specifies the named restore point (created with |
|
||||||
<function>pg_create_restore_point()</function>) to which recovery will proceed. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="recovery-target-time" xreflabel="recovery_target_time"> |
|
||||||
<term><varname>recovery_target_time</varname> (<type>timestamp</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_target_time</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
This parameter specifies the time stamp up to which recovery |
|
||||||
will proceed. |
|
||||||
The precise stopping point is also influenced by |
|
||||||
<xref linkend="recovery-target-inclusive"/>. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="recovery-target-xid" xreflabel="recovery_target_xid"> |
|
||||||
<term><varname>recovery_target_xid</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_target_xid</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
This parameter specifies the transaction ID up to which recovery |
|
||||||
will proceed. Keep in mind |
|
||||||
that while transaction IDs are assigned sequentially at transaction |
|
||||||
start, transactions can complete in a different numeric order. |
|
||||||
The transactions that will be recovered are those that committed |
|
||||||
before (and optionally including) the specified one. |
|
||||||
The precise stopping point is also influenced by |
|
||||||
<xref linkend="recovery-target-inclusive"/>. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="recovery-target-lsn" xreflabel="recovery_target_lsn"> |
|
||||||
<term><varname>recovery_target_lsn</varname> (<type>pg_lsn</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_target_lsn</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
This parameter specifies the LSN of the write-ahead log location up |
|
||||||
to which recovery will proceed. The precise stopping point is also |
|
||||||
influenced by <xref linkend="recovery-target-inclusive"/>. This |
|
||||||
parameter is parsed using the system data type |
|
||||||
<link linkend="datatype-pg-lsn"><type>pg_lsn</type></link>. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
</variablelist> |
|
||||||
|
|
||||||
<para> |
|
||||||
The following options further specify the recovery target, and affect |
|
||||||
what happens when the target is reached: |
|
||||||
</para> |
|
||||||
|
|
||||||
<variablelist> |
|
||||||
<varlistentry id="recovery-target-inclusive" |
|
||||||
xreflabel="recovery_target_inclusive"> |
|
||||||
<term><varname>recovery_target_inclusive</varname> (<type>boolean</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_target_inclusive</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
Specifies whether to stop just after the specified recovery target |
|
||||||
(<literal>true</literal>), or just before the recovery target |
|
||||||
(<literal>false</literal>). |
|
||||||
Applies when <xref linkend="recovery-target-lsn"/>, |
|
||||||
<xref linkend="recovery-target-time"/>, or |
|
||||||
<xref linkend="recovery-target-xid"/> is specified. |
|
||||||
This setting controls whether transactions |
|
||||||
having exactly the target WAL location (LSN), commit time, or transaction ID, respectively, will |
|
||||||
be included in the recovery. Default is <literal>true</literal>. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="recovery-target-timeline" |
|
||||||
xreflabel="recovery_target_timeline"> |
|
||||||
<term><varname>recovery_target_timeline</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_target_timeline</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
Specifies recovering into a particular timeline. The default is |
|
||||||
to recover along the same timeline that was current when the |
|
||||||
base backup was taken. Setting this to <literal>latest</literal> recovers |
|
||||||
to the latest timeline found in the archive, which is useful in |
|
||||||
a standby server. Other than that you only need to set this parameter |
|
||||||
in complex re-recovery situations, where you need to return to |
|
||||||
a state that itself was reached after a point-in-time recovery. |
|
||||||
See <xref linkend="backup-timelines"/> for discussion. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="recovery-target-action" |
|
||||||
xreflabel="recovery_target_action"> |
|
||||||
<term><varname>recovery_target_action</varname> (<type>enum</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_target_action</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
Specifies what action the server should take once the recovery target is |
|
||||||
reached. The default is <literal>pause</literal>, which means recovery will |
|
||||||
be paused. <literal>promote</literal> means the recovery process will finish |
|
||||||
and the server will start to accept connections. |
|
||||||
Finally <literal>shutdown</literal> will stop the server after reaching the |
|
||||||
recovery target. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
The intended use of the <literal>pause</literal> setting is to allow queries |
|
||||||
to be executed against the database to check if this recovery target |
|
||||||
is the most desirable point for recovery. |
|
||||||
The paused state can be resumed by |
|
||||||
using <function>pg_wal_replay_resume()</function> (see |
|
||||||
<xref linkend="functions-recovery-control-table"/>), which then |
|
||||||
causes recovery to end. If this recovery target is not the |
|
||||||
desired stopping point, then shut down the server, change the |
|
||||||
recovery target settings to a later target and restart to |
|
||||||
continue recovery. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
The <literal>shutdown</literal> setting is useful to have the instance ready |
|
||||||
at the exact replay point desired. The instance will still be able to |
|
||||||
replay more WAL records (and in fact will have to replay WAL records |
|
||||||
since the last checkpoint next time it is started). |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
Note that because <filename>recovery.conf</filename> will not be renamed when |
|
||||||
<varname>recovery_target_action</varname> is set to <literal>shutdown</literal>, |
|
||||||
any subsequent start will end with immediate shutdown unless the |
|
||||||
configuration is changed or the <filename>recovery.conf</filename> file is |
|
||||||
removed manually. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
This setting has no effect if no recovery target is set. |
|
||||||
If <xref linkend="guc-hot-standby"/> is not enabled, a setting of |
|
||||||
<literal>pause</literal> will act the same as <literal>shutdown</literal>. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
</variablelist> |
|
||||||
</sect1> |
|
||||||
|
|
||||||
<sect1 id="standby-settings"> |
|
||||||
|
|
||||||
<title>Standby Server Settings</title> |
|
||||||
<variablelist> |
|
||||||
|
|
||||||
<varlistentry id="standby-mode" xreflabel="standby_mode"> |
|
||||||
<term><varname>standby_mode</varname> (<type>boolean</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>standby_mode</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
Specifies whether to start the <productname>PostgreSQL</productname> server as |
|
||||||
a standby. If this parameter is <literal>on</literal>, the server will |
|
||||||
not stop recovery when the end of archived WAL is reached, but |
|
||||||
will keep trying to continue recovery by fetching new WAL segments |
|
||||||
using <varname>restore_command</varname> |
|
||||||
and/or by connecting to the primary server as specified by the |
|
||||||
<varname>primary_conninfo</varname> setting. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
<varlistentry id="primary-conninfo" xreflabel="primary_conninfo"> |
|
||||||
<term><varname>primary_conninfo</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>primary_conninfo</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
Specifies a connection string to be used for the standby server |
|
||||||
to connect with the primary. This string is in the format |
|
||||||
described in <xref linkend="libpq-connstring"/>. If any option is |
|
||||||
unspecified in this string, then the corresponding environment |
|
||||||
variable (see <xref linkend="libpq-envars"/>) is checked. If the |
|
||||||
environment variable is not set either, then |
|
||||||
defaults are used. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
The connection string should specify the host name (or address) |
|
||||||
of the primary server, as well as the port number if it is not |
|
||||||
the same as the standby server's default. |
|
||||||
Also specify a user name corresponding to a suitably-privileged role |
|
||||||
on the primary (see |
|
||||||
<xref linkend="streaming-replication-authentication"/>). |
|
||||||
A password needs to be provided too, if the primary demands password |
|
||||||
authentication. It can be provided in the |
|
||||||
<varname>primary_conninfo</varname> string, or in a separate |
|
||||||
<filename>~/.pgpass</filename> file on the standby server (use |
|
||||||
<literal>replication</literal> as the database name). |
|
||||||
Do not specify a database name in the |
|
||||||
<varname>primary_conninfo</varname> string. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
This setting has no effect if <varname>standby_mode</varname> is <literal>off</literal>. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
<varlistentry id="primary-slot-name" xreflabel="primary_slot_name"> |
|
||||||
<term><varname>primary_slot_name</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>primary_slot_name</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
Optionally specifies an existing replication slot to be used when |
|
||||||
connecting to the primary via streaming replication to control |
|
||||||
resource removal on the upstream node |
|
||||||
(see <xref linkend="streaming-replication-slots"/>). |
|
||||||
This setting has no effect if <varname>primary_conninfo</varname> is not |
|
||||||
set. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
<varlistentry id="trigger-file" xreflabel="trigger_file"> |
|
||||||
<term><varname>trigger_file</varname> (<type>string</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>trigger_file</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
Specifies a trigger file whose presence ends recovery in the |
|
||||||
standby. Even if this value is not set, you can still promote |
|
||||||
the standby using <command>pg_ctl promote</command> or calling |
|
||||||
<function>pg_promote</function>. |
|
||||||
This setting has no effect if <varname>standby_mode</varname> is <literal>off</literal>. |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
<varlistentry id="recovery-min-apply-delay" xreflabel="recovery_min_apply_delay"> |
|
||||||
<term><varname>recovery_min_apply_delay</varname> (<type>integer</type>) |
|
||||||
<indexterm> |
|
||||||
<primary><varname>recovery_min_apply_delay</varname> recovery parameter</primary> |
|
||||||
</indexterm> |
|
||||||
</term> |
|
||||||
<listitem> |
|
||||||
<para> |
|
||||||
By default, a standby server restores WAL records from the |
|
||||||
primary as soon as possible. It may be useful to have a time-delayed |
|
||||||
copy of the data, offering opportunities to correct data loss errors. |
|
||||||
This parameter allows you to delay recovery by a fixed period of time, |
|
||||||
measured in milliseconds if no unit is specified. For example, if |
|
||||||
you set this parameter to <literal>5min</literal>, the standby will |
|
||||||
replay each transaction commit only when the system time on the standby |
|
||||||
is at least five minutes past the commit time reported by the master. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
It is possible that the replication delay between servers exceeds the |
|
||||||
value of this parameter, in which case no delay is added. |
|
||||||
Note that the delay is calculated between the WAL time stamp as written |
|
||||||
on master and the current time on the standby. Delays in transfer |
|
||||||
because of network lag or cascading replication configurations |
|
||||||
may reduce the actual wait time significantly. If the system |
|
||||||
clocks on master and standby are not synchronized, this may lead to |
|
||||||
recovery applying records earlier than expected; but that is not a |
|
||||||
major issue because useful settings of this parameter are much larger |
|
||||||
than typical time deviations between servers. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
The delay occurs only on WAL records for transaction commits. |
|
||||||
Other records are replayed as quickly as possible, which |
|
||||||
is not a problem because MVCC visibility rules ensure their effects |
|
||||||
are not visible until the corresponding commit record is applied. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
The delay occurs once the database in recovery has reached a consistent |
|
||||||
state, until the standby is promoted or triggered. After that the standby |
|
||||||
will end recovery without further waiting. |
|
||||||
</para> |
|
||||||
<para> |
|
||||||
This parameter is intended for use with streaming replication deployments; |
|
||||||
however, if the parameter is specified it will be honored in all cases. |
|
||||||
|
|
||||||
<varname>hot_standby_feedback</varname> will be delayed by use of this feature |
|
||||||
which could lead to bloat on the master; use both together with care. |
|
||||||
|
|
||||||
<warning> |
|
||||||
<para> |
|
||||||
Synchronous replication is affected by this setting when <varname>synchronous_commit</varname> |
|
||||||
is set to <literal>remote_apply</literal>; every <literal>COMMIT</literal> |
|
||||||
will need to wait to be applied. |
|
||||||
</para> |
|
||||||
</warning> |
|
||||||
</para> |
|
||||||
</listitem> |
|
||||||
</varlistentry> |
|
||||||
|
|
||||||
</variablelist> |
|
||||||
</sect1> |
|
||||||
|
|
||||||
</chapter> |
|
@ -1,158 +0,0 @@ |
|||||||
# ------------------------------- |
|
||||||
# PostgreSQL recovery config file |
|
||||||
# ------------------------------- |
|
||||||
# |
|
||||||
# Edit this file to provide the parameters that PostgreSQL needs to |
|
||||||
# perform an archive recovery of a database, or to act as a replication |
|
||||||
# standby. |
|
||||||
# |
|
||||||
# If "recovery.conf" is present in the PostgreSQL data directory, it is |
|
||||||
# read on postmaster startup. After successful recovery, it is renamed |
|
||||||
# to "recovery.done" to ensure that we do not accidentally re-enter |
|
||||||
# archive recovery or standby mode. |
|
||||||
# |
|
||||||
# This file consists of lines of the form: |
|
||||||
# |
|
||||||
# name = value |
|
||||||
# |
|
||||||
# Comments are introduced with '#'. |
|
||||||
# |
|
||||||
# The complete list of option names and allowed values can be found |
|
||||||
# in the PostgreSQL documentation. |
|
||||||
# |
|
||||||
#--------------------------------------------------------------------------- |
|
||||||
# ARCHIVE RECOVERY PARAMETERS |
|
||||||
#--------------------------------------------------------------------------- |
|
||||||
# |
|
||||||
# restore_command |
|
||||||
# |
|
||||||
# specifies the shell command that is executed to copy log files |
|
||||||
# back from archival storage. The command string may contain %f, |
|
||||||
# which is replaced by the name of the desired log file, and %p, |
|
||||||
# which is replaced by the absolute path to copy the log file to. |
|
||||||
# |
|
||||||
# This parameter is *required* for an archive recovery, but optional |
|
||||||
# for streaming replication. |
|
||||||
# |
|
||||||
# It is important that the command return nonzero exit status on failure. |
|
||||||
# The command *will* be asked for log files that are not present in the |
|
||||||
# archive; it must return nonzero when so asked. |
|
||||||
# |
|
||||||
# NOTE that the basename of %p will be different from %f; do not |
|
||||||
# expect them to be interchangeable. |
|
||||||
# |
|
||||||
#restore_command = '' # e.g. 'cp /mnt/server/archivedir/%f %p' |
|
||||||
# |
|
||||||
# |
|
||||||
# archive_cleanup_command |
|
||||||
# |
|
||||||
# specifies an optional shell command to execute at every restartpoint. |
|
||||||
# This can be useful for cleaning up the archive of a standby server. |
|
||||||
# |
|
||||||
#archive_cleanup_command = '' |
|
||||||
# |
|
||||||
# recovery_end_command |
|
||||||
# |
|
||||||
# specifies an optional shell command to execute at completion of recovery. |
|
||||||
# This can be useful for cleaning up after the restore_command. |
|
||||||
# |
|
||||||
#recovery_end_command = '' |
|
||||||
# |
|
||||||
#--------------------------------------------------------------------------- |
|
||||||
# RECOVERY TARGET PARAMETERS |
|
||||||
#--------------------------------------------------------------------------- |
|
||||||
# |
|
||||||
# By default, recovery will rollforward to the end of the WAL log. |
|
||||||
# If you want to stop rollforward at a specific point, you |
|
||||||
# must set a recovery target. |
|
||||||
# |
|
||||||
# You may set a recovery target either by transactionId, by name, by |
|
||||||
# timestamp or by WAL location (LSN). Recovery may either include or |
|
||||||
# exclude the transaction(s) with the recovery target value (i.e., |
|
||||||
# stop either just after or just before the given target, |
|
||||||
# respectively). |
|
||||||
# |
|
||||||
# |
|
||||||
#recovery_target_name = '' # e.g. 'daily backup 2011-01-26' |
|
||||||
# |
|
||||||
#recovery_target_time = '' # e.g. '2004-07-14 22:39:00 EST' |
|
||||||
# |
|
||||||
#recovery_target_xid = '' |
|
||||||
# |
|
||||||
#recovery_target_lsn = '' # e.g. '0/70006B8' |
|
||||||
# |
|
||||||
#recovery_target_inclusive = true |
|
||||||
# |
|
||||||
# |
|
||||||
# Alternatively, you can request stopping as soon as a consistent state |
|
||||||
# is reached, by uncommenting this option. |
|
||||||
# |
|
||||||
#recovery_target = 'immediate' |
|
||||||
# |
|
||||||
# |
|
||||||
# If you want to recover into a timeline other than the "main line" shown in |
|
||||||
# pg_control, specify the timeline number here, or write 'latest' to get |
|
||||||
# the latest branch for which there's a history file. |
|
||||||
# |
|
||||||
#recovery_target_timeline = 'latest' |
|
||||||
# |
|
||||||
# |
|
||||||
# If recovery_target_action = 'pause', recovery will pause when the |
|
||||||
# recovery target is reached. The pause state will continue until |
|
||||||
# pg_wal_replay_resume() is called. This setting has no effect if |
|
||||||
# no recovery target is set. If hot_standby is not enabled then the |
|
||||||
# server will shutdown instead, though you may request this in |
|
||||||
# any case by specifying 'shutdown'. |
|
||||||
# |
|
||||||
#recovery_target_action = 'pause' |
|
||||||
# |
|
||||||
#--------------------------------------------------------------------------- |
|
||||||
# STANDBY SERVER PARAMETERS |
|
||||||
#--------------------------------------------------------------------------- |
|
||||||
# |
|
||||||
# standby_mode |
|
||||||
# |
|
||||||
# When standby_mode is enabled, the PostgreSQL server will work as a |
|
||||||
# standby. It will continuously wait for the additional XLOG records, using |
|
||||||
# restore_command and/or primary_conninfo. |
|
||||||
# |
|
||||||
#standby_mode = off |
|
||||||
# |
|
||||||
# primary_conninfo |
|
||||||
# |
|
||||||
# If set, the PostgreSQL server will try to connect to the primary using this |
|
||||||
# connection string and receive XLOG records continuously. |
|
||||||
# |
|
||||||
#primary_conninfo = '' # e.g. 'host=localhost port=5432' |
|
||||||
# |
|
||||||
# If set, the PostgreSQL server will use the specified replication slot when |
|
||||||
# connecting to the primary via streaming replication to control resource |
|
||||||
# removal on the upstream node. This setting has no effect if primary_conninfo |
|
||||||
# is not set. |
|
||||||
# |
|
||||||
#primary_slot_name = '' |
|
||||||
# |
|
||||||
# By default, a standby server keeps restoring XLOG records from the |
|
||||||
# primary indefinitely. If you want to stop the standby mode, finish recovery |
|
||||||
# and open the system in read/write mode, specify a path to a trigger file. |
|
||||||
# The server will poll the trigger file path periodically and start as a |
|
||||||
# primary server when it's found. |
|
||||||
# |
|
||||||
#trigger_file = '' |
|
||||||
# |
|
||||||
# By default, a standby server restores XLOG records from the primary as |
|
||||||
# soon as possible. If you want to explicitly delay the replay of committed |
|
||||||
# transactions from the master, specify a minimum apply delay. For example, |
|
||||||
# if you set this parameter to 5min, the standby will replay each transaction |
|
||||||
# commit only when the system time on the standby is at least five minutes |
|
||||||
# past the commit time reported by the master. |
|
||||||
# |
|
||||||
#recovery_min_apply_delay = 0 |
|
||||||
# |
|
||||||
#--------------------------------------------------------------------------- |
|
||||||
# HOT STANDBY PARAMETERS |
|
||||||
#--------------------------------------------------------------------------- |
|
||||||
# |
|
||||||
# Hot Standby related parameters are listed in postgresql.conf |
|
||||||
# |
|
||||||
#--------------------------------------------------------------------------- |
|
Loading…
Reference in new issue