我安装了多个 PostgreSQL 服务器。如何禁用旧服务器的自动启动?

Bit*_*r16 27 postgresql ubuntu

我在 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 客户端默认连接到新服务器。

我的问题是这个。9.1 和 9.3 都在启动时启动。我想阻止 9.1 自动启动,因为它大约占用了我系统内存的 5%。我怎样才能做到这一点?

参考的资源:

启动服务器的 PostgreSQL 文档页面将我指向标准的 init.d 目录。我的 init.d 目录确实包含脚本postgresql。看起来这个脚本可以配置为仅启动一个版本,但所需的更改对我来说并不明显。

http://www.postgresql.org/docs/9.1/interactive/server-start.html

下面的帖子非常有用,但它展示了如何删除集群,而不是如何在启动时禁用集群。我想保留旧集群的安装状态,因为我可能想从中检索更多信息。

我想我安装了多个 postgresql 服务器,如何识别和删除“额外”的服务器?

我曾考虑编写一个脚本来在系统完成加载后终止服务器,但这似乎效率低下。有没有更简洁的方法在启动时禁用 9.1 版?

小智 47

为了减少黑客攻击,请编辑/etc/postgresql/9.1/main/start.conf并替换automanualdisabled

注意systemctl daemon-reload编辑此文件后调用。


Der*_*rfK 10

Debian 创建了几个脚本(如 pg_*cluster 实用程序)以简化在单个服务器上运行多个版本或安装的 PostgreSQL,这就是 postgresql.org 上没有记录的原因。

我不确定 PostgreSQL 自己的.deb包是否使用与 Debian 相同的启动机制,但是查看我拥有的包,如果您创建/etc/init.d/postgresql-9.1(即使它是一个空文件),那么/etc/init.d/postgresql会假设您想单独控制该版本并且不会默认启动它。你仍然可以用

service postgresql start 9.1
Run Code Online (Sandbox Code Playgroud)

覆盖版本搜索。