Jak skonfigurować replikację przesyłania strumieniowego PostgreSQL 12 w Centos 8

Jak skonfigurować replikację przesyłania strumieniowego PostgreSQL 12 w Centos 8

PostgreSQL Baza danych obsługuje kilka rozwiązań replikacji w celu budowania aplikacji o wysokiej dostępności, skalowalnych, odpornych na awarie Dziennik pisania (Wal) Wysyłka. To rozwiązanie pozwala na wdrożenie serwera rezerwowego za pomocą wysyłki dziennika opartego na plikach lub replikacji przesyłania strumieniowego lub tam, gdzie to możliwe, kombinacja obu podejść.

Wraz z replikacją przesyłania strumieniowego serwer bazy danych gotowości (slave replikacji) jest skonfigurowany do łączenia się z serwerem głównym/podstawowym, który przesyła się Wal rekordy w trybie gotowości, gdy są generowane, nie czekając na Wal plik do wypełnienia.

Domyślnie replikacja przesyłania strumieniowego jest asynchroniczna, gdy dane są zapisywane na serwerze rezerwowe po transakcji na serwerze podstawowym. Oznacza to, że istnieje niewielkie opóźnienie między popełnieniem transakcji na serwerze głównym a zmianami stającymi się widocznymi na serwerze gotowości. Jedną z wad tego podejścia jest to, że w przypadku awarii serwera głównego wszelkie niezaangażowane transakcje mogą nie zostać powtórzone, co może spowodować utratę danych.

Ten przewodnik pokazuje, jak skonfigurować PostgreSQL 12 Master-Standby Streaming Replikacja Centos 8. Użyjemy "Gniazda replikacji”W przypadku rezerwatu jako rozwiązania, aby uniknąć serwera głównego z recyklingu starego Wal segmenty przed otrzymaniem gotowości.

Zauważ, że w porównaniu z innymi metodami szczeliny replikacji zachowują tylko liczbę segmentów, o których wiadomo, że są potrzebne.

Środowisko testowe:

Ten przewodnik zakłada, że ​​podłączasz się do swoich serwerów Baza danych Master i Ssh (używać Sudo W razie potrzeby polecenie, jeśli jesteś podłączony jako normalny użytkownik z prawami administracyjnymi):

PostgreSQL Master Batabase Server: 10.20.20.9 PostgreSQL Standby Batabase Server: 10.20.20.8 

Oba serwery bazy danych muszą mieć PostgreSQL 12 Zainstalowane, w przeciwnym razie patrz: Jak zainstalować PostgreSQL i PGADMIN w Centos 8.

Notatka: PostgreSQL 12 W zestawie poważne zmiany w implementacji i konfiguracji replikacji, takie jak wymiana powrót do zdrowia.conf i konwersja powrót do zdrowia.conf Parametry do normalnych parametrów konfiguracji PostgreSQL, co znacznie ułatwia skonfigurowanie replikacji klastra.

Krok 1: Konfigurowanie serwera PostgreSQL Master/Primary Batabase

1. Na serwerze głównym przełącz na konto Postgres System i skonfiguruj adres IP (ES), na którym serwer główny będzie słuchać połączeń od klientów.

W takim przypadku będziemy używać * znaczy wszystko.

# su - Postgres $ psql -c „alter System Set Słuchaj_addresses na„*”;” 

Zestaw systemu Polecenie SQL jest potężną funkcją do zmiany parametrów konfiguracyjnych serwera, bezpośrednio z zapytaniem SQL. Konfiguracje są zapisywane w PostgreSQL.conf.automatyczny plik znajdujący się w folderze danych (e.G /var/lib/pgsql/12/data/) i czytaj dodatek do przechowywanych w PostgreSQL.conf. Ale konfiguracje w tym pierwszym ma pierwszeństwo przed wynikami w późniejszych i innych powiązanych plikach.

Skonfiguruj adresy IP na PostgreSQL Master

2. Następnie utwórz rolę replikacji, która będzie używana do połączeń z serwera rezerwowego do serwera głównego, używając Stwórz użytkownika program. W następującym poleceniu, -P flaga monit o hasło do nowej roli i -mi odzwierciedla polecenia, które Createuser generuje i wysyła na serwer bazy danych.

