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
| Format | Parallel Dump | Parallel Restore |
|---|---|---|
| plain (p) | No | No |
| custom (c) | No | Yes |
| directory (d) | Yes | Yes |
| tar (t) | No | No |
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