#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.