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.

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


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.


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.


3

To załatwi sprawę:

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

2

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


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.


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


-1

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

sudo /etc/init.d/postgresql reload

/etc/init.d/

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.