Ponowne ładowanie PostgreSQL po zmianach konfiguracji

16

Wprowadziłem kilka zmian w pg_hba.conf i chcę, żeby miały wpływ. Znalazłem kilka miejsc, w których ludzie mówią, że mogę powiedzieć PostgreSQL, aby przeładował, ale jest tam kilka różnych technik i żadna z nich nie działa dla mnie.

Najbardziej wiarygodne odniesienie, jakie znalazłem, dotyczy polecenia pg_ctl, ale nie jestem pewien, gdzie jest mój folder PGDATA. Będę szukał dalej.

Używam PostgreSQL 8.3 na Ubuntu 8.10.

Don Kirkby
źródło

Odpowiedzi:

15

Możesz sprawdzić, gdzie jest twoja PGDATA, łącząc się z pg i wydając polecenie:

show data_directory;

Na Ubuntu zwykle tak jest /var/lib/postgresql/8.3/main/.

Możesz także: /etc/init.d/postgresql-8.3 reload


źródło
17

Chociaż pierwotna osoba zadająca pytanie sugerowała, że ​​używa Ubuntu 8.10 wielu ludzi, użycie późniejszych wersji Ubuntu również może się tutaj potknąć. I to może faktycznie działać również z wersją 8.10. Nie wiem, nie mam żadnych instalacji 8.10 do wypróbowania ...

Ok, przejdźmy do rzeczy. Tak więc fajnym „nowym” sposobem kontrolowania usług jest użycie servicepolecenia. Możesz więc ponownie załadować konfiguracje za pomocą następującego polecenia:

service postgresql-8.3 reload

oczywiście musisz mieć odpowiednie uprawnienia, więc najprawdopodobniej konieczne jest wcześniejsze uzupełnienie polecenia o coś takiego sudolub su -c rootpodobnego:

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

PS W dokumentacji Ubuntu sugeruje się, że coś związanego z tą nową metodą zostało zrobione w tamtych czasach wraz z wydaniem wersji 6.10, jednak jeśli dobrze to zrozumiałem, nie zostało to bardziej ogólne zastosowanie do 9.10.

Timo
źródło
Uaktualniłem w ciągu ostatnich dwóch lat, więc wypróbuję to. Dzięki za utrzymanie mnie w spokoju.
Don Kirkby,
Ogólnie lepiej jest używać su -zamiastsu
x-yuri
5

Opcja 1: Z powłoki wiersza poleceń

su - postgres
/usr/bin/pg_ctl reload

Opcja 2: Korzystanie z SQL

SELECT pg_reload_conf();

Użycie którejkolwiek z tych opcji nie zakłóci żadnych aktywnych zapytań ani połączeń z bazą danych, przez co zastosowanie tych zmian wydaje się być niewiarygodne.

Michał Horojański
źródło
3

To załatwi sprawę:

kill -HUP $(head -1 $PGDATA/postmaster.pid)
nad2000
źródło
2

Jeśli nie chcesz zrestartować serwera i po prostu wysłać sygnał do postgreSQL, po prostu wpisz polecenie:
pg_ctl reload

omu
źródło
1

W końcu znalazłem technikę, która działa dla mnie z tego artykułu . Polecenie to:

sudo invoke-rc.d postgresql-8.3 reload

Będę wdzięczny za opinie na temat zalecanej techniki.

Don Kirkby
źródło
1
Jeśli używasz spakowanego PostgreSQL, zalecaną techniką jest użycie skryptu pakietu - jak w tym przykładzie dla Ubuntu. Jeśli zbudowałeś ze źródła, użyj pg_ctl.
Magnus Hagander,
1

Następujące czynności powinny zrobić to za Ciebie:

sudo /etc/init.d/postgresql-8.3 reload
Avery Payne
źródło
0

W jednej linii:

su -c "pg_ctl reload" - postgres
mivk
źródło
-1

ls /etc/init.d/ Spójrz, co tam widzisz postgresql?

sudo /etc/init.d/postgresql reload

/etc/init.d/

Scott
źródło