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


12

我在同一台服务器(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?


Answers:


11

假设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 = ####”选项,因此您可以使用它来选择所需的版本。


7

使用--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更多信息。


这太好了,这怎么不在psql doc中呢?
MarHoff

1
@MarHoff:这pg_wrapper是Debian的扩展名。本质上,它使用几个新选项包装psql(即,psql是到pg_wrapper脚本的符号链接)命令,以简化对多个群集的处理。
Grzegorz Szpetkowski

0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.