Skip to content

docs: Point-in-Time Recovery for Postgres#1134

Merged
paulocsanz merged 6 commits into
mainfrom
pc/postgres-pitr-docs
May 12, 2026
Merged

docs: Point-in-Time Recovery for Postgres#1134
paulocsanz merged 6 commits into
mainfrom
pc/postgres-pitr-docs

Conversation

@paulocsanz
Copy link
Copy Markdown
Contributor

@paulocsanz paulocsanz commented Apr 27, 2026

New reference page under Volumes covering the PITR feature (/volumes/point-in-time-recovery).

What's covered

  • How PITR works (pgBackRest continuous WAL archiving + base backups, WAL replay)
  • Enable flow: creates bucket, sets env vars, redeploys (HA: all nodes at once — brief downtime)
  • Restoring to a target timestamp (UI flow + restore-fork behavior)
  • Coverage timeline: green/gap bands, no-backups-yet state
  • Disable flow (env var patch + bucket deletion)
  • Cost + limitations (Pro-only, post-enable window, single-node restore fork)

Sidebar

Added next to the existing Backups page under Volumes.

Test plan

  • pnpm dev and verify the page renders
  • Confirm sidebar entry shows under Volumes

New reference page under Volumes covering the PITR feature: how it works,
the standalone vs HA enable flows (incl. the rolling-restart sequence),
restoring to a target timestamp, the no-snapshot / coverage-gap warnings
the UI surfaces, the disable flow (and bucket-retention behavior), cost,
and limitations.

Sibling to /volumes/backups; sidebar entry added next to Backups.
@railway-app
Copy link
Copy Markdown

railway-app Bot commented Apr 27, 2026

🚅 Deployed to the docs-pr-1134 environment in 🪄 *.railway.com

Service Status Web Updated (UTC)
Docs Frontend ✅ Success (View Logs) Web May 12, 2026 at 3:43 am
6 services not affected by this PR
  • devicons
  • OG
  • Geofeed
  • Frontend Redis
  • Blog
  • Turnout

@railway-app railway-app Bot temporarily deployed to *.railway.com / docs-pr-1134 April 27, 2026 13:55 Destroyed
Daily-only is broken: snapshot retention is 6 days, WAL retention is 7 —
the oldest day of the WAL window has no base snapshot to replay onto.
Weekly snapshots (27-day retention) close the gap. Both schedules are
required and Enable PITR adds them automatically; document that removing
either breaks the feature.
@railway-app railway-app Bot temporarily deployed to *.railway.com / docs-pr-1134 April 27, 2026 14:46 Destroyed
The previous draft documented the wal-g design. The implementation has
since pivoted to pgBackRest baked into the Postgres image (direct-to-S3,
async push) and restore now creates a new sibling service rather than
mutating the source in place. Key updates:

- wal-g → pgBackRest, with the WAL_ARCHIVE_* tool-agnostic env contract
  replacing the wal-g credential references.
- Base backups taken by pgBackRest itself (full + incremental), not by
  Railway snapshot schedules — drops the daily/weekly schedule
  requirement that was a workaround for snapshot-as-base.
- Restore creates <source>-restored-YYYYMMDD-HHMM as a new service;
  source service stays online and untouched. Same flow for standalone
  and HA — drops the "HA restore requires full cluster downtime" claim.
- Coverage timeline reads pgBackRest catalog directly: green band +
  red diagonal stripes for gaps; upper bound is latest archived WAL,
  not current time.
- Standalone disable stages a patch (env vars + bucket deletion) for
  user review; HA disable runs imperatively and retains the bucket.
- Drops the arm64 limitation (was wal-g specific) and the "consider
  pgBackRest" hedge (we use it now).
@railway-app railway-app Bot temporarily deployed to *.railway.com / docs-pr-1134 May 4, 2026 20:44 Destroyed
@paulocsanz paulocsanz changed the title docs: Point-in-time Recovery for Postgres docs: Point-in-Time Recovery for Postgres May 12, 2026
@railway-app railway-app Bot temporarily deployed to *.railway.com / docs-pr-1134 May 12, 2026 03:40 Destroyed
@railway-app railway-app Bot temporarily deployed to *.railway.com / docs-pr-1134 May 12, 2026 03:41 Destroyed
@railway-app railway-app Bot temporarily deployed to *.railway.com / docs-pr-1134 May 12, 2026 03:42 Destroyed
@paulocsanz paulocsanz merged commit 9f31d1a into main May 12, 2026
7 checks passed
@paulocsanz paulocsanz deleted the pc/postgres-pitr-docs branch May 12, 2026 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant