Blog JSystems - uwalniamy wiedzę!

Szukaj

Hosty do ćwiczeń


W przykładach korzystać będziemy z 5 linuxowych hostów. Każdy z nich powinien mieć przynajmniej 2CPU i 4GB RAM. Osobiście preferuję Ubuntu, ale przykłady możemy wykonać też na CentOS. W materiałach znajdziemy instrukcje do instalacji na obu dystrybucjach.



Trzy z pięciu serwerów posłużą do konfiguracji klastra PostgreSQL o wysokiej dostępności na podstawie Patroni i ETCD. Patroni to darmowe narzędzie open source do automagicznego zarządzania klastrem postgresa, a ETCD to magazynu klucz-wartość, który jest również wykorzystywany do osiągnięcia porozumienia, który z serwerów standby w Patroni jest najlepszym kandydatem na przejęcie roli lidera podczas awaryjnego przełączania. Również na nich stworzymy klastry na potrzebę przykładów z kopii zapasowych i replikacji.


Kolejny wykorzystamy jako serwer kopii zapasowych Barman i pgBackRest, a na ostatnim zainstalujemy PgBouncer oraz HAProxy, które będą działały jako pula połączeń (connection pooler) oraz load balancer.


Instalacja oprogramowania na Ubuntu 22.04


Domyślnie dostępne repozytoria są zazwyczaj bardzo przestarzałe, dlatego aby korzystać z najnowszych dostępnych wersji, musimy dodać oficjalne repozytoria PostgreSQL dla naszej dystrybucji, w przypadku ubuntu: https://www.postgresql.org/download/linux/ubuntu/


Instrukcje instalacji są wspólne dla przykładów z narzędzi do wykonywania kopii zapasowych, replikacji, konfiguracji Patroni i ETCD, konfiguracji pojedynczego punktu dostępu (pgbouncer) oraz monitoringu. Nie potrzebujemy wszystkich do każdego przykładu. Warto o tym pamiętać, jeżeli korzystamy z chmury i za każdy serwer musimy dodatkowo zapłacić, wtedy warto uruchomić tylko tyle serwerów, ile rzeczywiście potrzebujemy do wykonania danego przykładu.



  • Do przykładów z kopii zapasowych, zarówno barman jak i pgbackrest, potrzebujemy dwóch serwerów, serwer nr 1 i 5.

  • Do przykładów z replikacji wystarczą trzy serwery, ale wygodniej będzie pracować na czterech, ze względu na logiczną replikację i kontrolowaną zmianę serwera źródłowego dla logicznej repliki, tzw. failover w logicznej replikacji. Serwery nr 1,2,3,5. Wtedy na serwerze 1. i 2. skonfigurujemy fizyczną replikację, na serwerze 3. replikację logiczną, a 5. posłuży za serwer repozytorium kopii zapasowych. Używając trzech, musimy skonfigurować logiczną replikę na serwerze z fizyczną repliką, a wtedy łatwo o błąd, kiedy konfigurujemy taką replikację po raz pierwszy.

  • Do autovacuuma i pg_repacka wystarczy nam jeden serwer. Serwer nr 1.

  • Do przykładów z Patroni, skalowania i monitoringu będziemy potrzebować wszystkich pięciu serwerów. Serwery 1 do 5.


Instrukcje wspólne dla wszystkich serwerów.


[hosty 1-5: wszystkie]


Powinniśmy je wykonać przed instalacją jakichkolwiek pakietów na każdym z serwerów.


# Stworzenie pliku konfiguracji dla repozytorium jako użytkownik z uprawnieniami sudo albo root, w drugim przypadku pomijamy sudo na początku poleceń z instrukcji:


sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Pobranie i import klucza dla oficjalnego repozytorium Ubuntu do listy zaufanych kluczy w apt:


wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Aktualizacja listy dostępnych pakietów:


sudo apt-get update

# Instalacja dostępnych aktualizacji:


sudo apt-get upgrade -y

# Restart serwera po aktualizacji, ponieważ niektóre paczki, szczególnie te aktualizujące jądro linuxa, nie będą “aktywne” do następnego startu serwera:


sudo reboot

Instalacja binarek/pakietów


Instrukcje dla każdego z serwerów z osobna, z podziałem na przykłady, w których będą wykorzystywane.


[host 1] przeznaczony na Postgresa 15, Patroni oraz ETCD


Do wykonania przykładów z kopii zapasowych za pomocą Barmana zainstaluj:


sudo apt-get -y install postgresql-15 barman-cli

Do wykonania przykładów z kopii zapasowych za pomocą pgBackRest zainstaluj:


sudo apt-get -y install postgresql-15 pgbackrest

Do wykonania przykładów z replikacji, tutaj wystarczy jeden z pakietów, pgbackrest lub barman-cli w zależności które narzędzie do kopii zapasowych skonfigurujemy w celu stworzenia repliki z backupów:


sudo apt-get -y install postgresql-15 pgbackrest barman-cli 

Do wykonania przykładów z autovacuuma i pg_repacka:


sudo apt-get -y install postgresql-15 postgresql-15-repack

Do przykładów z Patroni, skalowania, monitoringu:


sudo apt-get -y install postgresql-15 patroni etcd-server etcd-client pgbackrest

[hosty 2-3] - przeznaczony na Postgresa 15, Patroni oraz ETCD.


Do wykonania przykładów z replikacji, tutaj wystarczy jeden z pakietów, pgbackrest lub barman-cli, w zależności które narzędzie do kopii zapasowych skonigurujemy w celu stworzenia repliki z backupów:


sudo apt-get -y install postgresql-15 pgbackrest barman-cli

Do przykładów z Patroni, skalowania, monitoringu:


sudo apt-get -y install postgresql-15 patroni etcd-server etcd-client pgbackrest

[host 4] - serwer wykorzystywany jako pojedynczy punkt dostępu dla Postgresa zainstalowanego na serwerach 1-3. Instalujemy na nim pgbouncer, haproxy oraz pakietu postgresql-15 i postgresql-client-15, które zawierają pgbench i biblioteki wykorzystywane do zdalnego połączenia i benchmarkowania postgresa:


sudo apt-get -y install pgbouncer haproxy postgresql-15 postgresql-client-15

[host 5] - serwer, z którego będziemy wykonywać oraz przechowywać kopie zapasowe postgresa.


Do przykładów z Barmana i replikacji klastra korzystającego z barmana:


sudo apt-get -y install barman barman-cli

Do przykładów z pgbackresta, replikacji klastra korzystającego z pgbackresta oraz Patroni:


sudo apt-get -y install pgbackrest


Konfiguracja PostgreSQL


[hosty 1-3]


Po instalacji pakietów Postgresa, na serwerach 1-3, Ubuntu automatycznie stworzy i wystartuje domyślny klaster.


systemctl status postgres*


Pliki konfiguracyjne dla Postgresa na systemach Debian/Ubuntu, stworzone automatycznie po instalacji lub za pomocą PostgreSQL database-cluster manager, znajdują się w innej lokalizacji niż domyślnie, dla klastrów zainicjalizowanych poprzez initdb.


Postgres zainicjalizowany klasycznie przechowuje pliki konfiguracyjne w katalogu głównym Postgresa, tzn. katalogu, do którego został wykonany initdb, określonego przez parametr -D lub zmienną systemową PGDATA, lub w katalogu określanym przez parametr Postgresa data_directory.


