PostgreSQL सर्वर मैक ओएस एक्स की स्थिति की जांच कैसे करें


102

मैं कैसे बता सकता हूं कि मेरा Postgresql सर्वर चल रहा है या नहीं?

मुझे यह संदेश मिल रहा है:

[~/dev/working/sw] sudo bundle exec rake db:migrate 
rake aborted!
could not connect to server: Connection refused
    Is the server running on host "localhost" and accepting
    TCP/IP connections on port 5432?

अपडेट करें:

> which postgres
/usr/local/bin/postgres
> pg_ctl -D /usr/local/bin/postgres -l /usr/local/bin/postgres/server.log start
pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory

अपडेट 2:

>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory

1
आपको मैक ओएस / एक्स पर पोस्टग्रेज के कई संस्करणों के लिए भी देखना चाहिए। यदि आपने होमब्रे के माध्यम से पोस्टग्रैस स्थापित किया है, तो आप उपरोक्त त्रुटि प्राप्त कर सकते हैं जब आपका रास्ता गलत तरीके से सेटअप हो जाता है - मैंने बस गलती से अपना रास्ता बना लिया और पोस्टग्रेज के सिस्टम इंस्टॉल का उपयोग करना शुरू कर दिया, जो तब तक बहुत अच्छी तरह से काम नहीं करता था जब तक मैंने पथ को समायोजित नहीं किया। काढ़ा स्थापित का उपयोग करें
जेमी कुक

जवाबों:


94

चल रही प्रक्रियाओं की जांच करने का सबसे सरल तरीका:

ps auxwww | grep postgres

और एक कमांड के लिए देखो जो कुछ इस तरह दिखता है (आपका संस्करण 8.3 नहीं हो सकता है):

/Library/PostgreSQL/8.3/bin/postgres -D /Library/PostgreSQL/8.3/data

सर्वर शुरू करने के लिए, कुछ इस तरह निष्पादित करें:

/Library/PostgreSQL/8.3/bin/pg_ctl start -D /Library/PostgreSQL/8.3/data -l postgres.log

ठीक है और अगर मुझे ऐसा कुछ नहीं मिलता है, तो मैं सर्वर कैसे शुरू करूं?
रामी

4
pgrep postgresभी काम करता है। या उठाया जा रहा से ps auxwww | grep [p]ostgresरोकने के लिए grep
ग्रेगरी निस्बेट

1
बू, उसकी फिर से: ps | grepकदाचार का सुझाव। pgrepस्वीकार्य है, मुश्किल से। pg_ctl statusहै महानps auxwww | grep postgresमैच के लिए जा रहा है grep postgres, और less /var/log/postgres/whatever
चार्ल्स डफी

यह ध्यान दिया जाना चाहिए कि डेटाबेस क्लस्टर निर्देशिका /Library/PostgreSQL/8.3/dataउपयोगकर्ता द्वारा initdbकमांड के माध्यम से मनमाने ढंग से बनाई गई है । यहाँ 8.3 doc
GPL

58

यदि पोस्टऑपरेशन चल रहा है, तो यह निर्धारित करने के लिए आप निम्न कमांड चला सकते हैं:

$ pg_ctl status

आप PGDATAपर्यावरण चर भी सेट करना चाहेंगे ।

~/.bashrcपोस्टग्रेज के लिए मेरी फाइल में यहां क्या है :

export PGDATA='/usr/local/var/postgres'
export PGHOST=localhost
alias start-pg='pg_ctl -l $PGDATA/server.log start'
alias stop-pg='pg_ctl stop -m fast'
alias show-pg-status='pg_ctl status'
alias restart-pg='pg_ctl reload'

उन्हें प्रभावी होने के लिए, इसे इस तरह से स्रोत के लिए याद रखें:

$ . ~/.bashrc

अब, इसे आज़माएँ और आपको कुछ इस तरह मिलना चाहिए:

$ show-pg-status
pg_ctl: server is running (PID: 11030)
/usr/local/Cellar/postgresql/9.2.4/bin/postgres

