postgresql
PostgreSQL Hochverfügbarkeit
Suche…
Replikation in PostgreSQL
Konfigurieren des Primärservers
Bedarf:
- Replikationsbenutzer für Replikationsaktivitäten
- Verzeichnis zum Speichern der WAL-Archive
Erstellen Sie einen Replikationsbenutzer
createuser -U postgres replication -P -c 5 --replication
+ option -P will prompt you for new password + option -c is for maximum connections. 5 connections are enough for replication + -replication will grant replication privileges to the user
Erstellen Sie ein Archivverzeichnis im Datenverzeichnis
mkdir $PGDATA/archive
Bearbeiten Sie die Datei pg_hba.conf
Dies ist die Host-Basisauthentifizierungsdatei, die die Einstellung für die Clientauthentifizierung enthält. Fügen Sie den folgenden Eintrag hinzu:
#hosttype database_name user_name hostname/IP method host replication replication <slave-IP>/32 md5
Bearbeiten Sie die postgresql.conf-Datei
Dies ist die Konfigurationsdatei von PostgreSQL.
wal_level = hot_standby
Dieser Parameter bestimmt das Verhalten des Slave-Servers.
`hot_standby` logs what is required to accept read only queries on slave server. `streaming` logs what is required to just apply the WAL's on slave. `archive` which logs what is required for archiving.
archive_mode=on
Dieser Parameter ermöglicht das Senden von WAL-Segmenten an den Archivspeicherort mit
archive_command
Parameter "archive_command
.archive_command = 'test ! -f /path/to/archivedir/%f && cp %p /path/to/archivedir/%f'
Im Wesentlichen
archive_command
Sie die WAL-Segmente in das Archivverzeichnis.wal_senders = 5
Dies ist die maximale Anzahl von WAL-wal_senders = 5
.Starten Sie nun den Primärserver neu.
Sichern des primay-Servers auf dem Slave-Server
Bevor Sie Änderungen am Server vornehmen, stoppen Sie den primären Server.
Wichtig: Starten Sie den Dienst nicht erneut, bis alle Konfigurations- und Sicherungsschritte abgeschlossen sind. Sie müssen den Standby-Server in einen Zustand versetzen, in dem er als Sicherungsserver bereit ist. Das bedeutet, dass alle Konfigurationseinstellungen vorhanden sein müssen und die Datenbanken bereits synchronisiert sein müssen. Andernfalls kann die Streaming-Replikation nicht gestartet werden
Führen Sie nun das Dienstprogramm pg_basebackup aus
pg_basebackup
Dienstprogrammpg_basebackup
kopiert die Daten aus dem Datenverzeichnis des primären Servers in das Slave-Datenverzeichnis.$ pg_basebackup -h <primary IP> -D /var/lib/postgresql/<version>/main -U replication -v -P --xlog-method=stream
-D: This is tells pg_basebackup where to the initial backup
-h: Specifies the system where to look for the primary server
-xlog-method=stream: This will force the pg_basebackup to open another connection and stream enough xlog while backup is running.
It also ensures that fresh backup can be started without failing back to using an archive.
Standby-Server konfigurieren
Um den Standby-Server zu konfigurieren, bearbeiten Sie postgresql.conf und erstellen eine neue Konfigurationsdatei mit dem Namen recovery.conf.
hot_standby = on
Dies gibt an, ob Sie während der Wiederherstellung Abfragen ausführen dürfen
Wiederherstellungsdatei.conf erstellen
standby_mode = on
Legen Sie die Verbindungszeichenfolge auf dem primären Server fest. Ersetzen Sie durch die externe IP-Adresse des Primärservers. Ersetzen Sie das Kennwort für den Benutzer mit dem Namen "Replikation"
`primary_conninfo = 'host = port = 5432 user = Kennwort für die Replikation ='
(Optional) Legen Sie den Speicherort der Triggerdatei fest:
trigger_file = '/tmp/postgresql.trigger.5432'
Der von Ihnen angegebene
trigger_file
ist der Ort, an dem Sie eine Datei hinzufügen können, wenn das System auf den Standby-Servertrigger_file
. Das Vorhandensein der Datei "löst" das Failover aus. Alternativ können Sie den Befehl pg_ctl promotet verwenden, um ein Failover auszulösen.
Starten Sie den Standby-Server
Sie haben jetzt alles eingerichtet und können den Standby-Server hochfahren
Zuschreibung
Dieser Artikel ist im Wesentlichen abgeleitet von PostgreSQL für Hochverfügbarkeit und Replikation mit Hot Standby , mit geringfügigen Änderungen in der Formatierung und Beispielen sowie einigen Texten. Die Quelle wurde unter der Creative Commons Public License 3.0 veröffentlicht , die hier gepflegt wird.