複数のPostgreSQLサーバーがインストールされています。古いサーバーの自動起動を無効にするにはどうすればよいですか?


24

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.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

その後、次のアップグレード後のメンテナンスを行いました。pg_dumpを使用して9.1サーバーからいくつかのテーブルをエクスポートし、9.3サーバーに復元しました。次に、9.1および9.3の設定ファイルを開いて/etc/postgresql/$VERSION/main/postgresql.conf、ポート番号を交換して、psqlクライアントがデフォルトで新しいサーバーに接続するようにしました。

私の質問はこれです。9.1と9.3は両方とも起動時に起動します。システムメモリの約5%を占有するため、9.1の自動起動を防止したいと思います。これどうやってするの?

相談したリソース:

サーバーの起動に関するPostgreSQLのドキュメントページは、標準のinit.dディレクトリを示しています。init.dディレクトリにはスクリプトが含まれていますpostgresql。このスクリプトは1つのバージョンのみを起動するように構成できるように見えますが、必要な変更は私には明らかではありません。

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

以下の投稿は非常に有益ですが、起動時に無効にする方法ではなく、クラスターを削除する方法を示しています。古いクラスターをインストールしたままにしておきたいのですが、そこからさらに情報を取得したい場合があります。

複数のpostgresqlサーバーがインストールされていると思いますが、「余分な」サーバーを特定して削除するにはどうすればよいですか?

システムの読み込みが完了したらサーバーを強制終了するスクリプトを作成することを検討しましたが、これは非効率的なようです。起動時にバージョン9.1を無効にするクリーンな方法はありますか?

回答:


43

ハックを減らすには、編集/etc/postgresql/9.1/main/start.confautomanualまたはに置き換えdisabledます。


ありがとうch2500!このソリューションは直感的で、まさに私が必要とするものを実行します。
BitPusher16

私はこのような答えを数時間探していました。本当にありがとうございました。
ジョナサンヴァナスコ

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

バージョン検索をオーバーライドします。


DerfKに感謝します、これはうまくいきました。あなたが提案したファイルを作成し、それにハッシュバンを入れて、実行可能にしました。私は再起動すると、pg_lsclustersは与えた: Ver Cluster Port Status Owner Data directory Log file 9.1 main 5433 down 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
BitPusher16

PostgreSQL Debianパッケージングチームのパッケージは、Debianのパッケージと同じです。独自のsysv init起動スクリプトをハッキングする代わりに、pg_ * clusterインフラストラクチャを使用する必要があります。
マイケルレナー14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.