There are two different tools in PostgreSQL server:
pg_dump
pg_basebackup
What is the difference between these tools?
Which one to use to create database backup?
There are two different tools in PostgreSQL server:
pg_dump
pg_basebackup
What is the difference between these tools?
Which one to use to create database backup?
pg_dump
creates a logical backup, that is a series of SQL statements that, when executed, create a new database that is logically like the original one.
pg_basebackup
creates a physical backup, that is a copy of the files that constitute the database cluster. You have to use recovery to make such a backup consistent.
The main differences are:
pg_dump
typically takes longer and creates a smaller backup.
With pg_dump
you can back up one database or parts of a database, while pg_basebackup
always backs up the whole cluster.
A backup created by pg_dump
is complete, while you need WAL archives to restore a backup created with pg_basebackup
(unless you used the default option -X stream
, in which case the backup contains the WAL segments required to make the backup consistent).
With a logical backup you can only restore the state of the database at backup time, while with a physical backup you can restore any point in time after the end of the backup, provided you archived the required WAL segments.
You need pg_basebackup
to create a standby server, pg_dump
won't do.