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

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

我在 Oracle VirtualBox 上运行 Ubuntu 12.04。几个月前,我在我的机器上安装了 PostgreSQL 服务器版本 9.1。就在最近,我了解到 PostgreSQL 服务器 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

在我的计算机上安装了服务器版本 9.3 和版本 9.1。在全新启动后运行 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

然后,我进行了以下升级后维护:我使用 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 版本?

答案1

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

笔记systemctl daemon-reload编辑此文件后调用。

答案2

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

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

service postgresql start 9.1

覆盖版本搜索。

相关内容