PostgreSQL 9.1 не будет восстановлен, потому что "пользователь подключен"

Я передаю базу данных как часть переноса веб-сайта. Я не использовал PostgreSQL раньше, поэтому предположим, что я мало что знаю об этом (я в основном использую MySQL). Мы не можем напрямую подключить машины, чтобы использовать pg_dump -h host1 dbname | psql -h host2 dbname трюк.

Я использовал pg_dumpall -c выгрузить все базы данных в файл SQL с помощью команд DROP. Затем я скачал и загрузил резервную копию на целевой сервер через SCP. Но я не могу импортировать тот же экспортированный файл, используя psql -U root postgres backup.sql из-за этой ошибки:

DROP DATABASE
ERROR:  database "exfi" is being accessed by other users
DETAIL:  There are 1 other session(s) using the database.

Я подозреваю, что это вызвано тем, что приложение Ruby on Rails поддерживает постоянное соединение с базой данных. Мы используем Phusion Passenger 3.0.11 с Apache 2.2.21 на RHEL 16.

Я использовал touch tmp/restart.txt попросить Пассажира перезапустить веб-сайт перед импортом, но он не убивает существующего работника.

1 ответ

Из-за Phusion Passenger Apache необходимо отключить, прежде чем вы сможете восстановить базу данных. Ты можешь использовать apachectl graceful-stop перед восстановлением базы данных, затем apachectl start после. Вероятно, есть более изящный способ сделать целевую страницу "Обслуживание системы" во время этого процесса, но я позволю настоящему сисадмину вмешаться в это (и все, что я пропустил).

Другие вопросы по тегам