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

내 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



답변

실행중인 프로세스를 확인하는 가장 간단한 방법 :

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


답변

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

$ 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


답변

아마도 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와 같은 좋은 것을 사용한다면! 트래픽을 차단하도록 구성된 경우 페이지에 데이터베이스가 표시되지 않습니다.


답변

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

로부터 문서 :

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


답변

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

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


답변

pg_ctl status전자 메일 관리자 프로세스가 존재 함을 다른 답변 검사 및보고 그래서이 실행중인 것을 경우 제안 명령. 이것이 반드시 연결을 수락하거나 쿼리를 실행할 준비가되었음을 의미하지는 않습니다.

psql간단한 쿼리를 실행하고 종료 코드를 확인하는 데 사용하는 것과 같은 다른 방법을 사용 psql -c 'SELECT 1'하거나 pg_isready 연결 상태를 확인하는 데 사용하는 것이 좋습니다.


답변