web-dev-qa-db-ja.com

同じUbuntuサーバーで複数バージョンのPostgreSQLを実行する

PostgreSQL 8.4と9.0を同じサーバー(Ubuntu Lucid)で実行しています。

両方をapt-getを使用してインストールしました(デフォルトのパッケージソースでは8.4、および https://launchpad.net/~pitti/+archive/postgresql からppaを追加した後は9.0)。

コマンドラインから「createdb」などのコマンドを実行するか、「psql」シェルを起動すると、システムでデフォルトでPostgreSQLバージョン8.4が使用されます。

では、これらのコマンドで8.4ではなくPostgreSQL 9.0を使用するように強制するにはどうすればよいですか?

10
coffee-grinder

UbuntuがDebianと同じことを行うと仮定すると、2つのPostGreSQLインスタンスは異なるポートで実行されます。

設定ファイルを簡単にチェックして、どのバージョンがどのポートにあるかを確認できます。

$ grep -H '^port' /etc/postgresql/*/main/postgresql.conf
/etc/postgresql/8.4/main/postgresql.conf:port = 5432
/etc/postgresql/8.3/main/postgresql.conf:port = 5433

ほとんどのPostGreSQLコマンドは「-p ####」または「--port = ####」オプションを使用するため、それを使用して必要なバージョンを選択できます。

10
Gagravarr

--clusterオプションを使用します。 (両方のクラスターがデフォルトのメインとして名前が付けられていると想定):

psql --cluster 8.4/main
psql --cluster 9.0/main

一般的なスキーマは次のとおりです。

--cluster version/name      # for local connections
--cluster version/Host:port # for TCP/IP connections

インストールされているすべてのクラスター(名前、ポート、ステータス、データディレクトリなど)を一覧表示するには、pg_lsclustersコマンドを使用します。

詳細については、man pg_wrapperを確認してください。

dpkg -L <packagename>を使用すると、特定のパッケージがどのファイルを所有しているかを確認できます。 postgresql 9パッケージで実行し、そのバージョンのcreatedbコマンドが格納されている場所を確認します。

ほとんどのpostgresqlコマンドは、ポートまたはパスによってデータベースを適切に選択してクロスバージョンで機能しますが、これはもちろん、開始スクリプトと作成コマンドには適用されません。

0
Seth Robertson