So konfigurieren Sie Postgresql 12 Streaming -Replikation in CentOS 8

So konfigurieren Sie Postgresql 12 Streaming -Replikation in CentOS 8

PostgreSQL Die Datenbank unterstützt mehrere Replikationslösungen, um hohe verfügbare, skalierbare, fehlertolerante Anwendungen aufzubauen, von denen eine davon ist Schreibprotokoll (Wal) Versand. Diese Lösung ermöglicht es, dass ein Standby-Server mithilfe der Datei-basierten Protokollversand- oder Streaming-Replikation oder nach Möglichkeit einer Kombination beider Ansätze implementiert wird.

Mit Streaming -Replikation ist ein Standby -Datenbankserver (Replication Slave) -Server so konfiguriert Wal Aufzeichnungen zum Standby, sobald sie erzeugt werden, ohne auf die zu warten Wal Datei zu füllen.

Standardmäßig ist die Streaming -Replikation asynchron, wenn Daten auf den Standby -Server geschrieben werden, nachdem eine Transaktion auf dem Primärserver festgelegt wurde. Dies bedeutet, dass es eine geringe Verzögerung zwischen der Verpflichtung einer Transaktion auf dem Master -Server und den Änderungen auf dem Standby -Server gibt. Ein Nachteil dieses Ansatzes besteht darin, dass der Master -Server nicht repliziert werden kann, wenn der Master -Server abstürzt, alle nicht übereinstimmenden Transaktionen repliziert werden können, was zu Datenverlust führen kann.

Diese Anleitung zeigt, wie man a einrichtet PostgreSQL 12 Master-Standby-Streaming-Replikation auf Centos 8. Wir werden verwenden "Replikationsschlitze”Für den Standby als Lösung, um zu vermeiden, dass der Master -Server alt recycelt Wal Segmente vor dem Standby haben sie erhalten.

Beachten Sie, dass Replikationsschlitze im Vergleich zu anderen Methoden nur die Anzahl der bekannten Segmente beibehalten.

Testumgebung:

In dieser Anleitung wird davon ausgegangen Ssh (verwenden Sudo Befehl bei Bedarf, wenn Sie als normaler Benutzer mit Verwaltungsrechten verbunden sind):

PostgreSQL Master Database Server: 10.20.20.9 PostgreSQL Standby -Datenbankserver: 10.20.20.8 

Beide Datenbankserver müssen haben PostgreSQL 12 Ansonsten siehe: So installieren Sie Postgresql und Pgadmin in CentOS 8.

Notiz: PostgreSQL 12 Kommt mit wesentlichen Änderungen an der Replikationsimplikation und -konfiguration wie dem Austausch von Erholung.Conf und die Umwandlung von Erholung.Conf Parameter zu normalen PostgreSQL -Konfigurationsparametern, so.

Schritt 1: Konfigurieren des PostgreSQL -Master-/Primärdatenbankservers

1. Wechseln Sie auf dem Master -Server zum Postgres -Systemkonto und konfigurieren.

In diesem Fall werden wir verwenden * Das heißt alles.

# su - postgres $ psql -c "Alter System set listen_adresses zu '*';" 

Der System -System set Der SQL -Befehl ist eine leistungsstarke Funktion, um die Konfigurationsparameter eines Servers direkt mit einer SQL -Abfrage zu ändern. Die Konfigurationen werden in der gespeichert PostgreSQL.Conf.Auto Datei am Root des Datenordners (e.G /var/lib/pgsql/12/data/) und zusätzliche Ergänzungen zu den gespeicherten in lesen PostgreSQL.Conf. Konfigurationen in ersteren haben jedoch Vorrang vor den späteren und anderen verwandten Dateien.

Konfigurieren Sie IP -Adressen auf PostgreSQL Master

2. Erstellen Sie dann eine Replikationsrolle, die für Verbindungen vom Standby -Server zum Master -Server verwendet wird, indem Sie die CreateUser Programm. Im folgenden Befehl die -P Flag -Aufforderungen für ein Passwort für die neue Rolle und -e Stellt die Befehle, die createUser generiert und an den Datenbankserver sendet.

