Снять полный, дифференциальный и инкрементальный бэкапы через pgBackRest
PostgreSQLБэкап и PITRКоманда
sudo -u postgres pgbackrest --stanza=<stanza> --type=full backup
sudo -u postgres pgbackrest --stanza=<stanza> --type=diff backup # changes since the last full
sudo -u postgres pgbackrest --stanza=<stanza> --type=incr backup # changes since the last backup of any type
# cron example (postgres user): full on Sunday, diff on other days
# 30 1 * * 0 pgbackrest --stanza=<stanza> --type=full backup
# 30 1 * * 1-6 pgbackrest --stanza=<stanza> --type=diff backupЧто делает
Полный бэкап копирует весь кластер, diff — файлы, изменённые после последнего full, incr — файлы, изменённые после последнего бэкапа любого типа; в конце проверяется, что нужный WAL заархивирован, и автоматически выполняется expire согласно политике хранения.
Когда использовать
В регулярном расписании бэкапов: обычно еженедельный full + ежедневный diff/incr, на больших кластерах — более частые incr.
Внимание
Без предварительного full запросы diff/incr автоматически повышаются до full. Более длинная цепочка incr увеличивает время восстановления и зависимости; потеря одного бэкапа в цепочке делает последующие непригодными. Чтобы разгрузить primary, снимайте бэкап со standby с backup-standby=y (primary всё равно нужен для координации).
Связанные материалы
- Настроить архивирование WAL для pgBackRest (archive-push/archive-get)
- Создать stanza pgBackRest и проверить архивирование (stanza-create/check)
- Показать каталог бэкапов pgBackRest и диапазон архива WAL (info)
- Восстановить последний бэкап через pgBackRest
- Восстановить на момент времени через pgBackRest (PITR, --type=time)
- Быстро пересоздать standby через delta restore pgBackRest