我安裝了多個 PostgreSQL 伺服器。如何禁用舊伺服器的自動啟動?
我在 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
並替換auto
為manual
ordisabled
。注意
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
覆蓋版本搜尋。