我的 trac 服务器最近开始出现问题。它运行的是一个非常过时的 Ubuntu 版本,我无法正确使用它apt-get
来纠正我遇到的问题。因此,我备份了机器并全新安装了 Ubuntu 12.04。
现在我有一个正确安装并运行 Postgres 9.1 的新服务器。我想从备份中获取旧的 Postgres 8.4 数据库,并在新安装时进行设置。我该怎么做呢?
到目前为止,我所做的是将旧的 Postgres 8.4 数据和 bin 目录从备份 (/var/lib/postgresql/8.4/main
和/usr/lib/postgresql/8.4/bin
) 复制到/tmp/postgres.old
新/tmp/postgres-bin.old
安装中。我停止使用 Postgres 9.1service postgres stop
并运行以下命令:
sudo -u postgres /usr/lib/postgresql/9.1/bin/pg_upgrade \
--old-datadir=/tmp/postgres.old/main/ \
--new-datadir=/var/lib/postgresql/9.1/main/ \
--old-bindir=/tmp/postgres-bin.old/postgresql/8.4/bin \
--new-bindir=/usr/lib/postgresql/9.1/bin
如Postgres 文档中所述。这似乎很好用,除了我收到错误:
Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories ok
Checking cluster versions ok
connection to database failed: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
unable to connect to old postmaster started with the command: "/tmp/postgres-bin.old/postgresql/8.4/bin/pg_ctl" -w -l "/dev/null" -D "/tmp/postgres.old/main" -o "-p 5432 -c autovacuum=off -c autovacuum_freeze_max_age=2000000000" start >> "/dev/null" 2>&1
Failure, exiting
问题似乎是它正在尝试启动旧服务器,但这不起作用,因为它太旧并且没有正确安装。尝试手动启动它会发现问题:
root@mission:/tmp# sudo -u postgres /tmp/postgres-bin.old/postgresql/8.4/bin/postgres
/tmp/postgres-bin.old/postgresql/8.4/bin/postgres: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory
那么,如何将旧的 Postgres 8.4 数据库恢复到新的 Postgres 9.1 安装并更新它们?