DBAtlas · Атлас эксплуатации баз данных

Снять полный, дифференциальный и инкрементальный бэкапы через 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 всё равно нужен для координации).

Открыть в DBAtlas →

Связанные материалы