# su -Postgres $ createuser -replikacja -p -e replikator $ exit 
Utwórz użytkownika replikacji w PGMaster

3. Następnie wprowadź następujący wpis na końcu /var/lib/pgsql/12/data/pg_hba.conf Plik konfiguracji uwierzytelniania klienta z polem bazy danych ustawiony na replikację, jak pokazano na zrzucie ekranu.

Replikacja replikacji hosta 10.20.20.8/24 MD5 
Skonfiguruj uwierzytelnianie replikacji

4. Teraz uruchom ponownie Postgres12 Usługa za pomocą następującego polecenia SystemCtl do zastosowania zmian.

# Systemctl restart PostgreSQL-12.praca 

5. Następnie, jeśli masz Firewalld Usługa uruchomiona, musisz dodać usługę PostgreSQL w konfiguracji zapory ogniowej, aby umożliwić żądania z serwera rezerwowego do głównego.

# firewall-cmd --add-service = postgresql --PerManent # firewall-cmd--reload 

Krok 2: Wykonanie podstawowego kopii zapasowej w celu rozbicia serwera rezerwowego

6. Następnie musisz wykonać podstawową kopię zapasową serwera głównego z serwera rezerwowego; Pomaga to rozebrać serwer rezerwowy. Musisz zatrzymać usługę PostgreSQL 12 na serwerze rezerwowym, przełączyć na konto użytkownika Postgres, wykonać kopię zapasową katalogu danych (/var/lib/pgsql/12/data/), a następnie usuń wszystko pod nim, jak pokazano, przed wykonaniem podstawowej kopii zapasowej.

# Systemctl Stop PostgreSQL-12.Service # Su -Postgres $ cp -r/var/lib/pgsql/12/data/var/lib/pgsql/12/data_orig $ rm -rf/var/lib/pgsql/12/Data/* 

7. Następnie użyj PG_BASEBAKUP narzędzie do wykonania podstawowej kopii zapasowej z odpowiednią własnością (użytkownik systemu bazy danych.mi Postgres, W obrębie Postgres konto użytkownika) i z odpowiednimi uprawnieniami.

W poniższym poleceniu opcja:

  • -H - Określa hosta, który jest serwerem głównym.
  • -D - Określa katalog danych.
  • -U - Określa użytkownika połączenia.
  • -P - umożliwia raportowanie postępów.
  • -v - Włącza tryb werbowy.
  • -R - umożliwia tworzenie konfiguracji odzyskiwania: tworzy czekaj.sygnał Plik i dołącz ustawienia połączenia do PostgreSQL.automatyczny.conf w katalogu danych.
  • -X - Używane do włączenia wymaganych plików dziennika zapisu (pliki Wal) do kopii zapasowej. Wartość strumienia oznacza strumieniowe strumieniowo Wal podczas tworzenia kopii zapasowej.
  • -C - umożliwia tworzenie gniazda replikacji wymienionej przez opcję -S przed rozpoczęciem kopii zapasowej.
  • -S - Określa nazwę szczeliny replikacji.
$ PG_BASEBAKUP -H 10.20.20.9 -d/var/lib/pgsql/12/data -u replikator -p -v -r -x strumień -c -s pgstandby1 $ exit 
Baza kopii zapasowej serwera głównego

8. Po zakończeniu procesu kopii zapasowej nowy katalog danych na serwerze rezerwowym powinien wyglądać tak na zrzucie ekranu. A czekaj.sygnał jest tworzony, a ustawienia połączenia są dołączane do PostgreSQL.automatyczny.conf. Możesz wymienić jego zawartość za pomocą polecenia LS.

# ls -l/var/lib/pgsql/12/data/ 
Sprawdź katalog danych kopii zapasowej

Niewolnik replikacji będzie działał „Gorący tryb gotowości”Tryb, jeśli Hot_standby parametr jest ustawiony na (wartość domyślna) w PostgreSQL.conf I jest czekaj.sygnał plik obecny w katalogu danych.