आपकी त्रुटि संदेश को देखते हुए, मैं शर्त लगाता हूं कि आपके initdb कमांड को चलाने के लिए सैमगुडी के सुझाव से आपकी "कनेक्शन अस्वीकृत" समस्या ठीक हो जाएगी। एक बार जब यह तय हो जाता है, तो अपने पोस्टबर्ब्स डीबी सर्वर की स्थिति प्राप्त करने के लिए मेरे सुझावों का प्रयास करें।
l3x

26

आप शायद init postgres नहीं थे।

यदि आपने HomeBrew का उपयोग करके इंस्टॉल किया है, तो कुछ और उपयोग करने योग्य होने से पहले इनिट को चलाया जाना चाहिए।

निर्देश देखने के लिए, रन करें brew info postgres

# Create/Upgrade a Database
If this is your first install, create a database with:
     initdb /usr/local/var/postgres -E utf8

To have launchd start postgresql at login:
   ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents 
Then to load postgresql now:     
   launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 
Or, if you don't want/need launchctl, you can just run:
    pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

एक बार जब आप उसे चला लेते हैं, तो उसे कुछ कहना चाहिए:

सफलता। अब आप डेटाबेस सर्वर का उपयोग शुरू कर सकते हैं:

postgres -D /usr/local/var/postgres or
pg_ctl -D /usr/local/var/postgres -l logfile start

यदि आप अभी भी समस्याएँ हैं, तो अपने फ़ायरवॉल की जाँच करें। यदि आप एक अच्छा एक का उपयोग करें और इसे ट्रैफ़िक को ब्लॉक करने के लिए कॉन्फ़िगर किया गया था, फिर आपका पेज डेटाबेस नहीं देखेगा।


20

PostgreSQL 9.3 के रूप में, आप pg_isreadyPostgreSQL सर्वर की कनेक्शन स्थिति निर्धारित करने के लिए कमांड का उपयोग कर सकते हैं ।

से डॉक्स :

यदि सर्वर सामान्य रूप से कनेक्शन स्वीकार कर रहा है, तो pg_isready 0 शेल पर लौटता है, 1 यदि सर्वर कनेक्शन को खारिज कर रहा है (उदाहरण के लिए स्टार्टअप के दौरान), 2 यदि कनेक्शन के प्रयास का कोई जवाब नहीं था, और 3 यदि कोई प्रयास नहीं किया गया था (उदाहरण के लिए कारण अमान्य मापदंडों के लिए)।


आप 9.3 से पहले psql के लिए एक ही जाँच कैसे करते हैं?
BRBdot

11

यह इस बात पर निर्भर करता है कि आपका पोस्टग्रैक्स्ल सर्वर कहाँ स्थापित है। आप नीचे दिए गए सर्वर को मैन्युअल रूप से प्रारंभ करने के लिए pg_ctl का उपयोग करते हैं।

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

@Ramy आपने पथ में var के लिए बिन प्रतिस्थापित किया ।
जेम्स ऑलमैन

हम्म ठीक है। मुझे लगा कि मुझे यह जांचने की आवश्यकता है कि मेरी स्थापना कहां थी। कृपया नया अपडेट देखें।
रामी

आपने पोस्टग्रास कैसे स्थापित किया? क्या आपने पोस्टग्रेज स्थापित करने के बाद initdb चलाया?
13

5

pg_ctl statusआदेश अन्य उत्तर जांच करता है कि पोस्टमास्टर प्रक्रिया मौजूद है और यदि ऐसा है तो रिपोर्ट में यह चल रहा है कि सुझाव दिया। यह जरूरी नहीं है कि यह कनेक्शन स्वीकार करने या प्रश्नों को निष्पादित करने के लिए तैयार है।

एक अन्य विधि का उपयोग करना बेहतर है जैसे कि psqlएक साधारण क्वेरी चलाने के लिए और निकास कोड की जांच करना, जैसे psql -c 'SELECT 1', या pg_isready कनेक्शन स्थिति की जांच करने के लिए उपयोग करना


3
psql -c "SELECT 1" -d {dbname} > /dev/null || postgres -D /usr/local/var/postgres >postgres.log 2>&1 &अगर आप एक बार में पोस्टग्रेज की जांच और शुरुआत करना चाहते हैं (ऑटोमेशन स्क्रिप्ट के लिए)।
केट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.