{
  "slug": "point-in-time-recovery",
  "term": "Point-in-time recovery",
  "aliases": [
    "PITR"
  ],
  "definition": "Point-in-time recovery restores a database to a selected historical state by applying retained transaction-log history to a suitable backup.",
  "note": "In PostgreSQL 18 this uses a physical base backup, not a logical pg_dump export; replay restores the whole cluster, not one table. [pg-archive]",
  "advantages": [
    {
      "text": "Can stop replay before an unwanted later transaction.",
      "citationIds": [
        "pg-target"
      ]
    }
  ],
  "limitations": [
    {
      "text": "Recovery requires an uninterrupted WAL sequence from the backup start through the target.",
      "citationIds": [
        "pg-archive"
      ]
    }
  ],
  "related": [
    "wal-archiving",
    "recovery-target",
    "write-ahead-log",
    "backup-verification",
    "restore-test",
    "recovery-point-objective"
  ],
  "citations": [
    {
      "id": "pg-archive",
      "title": "PostgreSQL 18: Continuous Archiving and Point-in-Time Recovery",
      "url": "https://www.postgresql.org/docs/18/continuous-archiving.html",
      "accessed": "2026-10-14"
    },
    {
      "id": "pg-target",
      "title": "PostgreSQL 18: Recovery Target",
      "url": "https://www.postgresql.org/docs/18/runtime-config-wal.html#RUNTIME-CONFIG-WAL-RECOVERY-TARGET",
      "accessed": "2026-10-14"
    },
    {
      "id": "hesela-backup-evidence",
      "title": "Hesela: Backup verification is not a restore test",
      "url": "https://hesela.com/analyses/backup-verification-is-not-a-restore-test/",
      "accessed": "2026-10-14"
    }
  ],
  "status": "shipping",
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-14"
}
