Postgresql pg_ * कमांड का विशिष्ट संस्करण (8.4, 9.1) कैसे चलाएं (उदाहरण के लिए, pg_djump)


11

मेरे पास Postgresql संस्करण 8.4 और 9.1 स्थापित हैं। किसी भी दिए गए Postgresql कमांड के लिए, मैं चलाने के लिए कमांड के एक विशिष्ट संस्करण को कैसे निर्दिष्ट करूं? (जैसे, psql, pg_dump, pg_ctlcluster, pg_restore, ...)

मेरा प्रश्न 8.4 से 9.1 तक के उन्नयन की तैयारी में एक pg_dump करने से प्रेरित है, और मैं जानना चाहता हूं कि मैं कौन सा pg_dump संस्करण चला रहा हूं।

मैं Ubuntu 10.04 नेट्टी पर चल रहा हूं।

जवाबों:


15

आप उबंटू पर हैं और जाहिर है कि मार्टिन पिट का pg_wrapperस्थापित (से जज pg_ctlcluster) है जो पैकेज द्वारा प्रदान किया गया है postgresql-commonऔर मानक डेबियन पैकेज के साथ आता है। मैं डेबियन पर उसी का उपयोग करता हूं ।

लिनक्स सिस्टम पर, 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। मैं उस आदमी के पेज को उद्धृत करता हूं pg_wrapper:

यह प्रोग्राम केवल उन नामों की एक कड़ी के रूप में चलाया जाता है, जो PostgreSQL प्रोग्राम के लिए / usr / lib / postgresql / version / bin में मेल खाते हैं। यह उपयोगकर्ता के लिए कॉन्फ़िगर किए गए क्लस्टर और डेटाबेस को निर्धारित करता है और उस कमांड के किसी भी निर्दिष्ट विकल्प की आपूर्ति करते हुए, उस क्लस्टर और डेटाबेस से जुड़ने के लिए वांछित प्रोग्राम के उपयुक्त संस्करण को कॉल करता है।

   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 में पथ का चयन करना होगा। मुझे लगता है कि सबसे नया एक डिफ़ॉल्ट रूप से इस्तेमाल किया जाएगा, लेकिन ऐसा नहीं लगता है।
सामी कुहोमेन

आपको नवीनतम की आवश्यकता नहीं है, लेकिन आपके डेटाबेस से मेल खाने वाला। के लिए कुछ प्रयोजनों pg_dump का नया संस्करण बेहतर विकल्प है, हालांकि हो सकता है।
इरविन ब्रांडस्टेटर

क्या आप स्पष्ट कर सकते हैं कि ~ / .postgreslqrc फ़ाइल में जाने की वास्तव में क्या आवश्यकता है? मेरा ग्राहक आउटपुट -> psql (8.4.21, सर्वर 9.1.13) चेतावनी: psql संस्करण 8.4, सर्वर संस्करण 9.1। कुछ psql सुविधाएँ काम नहीं कर सकती हैं।
क्रॉयडन डायस

यह मेरे लिए काम नहीं करता है। मैंने 9.1 के साथ एक सर्वर पर एक डंप बनाया, और जब मैंने 9.1 और 8.4 के साथ किसी अन्य सर्वर पर पुनर्स्थापित करने का प्रयास किया, तो यह बताता है कि यह फ़ाइल प्रारूप को पहचान नहीं सकता है। इसके अलावा, कोई --clusterकमांड लाइन विकल्प नहीं है।
एलेक्सिस विल्के

4

मैं उपयोग करता हूं

PGCLUSTER=8.4/main pg_dump ...
PGCLUSTER=9.1/main pg_dump ...
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.