postgresql pg_ *コマンドの特定のバージョン(8.4、9.1)を実行する方法(例:pg_dump)


11

Postgresqlバージョン8.4および9.1がインストールされています。特定のPostgresqlコマンドについて、実行するコマンドの特定のバージョンを指定するにはどうすればよいですか?(例えば、psqlpg_dumppg_ctlclusterpg_restore、...)

私の質問は、8.4から9.1へのアップグレードの準備としてpg_dumpを実行したいという動機であり、実行しているpg_dumpのバージョンを知りたいです。

Ubuntu 10.04 Nattyで実行しています。

回答:


15

あなたはUbuntuを使用していて、明らかに、パッケージによって提供され、標準のDebianパッケージに付属しているMartin Pittがpg_wrapperインストールされています(から判断pg_ctlclusterpostgresql-commonDebianでも同じように使用しています

Linuxシステムでwhichは、シェルで実行して、実際に選択されている実行可能ファイルを確認します。

postgres@db:~$ which pg_dump
/usr/bin/pg_dump
postgres@db:~$ ls -l /usr/bin/pg_dump
lrwxrwxrwx 1 root root 37  4. Jun 18:57 /usr/bin/pg_dump -> ../share/postgresql-common/pg_wrapper

pg_dumpは実際にはへのシンボリックリンクでありpg_wrapper、実行するdbクラスターのクライアントプログラムの適切なバージョンを動的に選択しますpg_dump。私はのmanページを引用しますpg_wrapper

このプログラムは、/ usr / lib / postgresql / version / bin内のPostgreSQLプログラムに対応する名前へのリンクとしてのみ実行されます。これは、ユーザー用に構成されたクラスターとデータベースを判別し、目的のプログラムの適切なバージョンを呼び出して、そのクラスターとデータベースに接続し、指定されたオプションをそのコマンドに提供します。

   The target cluster is selected by the following means, in descending order of precedence:
   1.  explicit specification with the --cluster option
   2.  explicit specification with the PGCLUSTER environment variable
   3.  matching entry in ~/.postgresqlrc (see postgresqlrc(5)), if that file exists
   4.  matching entry in /etc/postgresql-common/user_clusters (see user_clusters(5)), if that file exists
   5.  If only one local cluster exists, that one will be selected.
   6.  If several local clusters exist, the one listening on the default port 5432 will be selected.

   If none of these rules match, pg_wrapper aborts with an error.

IOW、適切なバージョンが自動的に選択されるはずです-何らかの方法でインストールを台無しにしない限り。オプション--clusterを具体的に追加することができます。


1
注意:これはリモート接続には役立ちません。8.3および9.1のクライアントツールをインストールしましたが、なんらかの理由でデフォルトで8.3になっています。正しいバージョンを使用するには、/ usr / libのパスを手動で選択する必要があります。最新のものをデフォルトで使用すると思いましたが、使用していないようです。
サミKuhmonen 14年

最新のものは必要ありませんが、データベースに一致するものは必要です。以下のためにいくつかの目的は、pg_dumpの新バージョンでは、しかし、より良い選択肢かもしれません。
Erwin Brandstetter 2014年

〜/ .postgreslqrcファイルに正確に何を入れる必要があるかを明確にしていただけますか?私のクライアント出力-> psql(8.4.21、サーバー9.1.13)警告:psqlバージョン8.4、サーバーバージョン9.1。一部のpsql機能が動作しない場合があります。
クロイドンディアス

それは私にはうまくいかないようです。9.1のサーバーでダンプを作成しましたが、9.1と8.4の別のサーバーで復元しようとすると、ファイル形式を認識できないことがわかります。また、--clusterコマンドラインオプションはありません。
Alexis Wilke 2014年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.