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 recovery_target
,
recovery_target_lsn
, recovery_target_name
,
recovery_target_time
, or recovery_target_xid
can be used; if more than one of these is specified in the configuration
file, the last entry will be used.
recovery_target
= 'immediate'
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.
Technically, this is a string parameter, but 'immediate'
is currently the only allowed value.
recovery_target_name
(string
)
This parameter specifies the named restore point (created with
pg_create_restore_point()
) to which recovery will proceed.
recovery_target_time
(timestamp
)
This parameter specifies the time stamp up to which recovery will proceed. The precise stopping point is also influenced by recovery_target_inclusive.
recovery_target_xid
(string
)
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 recovery_target_inclusive.
recovery_target_lsn
(pg_lsn
)
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 recovery_target_inclusive. This
parameter is parsed using the system data type
pg_lsn
.
The following options further specify the recovery target, and affect what happens when the target is reached:
recovery_target_inclusive
(boolean
)
Specifies whether to stop just after the specified recovery target
(true
), or just before the recovery target
(false
).
Applies when recovery_target_lsn,
recovery_target_time, or
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 true
.
recovery_target_timeline
(string
)
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 latest
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 Section 25.3.5 for discussion.
recovery_target_action
(enum
)
Specifies what action the server should take once the recovery target is
reached. The default is pause
, which means recovery will
be paused. promote
means the recovery process will finish
and the server will start to accept connections.
Finally shutdown
will stop the server after reaching the
recovery target.
The intended use of the pause
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 pg_wal_replay_resume()
(see
Table 9.81), 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.
The shutdown
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).
Note that because recovery.conf
will not be renamed when
recovery_target_action
is set to shutdown
,
any subsequent start will end with immediate shutdown unless the
configuration is changed or the recovery.conf
file is
removed manually.
This setting has no effect if no recovery target is set.
If hot_standby is not enabled, a setting of
pause
will act the same as shutdown
.