postgrespro / pg_probackup

Backup and recovery manager for PostgreSQL
https://postgrespro.github.io/pg_probackup/
Other
712 stars 86 forks source link

Ошибка ERROR: Restore destination is not empty #574

Closed Mogaba closed 1 year ago

Mogaba commented 1 year ago

Изучаю pg_probackup, пробую бэкапить/восстановить базу по документации: https://postgrespro.github.io/pg_probackup/

Делаю бэкап командой: pg_probackup-12 backup -B /opt/pgbackup --instance sber -b FULL --stream --temp-slot -U pgbackup -d sber

Все проходит успешно, далее пытаюсь восстановить: pg_probackup-12 restore -B /opt/pgbackup --instance sber -i RLSY9Y

Выводится ошибка: ERROR: Restore destination is not empty: "/var/lib/postgresql/12/main"

Удаляю все из каталога "/var/lib/postgresql/12/main", после этого такая ошибка:

ERROR: Cannot open restore target file "/var/lib/postgresql/12/main/PG_VERSION": Permission denied
ERROR: Backup files restoring failed. Transfered bytes: 104kB, time elapsed: 0

Подскажите, пожалуйста, новичку, в чем проблема. ОС: Ubuntu 20.04 PostgreSQL: 12

daniel-95 commented 1 year ago

Добрый день. Если у вас запущен постгрес, то перед восстановлением остановите его. Также вам нужны права на директорию /var/lib/postgresql/12/main, с правами может быть проблема, если вы запустили постгрес с sudo

Mogaba commented 1 year ago

Спасибо, действительно, не было прав на запись в "/var/lib/postgresql/12/main". А можете подсказать, под каким пользователем желательно запускать восстановление: под тем же, который делал бэкап или под системным postgres? Или это не важно?

daniel-95 commented 1 year ago

Вообще, конечно, не важно, но на практике обычно из соображений безопасности (не только для бекапирования, а вообще для самых разных задач) создают пользователей с необходимыми для работы правами, и не более того. В идеале - бекапить и восстанавливать одним и тем же пользователем.