在不同的端口上安装并运行两个 postgresql 版本(或同一服务器的两个实例)

在不同的端口上安装并运行两个 postgresql 版本(或同一服务器的两个实例)

我的机器(Ubuntu)上安装了 postgresql 9.1。我需要另一个可以与旧服务器一起运行的 postgresql 服务器。具体版本无关紧要,但我正在考虑使用 9.2 版本。我怎样才能正确安装和运行另一个 postgresql 版本而不破坏旧版本(例如升级)。因此,这些版本将在不同的端口上独立运行。例如,旧版本在 5432 上,新版本在 5433 上。

我需要这个的原因是为了两个 OpenERP 版本的数据库。如果我在单个 postgresql 端口上运行两个 OpenERP 服务器(具有不同的版本),它会崩溃,因为新版本的 OpenERP 检测到旧版本的数据库并尝试运行它,但它会崩溃,因为它使用了其他方案。

PS 或者也许我可以在两个端口上运行相同的 postgresql 服务器?

更新 到目前为止我尝试过这个:

/usr/lib/postgresql/9.1/bin/pg_ctl initdb -D main2

它创建了新的集群。我在新集群目录 postgresql.conf 文件中将端口更改为 5433。然后运行以下命令:

/usr/lib/postgresql/9.1/bin/pg_ctl -D main2 -l logfile start

我得到了回应server starting。但是当我尝试使用以下命令进入新集群的模板数据库时:psql template1 -p 5433

我收到此错误:

psql: 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.5433"?

现在当我尝试使用以下命令停止服务器时:

/usr/lib/postgresql/9.1/bin/pg_ctl -D main2 -l logfile start

我收到此错误:

pg_ctl: PID file "main2/postmaster.pid" does not exist
Is server running?

所以我不明白服务器是否正在运行以及我在这里遗漏了什么?

更新

发现错误了。我真笨。我没有注意到当我在 .conf 文件中更改端口时,该行已被注释。所以实际上我第一次没有更改任何内容,但我认为我做了更改,并且它使用了默认的 5432 端口。

相关内容