我在 Oracle VirtualBox 上运行 Ubuntu 12.04。几个月前,我在我的机器上安装了 PostgreSQL 服务器版本 9.1。就在最近,我了解到PostgreSQL server 9.3 支持JSON 数据类型,所以我决定升级。
我按照此处的说明升级到 9.3:
https://wiki.postgresql.org/wiki/Apt
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.3 pgadmin3
Run Code Online (Sandbox Code Playgroud)
这与版本 9.1 一起在我的机器上安装了服务器版本 9.3。全新启动后运行 pg_lsclusters 给出:
Ver Cluster Port Status Owner Data directory Log file
9.1 main 5433 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.3 main 5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
Run Code Online (Sandbox Code Playgroud)
然后我做了以下升级后维护:我用 pg_dump 从我的 9.1 服务器导出了几个表,并将它们恢复到我的 9.3 服务器。然后我打开 9.1 和 9.3 的配置文件/etc/postgresql/$VERSION/main/postgresql.conf
并交换它们的端口号,以便我的 psql …
我在装有 Ubuntu 14.04 的同一台主机上安装了 PostgreSQL 9.4 和 9.5。我的问题是:
service postgresql start|stop
,两个版本都开始/停止。但我想控制做哪一个。psql
连接到 PostgreSQL 时,它总是连接到 9.4。但我想控制要做什么服务器。我知道我可以通过不同的端口连接,9.4 为 5432,9.5 为 5433。但我想通过对等身份验证进行连接,即通过 Unix 套接字。我设法分别为上述两个问题找到了这些线索,但还没有解决我的问题:
pg_ctlcluster
可以完成这项工作,但我不知道如何指定正确的参数,例如集群名称。我怎么能弄明白?或者你有什么别的办法?unix_socket_directories = '/var/run/postgresql'
. 但是两个版本都有相同的配置目录,其中有9.4-main.pg_stat_tmp 9.4-main.pid 9.5-main.pg_stat_tmp 9.5-main.pid
不同版本的子目录。当我这样做时psql -h /var/run/postgresql
,它只是连接到旧的 9.4 版本。有人可以帮忙吗?谢谢!