Столкнемся ли мы с какой-либо проблемой во время выполнения в приложении, если выполняется pg_restore?

#java #sql #database #postgresql #pg-restore

#java #sql #База данных #postgresql #pg-восстановление

Вопрос:

Я новичок в восстановлении postgres. У нас есть приложение, в котором несколько служб используют postgres DB. Мы добавляем поддержку функций резервного копирования / восстановления для этого приложения.

Он примет дамп с использованием pg_dump. И когда пользователь запускает рабочий процесс восстановления, он вызывает «pg_restore».

Итак, если «pg_restore» запущен, и в это время приложение выполняет некоторые запросы, каково будет влияние? Будут ли какие-либо ошибки во время выполнения? Будут ли существующие соединения с БД удалены postgres во время pg_restore?

Ответ №1:

Нет, вы должны отключить пользователей перед запуском pg_restore .

pg_restore ожидается пустая база данных, но вы можете использовать опции --clean и --create удалить и заново создать базу данных. Теперь DROP DATABASE будет блокироваться до тех пор, пока последний сеанс не отключится от базы данных.

Итак, вам нужно сначала отключить сеансы, либо вызвав pg_terminate_backend функцию на соответствующих сеансах, либо используя DROP DATABASE ... (FORCE) , который существует с версии 13.