# recovery_target_action

> recovery_target_action sets the action to perform upon reaching the recovery target. It is a postmaster setting present in PG12–18; the latest recorded boot default is pause.
---

> [!NOTE]
> **Fact — official short description:** “Sets the action to perform upon reaching the recovery target.”

## Identity {#identity}

| Field | Value | Meaning |
| --- | --- | --- |
| Type | `enum` | Upstream pg_settings type |
| Context | `postmaster` | Requires a server restart |
| Unit | — | Raw unit |
| Range | — | Raw limits in the last observed version |
| Enum values | `pause`, `promote`, `shutdown` | — for non-enum types |
| Category | Write-Ahead Log / Recovery Target | Upstream classification |
| Latest boot value | `pause` | pause |
{.fields meta="-"}

## Lifecycle {#lifecycle}

| Fact | Value |
| --- | --- |
| First observed | PG12 |
| Present in | PG12–19 Beta 3 |
| Removed in | No |
| Introduction commit | [`2dedf4d9a899`](https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2dedf4d9a899b36d1a8ed29be5efbd1b31a8fe85) — Integrate recovery.conf into postgresql.conf |
| Commit date | 2018-11-25 |
| Discussion | [thread 1](https://www.postgresql.org/message-id/flat/607741529606767@web3g.yandex.ru/) |

## Default history {#default-history}

| Versions | Raw `boot_val` | Unit | Human value |
| --- | --- | --- | --- |
| PG12–19 Beta 3 | `pause` | — | pause |
{.full-width caption="Measured PG9.0–19 Beta 3 boot defaults"}

## How it works {#mechanism}

Selects what PostgreSQL does after it reaches a configured recovery target. The value is read when recovery starts.

pause leaves recovery paused for inspection, promote ends recovery and opens the server for normal service, and shutdown stops the server at the target. pause requires hot_standby for query inspection.

The setting has no effect without a stopping target. With shutdown, recovery.signal is not removed, so an unchanged restart reaches the target and shuts down again; remove or change the recovery configuration deliberately after validation.

## Tuning advice {#tuning-advice}

> [!TIP]
> **Advice.** These are workload-specific starting points and must be validated with measurements.

| Workload | Guidance |
| --- | --- |
| OLTP | This is not a steady-state performance knob. Set recovery_target_action only on an isolated recovery instance after recording target evidence, base backup, timeline, and expected boundary; rehearse and require a second-person review. |
| OLAP | For a large restore, budget WAL replay and inspection time first. Validate the reached point read-only; do not let heavy analytical queries delay or contaminate the recovery decision. |
| Small nodes | Prefer a backup tool that generates a controlled recovery configuration. Never leave target settings in ordinary primary/standby templates, and clean up signal files and targets afterward. |
{.full-width}

## Pigsty {#pigsty}

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

| Template | Effective value | Versus upstream boot | Source expression |
| --- | --- | --- | --- |
| OLTP | Unmodified | — | — |
| OLAP | Unmodified | — | — |
| CRIT | Unmodified | — | — |
| TINY | Unmodified | — | — |
{.full-width}

> [!CAUTION]
> **Advice — pending human review.** Fact from the current Pigsty template projection: OLTP: PG12–19 Beta 3 unmodified; OLAP: PG12–19 Beta 3 unmodified; CRIT: PG12–19 Beta 3 unmodified; TINY: PG12–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

## Common pitfalls {#common-pitfalls}

- Expecting an action when no stopping target is configured.
- Using pause with hot_standby disabled and expecting to inspect the database with queries.
- Using promote before the recovered state has been verified.
- Using shutdown and restarting with recovery.signal and the same target still present.
- Treating shutdown as permanent removal of later WAL; the next start still replays from the last checkpoint to the target.

## Related parameters {#related-parameters}

[`recovery_target`](/parameters/recovery-target/) · [`recovery_target_time`](/parameters/recovery-target-time/) · [`recovery_target_lsn`](/parameters/recovery-target-lsn/) · [`recovery_target_inclusive`](/parameters/recovery-target-inclusive/) · [`recovery_target_timeline`](/parameters/recovery-target-timeline/) · [`hot_standby`](/parameters/hot-standby/)

## References {#references}

- [PostgreSQL 19 Beta 3 — recovery_target_action](https://www.postgresql.org/docs/19/runtime-config-wal.html#GUC-RECOVERY-TARGET-ACTION)
- [PostgreSQL 19 release notes](https://www.postgresql.org/docs/19/release-19.html)
- [Machine-readable GUC export](/data/guc.jsonl)
