Erneutes Laden von PostgreSQL nach Konfigurationsänderungen


16

Ich habe einige Änderungen an pg_hba.conf vorgenommen und möchte, dass sie wirksam werden. Ich habe mehrere Stellen gefunden, an denen Leute sagen, dass ich PostgreSQL anweisen kann, neu zu laden, aber es sind verschiedene Techniken aufgeführt, von denen bis jetzt keine für mich funktioniert.

Die maßgeblichste Referenz, die ich gefunden habe, ist für den Befehl pg_ctl, aber ich bin nicht sicher, wo sich mein PGDATA-Ordner befindet. Ich werde weiter suchen.

Ich verwende PostgreSQL 8.3 unter Ubuntu 8.10.

Antworten:


15

Sie können überprüfen, wo sich Ihre PGDATA befindet, indem Sie eine Verbindung zu pg herstellen und den folgenden Befehl eingeben:

show data_directory;

Auf Ubuntu ist es normalerweise /var/lib/postgresql/8.3/main/.

Du kannst auch: /etc/init.d/postgresql-8.3 reload


17

Obwohl die ursprüngliche Person, die die Frage gestellt hat, impliziert, dass sie Ubuntu 8.10 ausführt, könnte die Verwendung späterer Versionen von Ubuntu auch hier zu Problemen führen. Und das könnte in der Tat auch mit 8.10 funktionieren. Ich weiß nicht, ich habe keine 8.10 Installationen, um es mit zu versuchen ..

Ok, lass uns auf den Punkt kommen. Die coole "neue" Art, Dienste zu steuern, besteht darin, den serviceBefehl zu verwenden. So können Sie Configs mit dem folgenden Befehl neu laden:

service postgresql-8.3 reload

Natürlich müssen Sie die richtigen Rechte haben, damit Sie dem Befehl höchstwahrscheinlich etwas Ähnliches sudooder su -c rootÄhnliches voranstellen können:

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

PS In der Ubuntu-Dokumentation wird darauf hingewiesen, dass etwas im Zusammenhang mit dieser neuen Methode bereits mit der Veröffentlichung von 6.10 getan wurde. Wenn ich es jedoch richtig verstanden habe, wurde es erst ab 9.10 allgemeiner verwendet.


Ich habe in den letzten zwei Jahren ein Upgrade durchgeführt, daher probiere ich es aus. Danke, dass du mich cool hältst.
Don Kirkby

Es ist im Allgemeinen besser, su -anstelle von nursu
x-yuri

5

Option 1: Über die Befehlszeilen-Shell

su - postgres
/usr/bin/pg_ctl reload

Option 2: Verwenden von SQL

SELECT pg_reload_conf();

Wenn Sie eine der beiden Optionen verwenden, werden keine aktiven Abfragen oder Verbindungen zur Datenbank unterbrochen, sodass diese Änderungen scheinbar ohne Probleme übernommen werden.


3

Dies wird den Trick machen:

kill -HUP $(head -1 $PGDATA/postmaster.pid)

2

Wenn Sie den Server nicht neu starten und nur ein Signal an postgreSQL senden möchten, geben Sie einfach den folgenden Befehl ein:
pg_ctl reload


1

Mit diesem Artikel habe ich endlich eine Technik gefunden, die für mich funktioniert . Der Befehl lautet:

sudo invoke-rc.d postgresql-8.3 reload

Ich würde mich immer noch über Feedback zu der empfohlenen Technik freuen.


1
Wenn Sie gepacktes PostgreSQL verwenden, ist die Verwendung des Paketskripts - wie in diesem Beispiel für Ubuntu - die empfohlene Technik. Wenn Sie aus dem Quellcode erstellt haben, verwenden Sie pg_ctl.
Magnus Hagander

1

Folgendes sollte es für Sie tun:

sudo /etc/init.d/postgresql-8.3 reload

0

In einer Zeile:

su -c "pg_ctl reload" - postgres

-1

ls /etc/init.d/ Schau, was gibt es postgresql zu sehen?

sudo /etc/init.d/postgresql reload

/etc/init.d/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.