Postgresql pg_ * komutunun (ör. Pg_dump) belirli bir sürümü (8.4, 9.1) nasıl çalıştırılır


11

Postgresql sürüm 8.4 ve 9.1 yüklü. Herhangi bir Postgresql komutu için, çalıştırılacak komutun belirli bir sürümünü nasıl belirtebilirim? (örneğin psql, pg_dump, pg_ctlcluster, pg_restore, ...)

Sorum, 8.4'den 9.1'e yükseltmeye hazırlık olarak bir pg_dump yapmak isteyen motive ve hangi pg_dump sürümünü çalıştırdığımı bilmek istiyorum.

Ubuntu 10.04 Natty üzerinde çalışıyorum.

Yanıtlar:


15

Ubuntu'dasınız ve açıkçası paket tarafından sağlanan ve standart Debian paketleriyle birlikte gelen Martin Pitt'in pg_wrapperkurulu (yargılama pg_ctlcluster) var postgresql-common. Kullandığım Debian aynı .

Bir Linux sisteminde, whichhangi yürütülebilir dosyanın gerçekten seçildiğini görmek için kabukta çalıştırın:

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_dumpaslında pg_wrapperdinamik olarak çalıştırdığınız db kümesi için istemci programının uygun sürümünü seçen bir sembolik bağlantıdır pg_dump. Ben adam sayfasını alıntı pg_wrapper:

Bu program yalnızca / usr / lib / postgresql / version / bin içindeki PostgreSQL programlarına karşılık gelen isimlere bağlantı olarak çalıştırılır. Kullanıcı için yapılandırılmış kümeyi ve veritabanını belirler ve söz konusu kümeye ve veritabanına bağlanmak için istenen programın uygun sürümünü çağırır ve söz konusu komuta belirtilen seçenekleri sağlar.

   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, kurulumunuzu bir şekilde berbat etmedikçe doğru sürüm otomatik olarak seçilmelidir. Her zaman --clusterözel olma seçeneğini ekleyebilirsiniz .


1
Sadece bir not: Bu uzak bağlantılarda yardımcı olmaz. 8.3 ve 9.1 istemci araçlarını yükledim ve herhangi bir nedenle varsayılan olarak 8.3'e ayarlandı. Doğru sürümü kullanmak için / usr / lib yolunu el ile seçmem gerekiyor. En yenisinin varsayılan olarak kullanılacağını düşünürdüm, ama görünmüyor.
Sami Kuhmonen

En yenisine değil, veritabanınıza uyana ihtiyacınız var. İçin bazı amaçlar pg_dump yeni versiyonu olsa iyi bir seçenek olabilir.
Erwin Brandstetter

~ / .Postgreslqrc dosyasında ne olduğunu tam olarak açıklayabilir misiniz? İstemci çıktım -> psql (8.4.21, sunucu 9.1.13) UYARI: psql sürüm 8.4, sunucu sürümü 9.1. Bazı psql özellikleri çalışmayabilir.
Croydon Dias

Bu benim için işe yaramıyor. 9.1 ile bir sunucuda bir döküm oluşturdum ve 9.1 ve 8.4 ile başka bir sunucuya geri yüklemeye çalıştığımda dosya biçimini tanıyamayacağını söylüyor. Ayrıca, --clusterkomut satırı seçeneği yoktur .
Alexis Wilke

4

kullanırım

PGCLUSTER=8.4/main pg_dump ...
PGCLUSTER=9.1/main pg_dump ...
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.