10. Online Backup and Point-In-Time Recovery (PITR)

Online database backup can be roughly classified into two categories: logical and physical backups. While both have advantages and disadvantages, one disadvantage of logical backups is that they can be very time-consuming. In particular, it can take a long time to make a backup of a large database, and even longer to restore the database from the backup data. On the other hand, physical backups can be made and restored much more quickly, making them a very important and useful feature in practical systems.

In PostgreSQL, online physical full backups have been available since version 8.0. A snapshot of a running whole database cluster (i.e., physical backup data) is known as a base backup.

Point-in-Time Recovery (PITR), which has also been available since version 8.0, is the feature to restore a database cluster to any point in time using a base backup and archive logs created by the continuous archiving feature. For example, if you make a critical mistake (such as truncating all tables), this feature can be used to restore the database to the point just before the mistake was made.

In version 17, PostgreSQL has finally supported incremental backup feature.

In this chapter, following topics are described:

  • What is a base backup?
  • How does PITR work?
  • What is a timelineId?
  • What is a timeline history file?
  • How does Incremental backup in PostgreSQL work?
Historical Info

In versions 7.4 or earlier, PostgreSQL had supported only logical backups (logical full and partial backups, and data exports).