IT Academy

PostgreSQL: резервное копирование с pg_dump и pg_basebackup

Логические и физические бэкапы, форматы pg_dump, восстановление pg_restore и автоматизация через cron.

Эрлан Касымов8 августа 2026 г. 6 мин чтения 2173 просмотров

Логический бэкап

bash
pg_dump -U postgres -Fc -f app_$(date +%F).dump app
pg_dumpall -U postgres --globals-only > globals.sql

Формат -Fc (custom) сжат и позволяет выборочное восстановление.

Восстановление

bash
createdb -U postgres app_restored
pg_restore -U postgres -d app_restored -j 4 app_2026-09-01.dump
pg_restore -l app.dump | grep orders     # посмотреть содержимое

Физический бэкап

bash
pg_basebackup -U replicator -D /backup/base -Ft -z -P -X stream

Вместе с архивом WAL это даёт восстановление на любой момент времени (PITR).

Автоматизация

bash
# /etc/cron.d/pg-backup
15 2 * * * postgres pg_dump -Fc app > /backup/app_$(date +\%F).dump && find /backup -name 'app_*.dump' -mtime +14 -delete

Правило: бэкап без проверенного восстановления — это не бэкап. Раз в месяц восстанавливайте копию на тестовый сервер.

postgresqlbackup