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のdocページは、標準のinit.dディレクトリを示しています。私のinit.dディレクトリには、スクリプトpostgresql
が含まれています。このスクリプトは1つのバージョンのみを起動するように構成できるようですが、必要な変更は私には明らかではありません。
http://www.postgresql.org/docs/9.1/interactive/server-start.html
以下の投稿は非常に有益でしたが、起動時にクラスターを無効にする方法ではなく、クラスターを削除する方法を示しています。古いクラスターをインストールしたままにしたいのですが、そこからさらに情報を取得したい場合があります。
複数のpostgresqlサーバーがインストールされていると思いますが、「余分な」サーバーを特定して削除するにはどうすればよいですか?
システムの読み込みが完了したらサーバーを強制終了するスクリプトを作成することを検討しましたが、これは効率が悪いようです。ブート時にバージョン9.1を無効にするより明確な方法はありますか?
ハックを減らすには、/etc/postgresql/9.1/main/start.conf
を編集し、auto
をmanual
またはdisabled
に置き換えます。
Debianは、単一のサーバー上でのPostgreSQLの複数のバージョンまたはインストールの実行を簡素化するために、いくつかのスクリプト(pg_ * clusterユーティリティなど)を作成しました。これが、postgresql.orgに記載されていない理由です。
PostgreSQL自身の.deb
パッケージがDebianと同じ起動メカニズムを使用しているかどうかはわかりませんが、私が持っているパッケージを見ると、/etc/init.d/postgresql-9.1
を作成すると(空のファイルであっても)、/etc/init.d/postgresql
は、そのバージョンを個別に制御することを想定しており、デフォルトでは起動しません。あなたはまだそれを始めることができます
service postgresql start 9.1
バージョン検索を上書きします。