9. Teraz z powrotem na serwerze głównym, powinieneś być w stanie zobaczyć, PGSTandby1 Kiedy otworzysz PG_REPLICANT_SLOTS Zobacz następująco.

# Su - Postgres $ psql -c "Wybierz * z pg_replication_slots;" $ exit 
Utwórz szczelinę replikacji

10. Aby wyświetlić ustawienia połączenia dołączone do PostgreSQL.automatyczny.conf Plik, użyj polecenia CAT.

# cat/var/lib/pgsql/12/data/postgresql.automatyczny.conf 
Wyświetl ustawienia połączenia

11. Teraz rozpoczynają normalne operacje bazy danych na serwerze rezerwowym, uruchamiając usługę PostgreSQL w następujący sposób.

# Systemctl Start PostgreSQL-12 

Krok 3: Testowanie replikacji przesyłania strumieniowego PostgreSQL

12. Po pomyślnym nawiązaniu połączenia między mistrzem a gotowością zobaczysz Wal proces odbiornika na serwerze rezerwowym ze statusem przesyłania strumieniowego, możesz to sprawdzić za pomocą PG_STAT_wal_receiver pogląd.

$ psql -c "\ x" -c "wybierz * z pg_stat_wal_receiver;" 
Sprawdź proces odbiornika Wal

i odpowiadający Wal proces nadawcy na serwerze głównym/podstawowym z stanem streamingu i a sync_state async, możesz sprawdzić ten widok pg_stat_replikacji pg_stat_replica.

$ psql -c "\ x" -c "wybierz * z pg_stat_replikacji;" 
Sprawdź proces nadawcy WA w Master

Z powyższego zrzutu ekranu replikacja przesyłania strumieniowego jest asynchroniczna. W następnej sekcji zademonstrujemy, jak opcjonalnie włączyć replikację synchroniczną.

13. Teraz sprawdź, czy replika działa dobrze, tworząc testową bazę danych na serwerze głównym i sprawdź, czy istnieje na serwerze gotowości.
[master] postgres =# Utwórz bazę danych TecMint;
[Standby] Postgres =# \ l

Replikacja przesyłania strumieniowego testu

Opcjonalnie: Włączanie synchronicznej replikacji

14. Synchroniczna replikacja oferuje możliwość popełnienia transakcji (lub zapisu danych) z podstawową bazą danych i rezerwatu/repliki jednocześnie. Potwierdza to tylko, że transakcja jest skuteczna, gdy wszystkie zmiany wprowadzone przez transakcję zostały przeniesione na jeden lub więcej synchronicznych serwerów rezerwowych.

Aby włączyć replikację synchroniczną, Synchronious_commit Musi być również ustawiony na ON (która jest wartością domyślną, a zatem nie ma potrzeby żadnej zmiany), a także musisz ustawić Synchronious_standby_names parametr do wartości nie pustej. W przypadku tego przewodnika ustawimy go na wszystkich.

$ PSQL -C „Zmień zestaw systemu Synchronious_standby_names na„*”;” 
Ustaw synchronizację nazw rezerwowych w Master

15. Następnie ponownie załaduj usługę PostgreSQL 12, aby zastosować nowe zmiany.

# SystemCtl RELOOD PostgreSQL-12.praca 

16. Teraz, kiedy zapytasz o Wal Proces nadawcy na serwerze głównym, powinien pokazać stan streamingu i sync_state z synchronizacja.

$ psql -c "\ x" -c "wybierz * z pg_stat_replikacji;" 
Sprawdź proces nadawcy WA w Master

Doszliśmy do końca tego przewodnika. Pokazaliśmy, jak skonfigurować PostgreSQL 12 Master-Standby Baza danych replikacja przesyłania strumieniowego Centos 8. Omówiliśmy również, jak włączyć replikację synchroniczną w klastrze bazy danych PostgreSQL.

Istnieje wiele zastosowań replikacji i zawsze możesz wybrać rozwiązanie, które spełnia Twoje środowisko IT i/lub wymagania dotyczące aplikacji. Aby uzyskać więcej szczegółów, przejdź do serwerów rezerwowych w dokumentacji PostgreSQL 12.