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

Восстановить последний бэкап через pgBackRest

PostgreSQLБэкап и PITR

Команда

# PostgreSQL must be stopped and PGDATA empty (otherwise use --delta)
sudo systemctl stop postgresql-16
sudo -u postgres pgbackrest --stanza=<stanza> --log-level-console=info restore
# From a specific backup: --set=<backup_label>
# When restoring to another server for testing, disable archiving:
# sudo -u postgres pgbackrest --stanza=<stanza> --archive-mode=off restore
sudo systemctl start postgresql-16

Что делает

Восстанавливает последний бэкап и записывает recovery.signal и restore_command; при запуске PostgreSQL воспроизводит весь заархивированный WAL до последней согласованной точки и выполняет promote на новом timeline.

Когда использовать

Когда каталог данных primary утерян/повреждён или при регулярной проверке того, что бэкапы восстанавливаются.

Внимание

Если восстановленный и старый кластеры одновременно архивируют в одну stanza, репозиторий повреждается; для тестовых восстановлений используйте --archive-mode=off. Под Patroni сначала поставьте кластер на паузу или остановите Patroni, иначе Patroni вмешается. Если существуют табличные пространства или пути вне PGDATA, проверьте опции --tablespace-map и link.

Открыть в DBAtlas →

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