如何在开机时仅启动指定版本的PostgreSQL服务?
我来帮你搞定这个问题,在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




