PostgreSQL 서버 Mac OS X의 상태를 확인하는 방법


101

내 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
또한 Mac OS / X에서 여러 버전의 postgres를 찾아야합니다. homebrew를 통해 postgres를 설치 한 경우 경로가 잘못 설정되었을 때 위의 오류가 발생할 수 있습니다. 우연히 내 경로를 망 쳤고 모든 것이 경로를 조정할 때까지 잘 작동하지 않는 postgres의 시스템 설치를 사용하기 시작했습니다. 양조 설치 사용
Jamie Cook

답변:


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

좋습니다. 그런 것이 없으면 어떻게 서버를 시작합니까?
Ramy 2011

4
pgrep postgres또한 작동합니다. 또는 들이 픽업 ps auxwww | grep [p]ostgres되는 것을 방지합니다 grep.
Gregory Nisbet 2016

1
Boo, hiss re : ps | grep과실 제안. pgrep거의 허용되지 않습니다. pg_ctl status이다 중대한 . ps auxwww | grep postgres일치하는 것입니다 grep postgres,하고 less /var/log/postgres/whatever.
Charles Duffy

데이터베이스 클러스터 디렉토리 /Library/PostgreSQL/8.3/data는 사용자가 initdb명령을 통해 임의로 생성 한다는 점에 유의해야합니다 . 여기입니다 8.3 문서는
GPL

58

다음 명령을 실행하여 포스트그레스가 실행 중인지 확인할 수 있습니다.

$ pg_ctl status

PGDATA환경 변수도 설정하고 싶을 것 입니다.

~/.bashrcpostgres에 대한 내 파일에 있는 내용은 다음과 같습니다 .

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

오류 메시지를 감안할 때 SamGoody의 initdb 명령을 실행하면 "연결 거부"문제가 해결 될 것입니다. 문제가 해결되면 postgres db 서버 상태를 얻으려면 내 제안을 시도하십시오.
l3x

26

아마도 postgres를 초기화하지 않았을 것입니다.

HomeBrew를 사용하여 설치 한 경우 다른 항목을 사용할 수있게되기 전에 init를 실행해야합니다.

지침을 보려면 다음을 실행하십시오. 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

여전히 문제가있는 경우 방화벽을 확인하십시오. HandsOff와 같은 좋은 것을 사용한다면! 트래픽을 차단하도록 구성된 경우 페이지에 데이터베이스가 표시되지 않습니다.


20

PostgreSQL 9.3부터는 명령 pg_isready을 사용하여 PostgreSQL 서버의 연결 상태를 확인할 수 있습니다 .

로부터 문서 :

pg_isready는 서버가 정상적으로 연결을 수락하는 경우 셸에 0을, 서버가 연결을 거부하는 경우 (예 : 시작 중) 1, 연결 시도에 대한 응답이없는 경우 2, 시도가 이루어지지 않은 경우 3을 반환합니다 (예 : due 유효하지 않은 매개 변수).


9.3 이전의 psql에 대해 동일한 것을 어떻게 확인합니까?
BRBdot

11

postgresql 서버가 설치된 위치에 따라 다릅니다. pg_ctl을 사용하여 아래와 같이 서버를 수동으로 시작합니다.

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

@Ramy 경로에서 var 대신 bin 을 사용 했습니다.
James Allman 2011

음 ... 좋아. 설치 위치를 확인해야한다고 생각했습니다. 새로운 업데이트를 참조하십시오.
Ramy 2011

Postgres를 어떻게 설치 했습니까? postgres를 설치 한 후 initdb를 실행 했습니까?
Nvick 2011

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 &한 번에 postgres를 확인하고 시작하려는 경우 (자동화 스크립트에 편리함).
Kate
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.