在同一台 Ubuntu 服务器上运行多个版本的 PostgreSQL

cof*_*der 14 postgresql ubuntu

我在同一台服务器(Ubuntu Lucid)上运行 PostgreSQL 8.4 和 9.0。

我通过 apt-get 安装了它们(使用默认包源的 8.4 和从https://launchpad.net/~pitti/+archive/postgresql添加 ppa 后的 9.0 )。

当我从命令行运行“createdb”之类的命令或启动“psql”shell 时,我的系统默认使用 PostgreSQL 8.4 版。

那么,如何强制这些命令使用 PostgreSQL 9.0 而不是 8.4?

Gag*_*arr 15

假设 Ubuntu 和 Debian 做同样的事情,那么你的两个 PostGreSQL 实例将在不同的端口上运行。

您可以轻松检查配置文件以查看哪个版本在哪个端口上:

$ grep -H '^port' /etc/postgresql/*/main/postgresql.conf
/etc/postgresql/8.4/main/postgresql.conf:port = 5432
/etc/postgresql/8.3/main/postgresql.conf:port = 5433
Run Code Online (Sandbox Code Playgroud)

大多数 PostGreSQL 命令采用“-p ####”或“--port=####”选项,因此您可以使用它来选择您想要的版本。


Grz*_*ski 9

使用--cluster选项例如(假设两个集群都被命名为默认主):

psql --cluster 8.4/main
psql --cluster 9.0/main
Run Code Online (Sandbox Code Playgroud)

通用模式是:

--cluster version/name      # for local connections
--cluster version/host:port # for TCP/IP connections
Run Code Online (Sandbox Code Playgroud)

要列出所有已安装的集群(名称、端口、状态、数据目录等),请使用pg_lsclusters命令。

查看man pg_wrapper更多信息。