Backing Up with pg_dump

1. Creating Logical Backup

pg_dump -h host -U user shop > shop.sql

2. Dumping to File

pg_dump -d shop -f shop.sql

3. Using Custom Format

pg_dump -Fc -d shop -f shop.dump            # binary, compressed, parallel restore

4. Using Directory Format

pg_dump -Fd -j 8 -d shop -f /backups/shop.d  # parallel dump

5. Using Plain SQL Format

pg_dump -Fp -d shop > shop.sql    # readable; restore with psql

6. Using Tar Format

pg_dump -Ft -d shop -f shop.tar
FormatParallel DumpParallel Restore
plain (p)NoNo
custom (c)NoYes
directory (d)YesYes
tar (t)NoNo

7. Dumping Specific Tables

pg_dump -t public.orders -t public.customers -Fc shop > subset.dump

8. Dumping Specific Schemas

pg_dump -n app -n reporting -Fc shop > app.dump

9. Excluding Tables

pg_dump -T 'audit_*' -T 'temp_*' -Fc shop > shop.dump

10. Excluding Schemas

pg_dump -N 'temp_*' -Fc shop > shop.dump

11. Dumping Schema Only

pg_dump --schema-only -Fc shop > schema.dump

12. Dumping Data Only

pg_dump --data-only -Fc shop > data.dump

13. Using Parallel Dump

pg_dump -Fd -j 8 -Z 6 -d shop -f /backups/shop.d
Note: Parallel dump requires -Fd (directory) format. Use one job per CPU/disk.

14. Dumping All Databases

pg_dumpall -f cluster.sql               # roles + tablespaces + all DBs (plain only)
pg_dumpall --globals-only -f globals.sql

15. Dumping Only Roles

pg_dumpall --roles-only -f roles.sql