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

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

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

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

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

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

答案1

假设 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

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

答案2

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

psql --cluster 8.4/main
psql --cluster 9.0/main

通用模式包括:

--cluster version/name      # for local connections
--cluster version/host:port # for TCP/IP connections

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

查看man pg_wrapper更多信息。

答案3

您可以使用它dpkg -L <packagename>来查看特定包拥有的文件。使用 postgresql 9 包运行它,并查看该版本的 createdb 命令存储在哪里。

大多数 postgresql 命令可以跨版本工作,通过端口或路径适当选择数据库,但这当然不适用于启动脚本和创建命令。

相关内容