Ubuntu

我安裝了多個 PostgreSQL 伺服器。如何禁用舊伺服器的自動啟動?

  • December 3, 2020

我在 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

這在我的機器上安裝了伺服器版本 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 版?

為了減少黑客攻擊,編輯/etc/postgresql/9.1/main/start.conf並替換automanualor disabled

注意systemctl daemon-reload:編輯此文件後呼叫。

Debian 創建了幾個腳本(如 pg_*cluster 實用程序)來簡化在單個伺服器上執行多個版本或安裝 PostgreSQL,這就是 postgresql.org 上沒有記錄的原因。

我不確定 PostgreSQL 自己的.deb包是否使用與 Debian 相同的啟動機制,但是查看我擁有的包,如果您創建/etc/init.d/postgresql-9.1(即使它是一個空文件),那麼/etc/init.d/postgresql會假設您想要單獨控制該版本並且不會預設啟動它。你仍然可以開始它

service postgresql start 9.1

覆蓋版本搜尋。

引用自:https://serverfault.com/questions/582499