You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在开机时仅启动指定版本的PostgreSQL服务?

解决Ubuntu 12.04上默认仅启动PostgreSQL 9.6的方案

我来帮你搞定这个问题,在Ubuntu 12.04上让PostgreSQL默认只启动9.6版本其实很清晰,咱们一步步来操作:

首先,先确认当前所有PostgreSQL集群的状态,运行这条命令就能一目了然:

pg_lsclusters

你会看到类似这样的输出,里面包含了每个版本的集群端口、运行状态等关键信息:

Ver Cluster Port Status Owner Data directory Log file
9.1 main 5432 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.6 main 5433 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log


1. 先停掉所有运行的PostgreSQL服务

咱们先把当前正在跑的两个版本服务都停掉,避免操作冲突:

sudo service postgresql stop

2. 调整端口,让9.6用默认的5432

如果之前9.1占用了默认的5432端口,咱们得把这个端口让给9.6:

  • 编辑9.1集群的配置文件,修改端口:
sudo nano /etc/postgresql/9.1/main/postgresql.conf

找到port = 5432这一行,改成port = 5433(或者其他你喜欢的未占用端口),按Ctrl+O保存,Ctrl+X退出。

  • 再编辑9.6集群的配置文件,把端口改成5432:
sudo nano /etc/postgresql/9.6/main/postgresql.conf

找到port对应的行,改成port = 5432,同样保存退出。

3. 禁用9.1的自动启动

Ubuntu 12.04用sysvinit管理服务,咱们直接禁用9.1版本的自动启动:

sudo update-rc.d postgresql-9.1 disable

另外,也可以用PostgreSQL自带的集群管理命令来禁用9.1的自动启动(效果是一样的):

sudo pg_ctlcluster 9.1 main disable

4. 确保9.6设置为自动启动

为了保险起见,咱们确认一下9.6集群是设置为随系统自动启动的:

sudo pg_ctlcluster 9.6 main enable

5. 启动服务并验证结果

现在启动PostgreSQL服务,应该只会拉起9.6版本了:

sudo service postgresql start

再运行pg_lsclusters验证,你会看到只有9.6的集群处于online状态,并且端口是5432,完美!

如果之后你需要临时启动9.1版本,直接用这条命令就行:

sudo pg_ctlcluster 9.1 main start

内容的提问来源于stack exchange,提问作者Keith John Hutchison

火山引擎 最新活动