Na systemach z rodziny Debian, jeżeli korzystamy z narzędzi dedykowanych dla Debiana/Ubuntu, PostgreSQL database-cluster manager, przykładowo pg_createcluster, pg_lsclusters, pg_ctlcluster, etc., pliki konfiguracyjne znajdują się w katalogu systemowym /etc.
/etc/postgresql/<wersja_postgresa>/<nazwa_klastra>/*.conf, a domyślny katalog PGDATA znajduje się w katalogu domowym postgresa: /var/lib/postgresql/<wersja_postgresa>/<nazwa_klastra>, przykładowo /var/lib/postgresql/15/main. Każdy klaster postgresa stworzony za pomocą pg_createcluster ma również swoją usługę w systemd, korzystają one ze wspólnej konfiguracji postgresql@.service, a ich usługi nazwane są postgresql@<wersja_postgresa>-<nazwa_klastra>.service, przykładowo postgresql@15-main.service.


Dla uzyskania doświadczenia jak najbardziej zbliżonego dla różnych systemów operacyjnych stworzymy nowy klaster za pomocą klasycznej inicjalizacji przez initdb, a ten stworzony automatycznie zatrzymamy. Poniższe instrukcje powtarzamy dla trzech serwerów (serwery 1-3), na których zainstalowaliśmy postgresa.


# sprawdzenie uruchomionych usług postgresa i działających procesów postgresa:


systemctl status postgres*
ps -ef | grep postgres

# zatrzymanie usług oraz wyłączenie automatycznego startu:


sudo systemctl stop postgresql@15-main.service
sudo systemctl disable postgresql@15-main.service

sudo systemctl stop postgresql.service
sudo systemctl disable postgresql.service


# Upewniamy się, że procesy PostgreSQL już nie działają. Lista powinna być pusta po wykonaniu tego polecenia:


systemctl status postgres*
ps -ef | grep postgres

Drugie polecenie "ps -ef" za każdym razem zwróci jedną linię z istniejącym procesem, ponieważ zawsze zwraca również samo siebie. Istotne jest, żeby nie działał żaden proces z nazwą w stylu "/usr/lib/postgresql/15/bin/postgres" czy "/usr/lib/postgresql/15/bin/postmaster", który jest głównym procesem postgresa.


# utworzenie katalogu na serwerach 1-3:


sudo mkdir -m 700 /data_pg
sudo chown postgres: /data_pg/

[host 1]


# inicjalizacja, uruchomienie klastra i autostart usługi tylko na serwerze 1. Jeśli konfigurujesz hosty na potrzeby Patroni, pomiń ten krok.


sudo -i -u postgres /usr/lib/postgresql/15/bin/initdb -D /data_pg/
sudo -i -u postgres /usr/lib/postgresql/15/bin/pg_ctl -D /data_pg start

[hosty 1-3]


# aktualizacja zmiennej systemowej PATH dla użytkownika postgres (użytkownik systemowy postgres jest tworzony automagicznie w trakcie instalacji binarek serwera PostgreSQL) w celu dodania wszystkich binarek PostgreSQL do PATH. Dzięki temu nie będziemy musieli podawać pełnych ścieżek do narzędzi PostgreSQL.

Poniższe kroki wykonujemy jako użytkownik postgres.

Możemy przejść do użytkownika postgres w ten sposób:


sudo su - postgres

Załadują nam się też zmienne środowiskowe użytkownika postgres. Następnie jako użytkownik postgres wykonujemy poniższy kod, wklejamy go w całości do konsoli:


cat << EOF >> ~/.bash_profile
PATH=$PATH:/usr/lib/postgresql/15/bin
export PATH
EOF

Uwaga! Zmiana ta wymaga przelogowania użytkownika postgres lub ręczne załadowanie zmiennych za pomocą:


. ~/.bash_profile

Na potrzeby przykładu stworzymy nowy klaster za pomocą initdb, dlatego nie będzie on posiadał swojej usługi systemd, przez co nie będzie mógł mieć włączonego autostartu. Planując konfigurację Patroni w przyszłości, nie potrzebujemy również autostartu, ponieważ zajmuje się tym proces Patroni. Jeżeli jednak chcielibyśmy stworzyć klaster z automatycznym startem po uruchomieniu systemu, moglibyśmy użyć narzędzia dostępnego w Ubuntu "pg_createcluster" albo ręcznie stworzyć plik konfiguracyjny dla usługi w systemd i włączyć dla niego autostart.


Część opcjonalna - autostart usługi - ewentualnie host 1


Poniżej znajduje się opis konfiguracji autostartu usługi PostgreSQL w nowej lokalizacji (/data_pg). Na potrzeby Patroni nie konfigurujemy autostartu usługi, ponieważ Patroni będzie się tym zajmował za nas.


Część opcjonalna, nie jest wymagana podczas wykonywania przykładów, ale warto wiedzieć, jak to zrobić i robić to na swoich systemach produkcyjnych.


Przykładowo (poniższe wykonujemy jako użytkownik systemowy z prawami do sudo, nie jako użytkownik postgres):


vagrant@ubuntu:~$ sudo nano /lib/systemd/system/postgresql-15.service

Do otwartego pliku wklejamy:


[Unit]
Description=PostgreSQL 15 database server
Documentation=https://www.postgresql.org/docs/15/static/
After=syslog.target
After=network-online.target

[Service]
Type=notify
User=postgres
Group=postgres
Environment=PGDATA=/data_pg/

#Wylaczenie OOM (Out Of Memory) killera dla postgresa:

OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

ExecStart=/usr/lib/postgresql/15/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT

# wylaczony timeout, zeby postgres mogl w spokoju wykonac crash recovery podczas startu
# inaczej linux moglby probowac restartowac usluge jezeli nie wystartowala w X sekund
TimeoutSec=0
TimeoutStartSec=0
TimeoutStopSec=1h

[Install]
WantedBy=multi-user.target


Następnie wykonujemy:


vagrant@ubuntu:~$ systemctl status postgresql-15.service
○ postgresql-15.service - PostgreSQL 15 database server
Loaded: loaded (/lib/systemd/system/postgresql-15.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://www.postgresql.org/docs/15/static/

Włączamy autostart:


vagrant@ubuntu:~$ sudo systemctl enable postgresql-15.service

Jeżeli wcześniej uruchomiliśmy postgresa za pomocą pg_ctl, próba sprawdzenia stanu usługi systemd dla postgresa, za pomocą systemctl status postgresql-15.service, zwróci informację, że postgres nie jest uruchomiony.Jak na powyższym przykładzie: "Active: inactive (dead)".

Aby zacząć korzystać z usługi, musimy zatrzymać postgresa uruchomionego za pomocą pg_ctl, a następnie uruchomić usługę.


Sprawdzenie, czy jakiś postgres działa:


vagrant@ubuntu:~$ ps -ef | grep postgres

Jeżeli działa, zatrzymujemy go za pomocą:


vagrant@ubuntu:~$ sudo -i -u postgres /usr/lib/postgresql/15/bin/pg_ctl -D /data_pg stop

Uruchamiamy usługę:


vagrant@ubuntu:~$ sudo systemctl start postgresql-15.service

Weryfikacja, czy usługa działa i czy autostart jest włączony, pogrubiony enabled:


vagrant@ubuntu:~$ systemctl status postgresql-15.service

● postgresql-15.service - PostgreSQL 15 database server
Loaded: loaded (/lib/systemd/system/postgresql-15.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-08-02 19:20:05 UTC; 2s ago
Docs: https://www.postgresql.org/docs/15/static/
Main PID: 1755 (postmaster)
Tasks: 6 (limit: 19037)
Memory: 19.3M
CGroup: /system.slice/postgresql-15.service
├─1755 /usr/lib/postgresql/15/bin/postmaster -D /data_pg/

Od teraz uruchamiając, zatrzymując czy restartując klaster, nie powinniśmy używać pg_ctl, a właśnie skonfigurowaną usługę systemd.


Instalacja oprogramowania na RedHat/CentOS 9


Postgres dostępny w oficjalnym repozytorium RedHat9 / CentOS9 to wersja 13.11. Co nie jest może najstarszą wspieraną wersją, do tego w najnowszej minor wersji zawierającej wszystkie dostępne łatki i aktualizacje, ale jest 2 główne wydania do tyłu. Aby zainstalować najnowszą wersję postgresa, 15, musimy zainstalować oficjalne repozytoria yum PGDG.


Instrukcje instalacji są wspólne dla przykładów z narzędzi do wykonywania kopii zapasowych, replikacji, konfiguracji Patroni i ETCD, konfiguracji pojedynczego punktu dostępu (pgbouncer) oraz monitoringu. Jednak nie do każdego ćwiczenia potrzebujemy wszystkie. Warto o tym pamiętać, jeżeli korzystamy z chmury i za każdy serwer musimy dodatkowo zapłacić. Wtedy warto uruchomić tylko tyle serwerów, ile rzeczywiście potrzebujemy do wykonania danego ćwiczenia.



  • Do przykładów z kopii zapasowych, zarówno barman jak i pgbackrest, potrzebujemy dwóch serwerów, serwer nr 1 i 5.

  • Do przykładów z replikacji wystarczą trzy serwery, ale wygodniej będzie pracować na czterech, ze względu na logiczną replikację i kontrolowaną zmianę serwera źródłowego dla logicznej repliki, tzw. failover w logicznej replikacji. Serwery nr 1,2,3,5. Wtedy na serwerze 1, i 2. skonfigurujemy fizyczną replikację, na serwerze 3. replikację logiczną, a 5. posłuży za serwer repozytorium kopii zapasowych. Używając trzech, musimy skonfigurować logiczną replikę na serwerze z fizyczną repliką, a wtedy łatwo o błąd, konfigurując taką replikację po raz pierwszy.

  • Do autovacuuma i pg_repacka wystarczy nam jeden serwer. Serwer nr 1.

  • Do przykładów z Patroni, skalowania i monitoringu będziemy potrzebować wszystkich pięciu serwerów. Serwery 1 do 5.


Instrukcje wspólne dla wszystkich serwerów


# Konfiguracja repozytorium z pliku RPM:


sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Wyłączenie domyślnie dostępnego pakietu postgresa;


sudo dnf -qy module disable postgresql

# Instalacja dostępnych aktualizacji:


sudo yum upgrade -y

# Restart serwera po aktualizacji, ponieważ niektóre paczki, szczególnie te aktualizujące jądro linuxa, nie będą "aktywne" do następnego startu serwera:


sudo reboot

Instalacja binarek/pakietów


Instrukcje dla każdego z serwerów z osobna, z podziałem na przykłady, w których będą wykorzystywane.


Serwer 1 przeznaczone na Postgresa 15, Patroni oraz ETCD


Do wykonania przykładów z kopii zapasowych za pomocą Barmana zainstaluj:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y postgresql15-server barman-cli

Do wykonania przykładów z kopii zapasowych za pomocą pgBackRest zainstaluj:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y postgresql15-server  pgbackrest

Do wykonania przykładów z replikacji, tutaj wystarczy jeden z pakietów, pgbackrest lub barman-cli w zależności, które narzędzie do kopii zapasowych skonfigurujemy w celu stworzenia repliki z backupów:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y postgresql15-server  pgbackrest barman-cli

Do wykonania przykładów z autovacuuma i pg_repacka:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y postgresql15-server postgresql15-contrib pg_repack_15


Do przykładów z Patroni, skalowania, monitoringu:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y postgresql15-server postgresql15-contrib patroni patroni-etcd etcd pgbackrest

Serwer 2-3 - przeznaczony na Postgresa 15, Patroni oraz ETCD.


Do wykonania przykładów z replikacji, tutaj wystarczy jeden z pakietów, pgbackrest lub barman-cli w zależności, które narzędzie do kopii zapasowych skonigurujemy w celu stworzenia repliki z backupów:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y postgresql15-server  pgbackrest barman-cli

Do przykładów z Patroni, skalowania, monitoringu:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y postgresql15-server postgresql15-contrib patroni patroni-etcd etcd pgbackrest

Serwer 4 - serwer wykorzystywany jako pojedynczy punkt dostępu dla Postgresa zainstalowanego na serwerach 1-3. Instalujemy na nim pgbouncer oraz haproxy:


sudo dnf install -y pgbouncer haproxy postgresql15

Serwer 5 - serwer, z którego będziemy wykonywać oraz przechowywać kopie zapasowe postgresa.


Do przykładów z Barmana i replikacji klastra korzystającego z barmana:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y  barman barman-cli

Do przykładów z pgbackresta, replikacji klastra korzystającego z pgbackresta oraz Patroni:


sudo dnf --enablerepo=pgdg-rhel9-extras install -y  pgbackrest

Konfiguracja PostgreSQL


Serwery 1-3


Po instalacji pakietów Postgresa, na serwerach 1-3, należy stworzyć strukturę katalogów.


# utworzenie katalogu

# w odróżnieniu od Ubuntu, tutaj nie będzie domyślnie wystartowanej instancji:


sudo mkdir -m 700 /data_pg
sudo chown postgres: /data_pg/

# inicjalizacja i start nowego klastra, tylko na serwerze 1:


sudo su - postgres
/usr/pgsql-15/bin/initdb -D /data_pg/
/usr/pgsql-15/bin/pg_ctl -D /data_pg start

# aktualizacja zmiennej systemowej PATH dla użytkownika postgres, jako użytkownik postgres w

# celu dodania wszystkich binarek PostgreSQL do PATH. Dzięki temu nie będziemy musieli

# podawać pełnych ścieżek do narzędzi PostgreSQL.


cat << EOF >> ~/.bash_profile
PATH=$PATH:/usr/pgsql-15/bin
export PATH
EOF

Uwaga! Zmiana ta wymaga przelogowania użytkownika postgres lub ręczne załadowanie zmiennych za pomocą:


. ~/.bash_profile

Stworzony na potrzeby szkolenia klaster nie będzie posiadał swojej usługi systemd, dlatego nie będzie mógł mieć włączonego autostartu. Planując w przyszłości konfigurację Patroni, nie potrzebujemy również autostartu, ponieważ zajmuje się tym proces Patroni. Jeżeli jednak chcielibyśmy stworzyć klaster z automatycznym startem po uruchomieniu systemu, moglibyśmy ręcznie stworzyć plik konfiguracyjny dla usługi w systemd i włączyć dla niego autostart.

Przykładowo:


[vagrant@centos ~]$  sudo vi /lib/systemd/system/postgresql-15.service

Do otwartego pliku wklejamy:


[Unit]
Description=PostgreSQL 15 database server
Documentation=https://www.postgresql.org/docs/15/static/
After=syslog.target
After=network-online.target

[Service]
Type=notify
User=postgres
Group=postgres
Environment=PGDATA=/data_pg/

# wylaczenie OOM (Out Of Memory) killera dla postgresa
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

ExecStart=/usr/pgsql-15/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT

# wylaczony timeout, zeby postgres mogl w spokoju wykonac crash recovery podczas startu
# inaczej linux moglby probowac restartowac usluge jezeli nie wystartowala w X sekund
TimeoutSec=0
TimeoutStartSec=0
TimeoutStopSec=1h

[Install]
WantedBy=multi-user.target


Sprawdzamy status usługi oraz poprawność pliku konfiguracyjnego (jeżeli polecenie zwraca wynik podobny do poniższego,oznacza, że jest poprawny):


[vagrant@centos ~]$  sudo systemctl status postgresql-15.service
○ postgresql-15.service - PostgreSQL 15 database server
Loaded: loaded (/lib/systemd/system/postgresql-15.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://www.postgresql.org/docs/15/static/

Włączamy autostart:


[vagrant@centos ~]$  sudo systemctl enable postgresql-15.service

Jeżeli wcześniej uruchomiliśmy postgresa za pomocą pg_ctl, próba sprawdzenia stanu usługi systemd dla postgresa, za pomocą systemctl status postgresql-15.service, zwróci informację, że postgres nie jest uruchomiony. Jak na powyższym przykładzie: "Active: inactive (dead)".

Aby zacząć korzystać z usługi, musimy zatrzymać postgresa uruchomionego za pomocą pg_ct, a następnie uruchomić usługę.


Sprawdzenie, czy jakiś postgres działa:


[vagrant@centos ~]$  ps -ef | grep postgres

Jeżeli działa, zatrzymujemy go za pomocą:


[vagrant@centos ~]$ sudo -i -u postgres /usr/pgsql-15/bin/pg_ctl -D /data_pg stop

Uruchomienie usługi:


[vagrant@centos ~]$  sudo systemctl start postgresql-15.service

Weryfikacja, czy usługa działa i czy autostart jest włączony, pogrubiony enabled:


[vagrant@centos ~]$  sudo systemctl status postgresql-15.service

● postgresql-15.service - PostgreSQL 15 database server
Loaded: loaded (/lib/systemd/system/postgresql-15.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-08-02 19:47:23 UTC; 8s ago
Docs: https://www.postgresql.org/docs/15/static/
Main PID: 4587 (postmaster)
Tasks: 6 (limit: 19037)
Memory: 19.3M
CGroup: /system.slice/postgresql-15.service
4587 /usr/pgsql-15/bin/postmaster -D /data_pg/


Od teraz uruchamiając, zatrzymując czy restartując klaster, nie powinniśmy używać pg_ctl, a właśnie skonfigurowanej usługi systemd.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...