我正在转移数据库,这是转移网站的一部分。我以前没有使用过 PostgreSQL,所以假设我对它不太了解(我主要使用 MySQL)。我们不能直接连接机器来使用该pg_dump -h host1 dbname | psql -h host2 dbname
技巧。
我曾经使用DROP 命令将所有数据库转储到 SQL 文件中。然后我通过 SCP 下载并将备份上传到目标服务器。但由于此错误,pg_dumpall -c
我无法导入相同的导出文件: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 应用程序与数据库保持持久连接所致。我们在 RHEL 16 上使用 Phusion Passenger 3.0.11 和 Apache 2.2.21。
我曾经touch tmp/restart.txt
告诉 Passenger 在导入之前重新启动网站,但它似乎并没有杀死现有的工作人员。
答案1
由于 Phusion Passenger,您需要先关闭 Apache 才能恢复数据库。您可以在apachectl graceful-stop
恢复数据库之前使用,然后在恢复数据库apachectl start
之后使用。在此过程中,可能有一种更优雅的方式来创建“系统维护”登录页面,但我会让真正的系统管理员对此进行补充(以及我遗漏的任何其他内容)。