web-dev-qa-db-fra.com

Comment vérifier l'état du serveur PostgreSQL Mac OS X

Comment savoir si mon serveur Postgresql est actif ou non?

Je reçois ce message:

[~/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?

Mise à jour:

> 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

Mise à jour 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
85
Ramy

Le moyen le plus simple de vérifier les processus en cours:

ps auxwww | grep postgres

Et recherchez une commande qui ressemble à ceci (votre version ne sera peut-être pas la version 8.3):

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

Pour démarrer le serveur, exécutez quelque chose comme ceci:

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

Vous pouvez exécuter la commande suivante pour déterminer si postgress est en cours d'exécution:

$ pg_ctl status

Vous voudrez également définir la variable d’environnement PGDATA.

Voici ce que j'ai dans mon ~/.bashrc fichier pour postgres:

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'

Pour les faire entrer en vigueur, pensez à le rechercher comme suit:

$ . ~/.bashrc

Maintenant, essayez-le et vous devriez obtenir quelque chose comme ça:

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

Vous n'avez probablement pas initié postgres.

Si vous avez installé avec HomeBrew, l'init doit être lancé avant que quoi que ce soit ne devienne utilisable.

Pour voir les instructions, lancez 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

Une fois que vous avez exécuté cela, il devrait dire quelque chose comme:

Succès. Vous pouvez maintenant démarrer le serveur de base de données en utilisant:

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

Si vous rencontrez toujours des problèmes, vérifiez votre pare-feu. Si vous en utilisez un bon comme HandsOff! et il a été configuré pour bloquer le trafic, votre page ne verra pas la base de données.

18
SamGoody

A partir de PostgreSQL 9.3, vous pouvez utiliser la commande pg_isready pour déterminer l’état de la connexion d’un serveur PostgreSQL.

De la docs :

pg_isready renvoie 0 au shell si le serveur accepte les connexions normalement, 1 si le serveur refuse les connexions (par exemple au démarrage), 2 s'il n'y a pas eu de réponse à la tentative de connexion et 3 si aucune tentative n'a été faite (par exemple paramètres non valides).

15
benjwadams

Cela dépend de l'emplacement d'installation de votre serveur postgresql. Vous utilisez pg_ctl pour démarrer manuellement le serveur comme ci-dessous.

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

Le pg_ctl status La commande suggérée dans d'autres réponses vérifie que le processus postmaster existe et, le cas échéant, indique qu'il est en cours d'exécution. Cela ne signifie pas nécessairement qu'il est prêt à accepter des connexions ou à exécuter des requêtes.

Il est préférable d’utiliser une autre méthode, telle que psql pour exécuter une requête simple et vérifier le code de sortie, par exemple. psql -c 'SELECT 1', Ou utiliser pg_isreadypour vérifier l'état de la connexion .

4
Owen Pauling