# Su -Postgres $ createUser -Replikation -p -e Replikator $ Exit 
Erstellen Sie den Replikationsbenutzer auf PGMaster

3. Geben Sie dann den folgenden Eintrag am Ende des /var/lib/pgsql/12/data/pg_hba.Conf Client -Authentifizierungskonfigurationsdatei mit dem Datenbankfeld für die Replikation festgelegt, wie im Screenshot gezeigt.

Replikation Replikator Replikation 10.20.20.8/24 MD5 
Replikationsauthentifizierung konfigurieren

4. Starten Sie jetzt die neu Postgres12 Dienst verwendet den folgenden SystemCTL -Befehl, um die Änderungen anzuwenden.

# SystemCTL Neustart PostgreSQL-12.Service 

5. Als nächstes, wenn Sie das haben Firewall Wenn Sie ausgeführt werden, müssen Sie den PostgreSQL -Dienst in der Firewalld -Konfiguration hinzufügen, damit der Standby -Server Anforderungen zum Master zuzulassen.

# Firewall-cmd --add-service = postgresql --permanent # Firewall-cmd-Reload 

Schritt 2: Erstellen einer Basissicherung, um den Standby -Server zu starten

6. Als nächstes müssen Sie eine Basissicherung des Master -Servers vom Standby -Server aus erstellen. Dies hilft, den Standby -Server zu starten. Sie müssen den PostgreSQL 12 -Dienst auf dem Standby -Server einstellen und zum Postgres -Benutzerkonto wechseln und das Datenverzeichnis (das Datenverzeichnis "sichern (/var/lib/pgsql/12/data/) und löschen Sie dann alles unter ihm wie gezeigt, bevor Sie die Basissicherung einnehmen.

# 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. Dann benutze die pg_baseBackup Tool, um die Basissicherung mit dem richtigen Eigentum zu übernehmen (der Datenbanksystem Benutzer I.e Postgres, innerhalb der Postgres Benutzerkonto) und mit den richtigen Berechtigungen.

Im folgenden Befehl die Option:

  • -H - Gibt den Host an, der der Master -Server ist.
  • -D - Gibt das Datenverzeichnis an.
  • -U - Gibt den Verbindungsbenutzer an.
  • -P - Ermöglicht die Fortschrittsberichterstattung.
  • -v - Aktiviert der ausführliche Modus.
  • -R - Aktiviert die Erstellung der Wiederherstellungskonfiguration: Erstellt a stehen zu.Signal Datei- und Anhängen von Verbindungseinstellungen an PostgreSQL.Auto.Conf unter dem Datenverzeichnis.
  • -X - Wird verwendet, um die erforderlichen Schreib-Ahead-Protokolldateien (WAL-Dateien) in die Sicherung aufzunehmen. Ein Wert von Stream bedeutet, den Wal zu streamen, während die Sicherung erstellt wird.
  • -C - Ermöglicht die Erstellung eines Replikationsschlitzes, der von der Option -S -Option benannt wird, bevor Sie die Sicherung starten.
  • -S - Gibt den Replikationsschlitznamen an.
$ pg_baseBackup -h 10.20.20.9 -d/var/lib/pgsql/12/data -U Replikator -p -v -r -x Stream -c -S PGStandby1 $ Exit 
Basissicherung des Master -Servers

8. Wenn der Sicherungsprozess abgeschlossen ist, sollte das neue Datenverzeichnis auf dem Standby -Server im Screenshot so aussehen. A stehen zu.Signal wird erstellt und die Verbindungseinstellungen angehängt werden PostgreSQL.Auto.Conf. Sie können seinen Inhalt mit dem Befehl LS auflisten.

# ls -l/var/lib/pgsql/12/data/ 
Überprüfen Sie das Sicherungsdatenverzeichnis

Ein Replikationssklave läuft in “Hot-Standby”Modus, wenn der Hot-Standby Der Parameter wird auf ein festgelegt (den Standardwert) in PostgreSQL.Conf Und da ist ein stehen zu.Signal Datei im Datenverzeichnis vorhanden.

9. Jetzt wieder auf dem Master -Server sollten Sie in der Lage sein, den Replikationssteckplatz aufgerufen zu sehen PGStandby1 Wenn Sie die öffnen pg_replication_slots wie folgt ansehen.

# su - postgres $ psql -c "Select * aus pg_replication_slots;" $ Exit 
Replikationsschlitz erstellen

10. Um die in der angehängten Verbindungseinstellungen anzuzeigen PostgreSQL.Auto.Conf Datei, verwenden Sie den CAT -Befehl.

# cat/var/lib/pgsql/12/data/postgresql.Auto.Conf 
Verbindungseinstellungen anzeigen

11. Beginnen Sie nun normale Datenbankvorgänge auf dem Standby -Server, indem Sie den PostgreSQL -Dienst wie folgt starten.

# SystemCTL Start PostgreSQL-12 

Schritt 3: Testen der Replikation von Postgresql -Streaming

12. Sobald eine Verbindung zwischen dem Meister und dem Standby erfolgreich hergestellt wurde, werden Sie a sehen Wal Der Empfängerprozess auf dem Standby -Server mit einem Status des Streamings können Sie dies mit dem überprüfen PG_STAT_WAL_RECEIVER Sicht.

$ psql -c "\ x" -c "Wählen Sie * aus pg_stat_wal_receiver;" 
Überprüfen Sie den WAL -Empfängerprozess

und eine entsprechende Wal Absenderprozess auf dem Master/Primärserver mit einem Streaming -Status und a sync_state Von Async können Sie diese pg_stat_replication pg_stat_replicationsansicht überprüfen.

$ psql -c "\ x" -c "Wählen Sie * aus pg_stat_replication;" 
Überprüfen Sie den Wal -Absenderprozess im Master

Aus dem obigen Screenshot ist die Streaming -Replikation asynchron. Im nächsten Abschnitt werden wir demonstrieren, wie sie optional die synchrone Replikation aktivieren können.

13. Testen Sie nun, ob die Replikation gut funktioniert, indem Sie eine Testdatenbank auf dem Master -Server erstellen, und überprüfen Sie, ob sie auf dem Standby -Server vorhanden ist.
[Master] postgres =# Datenbank Tecmint erstellen;
[Standby] postgres =# \ l

Testen Sie die Streaming -Replikation

Optional: Aktivieren der synchronen Replikation

14. Die synchronische Replikation bietet die Möglichkeit, eine Transaktion (oder schreiben Daten) in die primäre Datenbank und das Standby/Replika gleichzeitig zu begehen. Es bestätigt nur, dass eine Transaktion erfolgreich ist, wenn alle durch die Transaktion vorgenommenen Änderungen auf einen oder mehrere synchrone Standby -Server übertragen wurden.

Um synchrone Replikation zu aktivieren, die synchronous_commit muss auch auf ON eingestellt werden (was der Standardwert ist, daher keine Änderung erforderlich), und Sie müssen auch die festlegen synchronous_standby_names Parameter zu einem nicht leeren Wert. Für diesen Leitfaden werden wir es allen einstellen.

$ psql -c "System setzt synchronous_standby_names zu '*';" 
Setzen Sie synchronisierte Standby -Namen in Master

15. Laden Sie dann den PostgreSQL 12 -Dienst neu, um die neuen Änderungen anzuwenden.

# SystemCtl Reload postgresql-12.Service 

16. Jetzt, wenn Sie die abfragen Wal Der Absenderprozess auf dem primären Server sollte noch einmal einen Status des Streamings zeigen und a sync_state von Synchronisation.

$ psql -c "\ x" -c "Wählen Sie * aus pg_stat_replication;" 
Überprüfen Sie den Wal -Absenderprozess im Master

Wir sind am Ende dieses Leitfadens gekommen. Wir haben gezeigt, wie man eingerichtet ist PostgreSQL 12 Master-Standby-Datenbank-Streaming-Replikation in Centos 8. Wir haben auch abgedeckt.

Es gibt viele Replikationen und Sie können jederzeit eine Lösung auswählen, die Ihrer IT-Umgebung und/oder anwendungsspezifischen Anforderungen entspricht. Weitere Informationen finden Sie in der PostgreSQL 12-Dokumentation.