Rechargement de PostgreSQL après des changements de configuration

16

J'ai apporté quelques modifications à pg_hba.conf et je veux qu'elles prennent effet. J'ai trouvé plusieurs endroits où les gens disent que je peux dire à PostgreSQL de se recharger, mais il existe plusieurs techniques différentes répertoriées, et aucune ne fonctionne pour moi pour le moment.

La référence la plus fiable que j'ai trouvée concerne la commande pg_ctl, mais je ne sais pas où se trouve mon dossier PGDATA. Je continuerai de chercher.

J'exécute PostgreSQL 8.3 sur Ubuntu 8.10.

Don Kirkby
la source

Réponses:

15

Vous pouvez vérifier où se trouve votre PGDATA en vous connectant à pg et en émettant la commande:

show data_directory;

Sur Ubuntu, c'est généralement /var/lib/postgresql/8.3/main/.

Vous pouvez également: /etc/init.d/postgresql-8.3 reload


la source
17

Bien que la personne d'origine posant la question ait laissé entendre qu'il utilise Ubuntu 8.10, beaucoup de personnes, en utilisant des versions ultérieures d'Ubuntu, pourraient également trébucher ici. Et cela pourrait aussi fonctionner avec 8.10. Je ne sais pas, je n'ai aucune installation 8.10 pour l'essayer ..

Ok, allons droit au but. La "nouvelle" façon de contrôler les services est donc d'utiliser la servicecommande. Vous pouvez donc recharger les configurations avec la commande suivante:

service postgresql-8.3 reload

Naturellement, vous devez avoir les droits appropriés, il est donc très probablement nécessaire d'ajouter la commande à quelque chose comme sudoou su -c rootcomme ceci:

sudo service postgresql-8.3 reload
ou
su -c root 'service postgresql-8.3 reload'

PS Il est suggéré dans la documentation Ubuntu que quelque chose concernant cette nouvelle méthode avait été fait il y a longtemps avec la sortie de 6.10, mais si je l'ai bien compris, il n'a pas été utilisé de manière plus générale avant 9.10.

Timo
la source
J'ai effectué une mise à niveau au cours des deux dernières années, je vais donc essayer cela. Merci de me garder au frais.
Don Kirkby
Il est généralement préférable d'utiliser su -à la place de justesu
x-yuri
5

Option 1: à partir du shell de ligne de commande

su - postgres
/usr/bin/pg_ctl reload

Option 2: utilisation de SQL

SELECT pg_reload_conf();

L'utilisation de l'une ou l'autre de ces options n'interrompt aucune requête ou connexion active à la base de données, appliquant ainsi ces changements de manière apparente.

Michael Horojanski
la source
3

Ça fera l'affaire:

kill -HUP $(head -1 $PGDATA/postmaster.pid)
nad2000
la source
2

Si vous ne voulez pas redémarrer le serveur et envoyer simplement un signal à postgreSQL, tapez simplement la commande:
pg_ctl reload

omu
la source
1

J'ai finalement trouvé une technique qui fonctionne pour moi à partir de cet article . La commande est:

sudo invoke-rc.d postgresql-8.3 reload

J'apprécierais toujours vos commentaires sur la technique recommandée.

Don Kirkby
la source
1
Si vous utilisez PostgreSQL empaqueté, l'utilisation du script de package - comme cet exemple pour Ubuntu - serait la technique recommandée. Si vous avez construit à partir des sources, utilisez pg_ctl.
Magnus Hagander
1

Ce qui suit devrait le faire pour vous:

sudo /etc/init.d/postgresql-8.3 reload
Avery Payne
la source
0

En une seule ligne:

su -c "pg_ctl reload" - postgres
mivk
la source
-1

ls /etc/init.d/ Regardez ce qu'il y a voir postgresql?

sudo /etc/init.d/postgresql reload

/etc/init.d/

Scott
la source