Три утилиты, три разных уровня бэкапа — путаница возникает, когда пытаются взаимозаменить логический и физический бэкап там, где это не работает.

pg_dump -Fc mydb > mydb.dump                       # логический дамп одной БД
pg_restore -d mydb_new --clean --if-exists mydb.dump
pg_basebackup -D /backup/base -Ft -z -P -U replicator   # физическая копия кластера

pg_dump — логический: SQL-представление данных, можно восстановить одну таблицу из дампа целой БД, версии источника и назначения могут отличаться. pg_basebackup — физический: побайтовая копия PGDATA, восстанавливается только целиком, зато на её основе строится репликация и point-in-time recovery через WAL. Для одной таблицы — pg_dump -t, для кластера с минимальным RPO — pg_basebackup плюс архив WAL.

#postgresql #backup #sysadmin