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.

Don Kirkby
quelle

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


quelle
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.

Timo
quelle
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.

Michael Horojanski
quelle
3

Dies wird den Trick machen:

kill -HUP $(head -1 $PGDATA/postmaster.pid)
nad2000
quelle
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

omu
quelle
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.

Don Kirkby
quelle
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
Avery Payne
quelle
0

In einer Zeile:

su -c "pg_ctl reload" - postgres
mivk
quelle
-1

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

sudo /etc/init.d/postgresql reload

/etc/init.d/

Scott
quelle